He creado dos archivos en el servidor remoto. Uno es un formulario html que solicita ingresar algunos campos y otro es un archivo php que obtendrá todos los datos e insertará en la base de datos.

Para esto, desde el archivo html al hacer clic en el botón Enviar, estoy llamando al archivo php, pero el archivo no se está ejecutando, creo, porque cuando hago clic en Enviar nuevamente, vuelve a cargar la misma página html.

Html:

   <!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>MCQ Questions</title>
</head>

<body>

<form method="post" >

<p> Enter the question :</p> <input name="question" type="input"> <br><br>

<p> Enter options :</p>
Enter option 1 : <input name="opt1" type="input"> <br><br>
Enter option 2 : <input name="opt2" type="input"> <br><br>
Enter option 3 : <input name="opt3" type="input"> <br><br>
Enter option 4 : <input name="opt4" type="input"> <br><br>

<p> Enter correct answer :</p>

<input name="ans" type="input"> <br><br>

<input type="submit" value = "Submit" onClick = "uploadQuestion.php">

</form>
</body>
</html>

Archivo php:

    <?php

$question=$_POST['question'];
$option1=$_POST['opt1'];
$option2=$_POST['opt2'];
$option3=$_POST['opt3'];
$option4=$_POST['opt4'];
$ans=$_POST['ans'];


$db_server = mysql_connect("address","username","pass"); 
if(!$db_server) { 
   die("Database connection failed: " . mysql_error()); 
}else{
   $db_select = mysql_select_db("mlm",$db_server); 
   if (!$db_select) { 
       die("Database selection failed:: " . mysql_error()); 
   } 
}

$sql = "INSERT INTO questions (question,answer_a,answer_b,answer_c,answer_d,answer) VALUES ('$question','$option1',$option2,$option3,$option4,$ans)";

if (!mysql_query($sql)) {
    die('Error: ' . mysql_error()); 
}

?>

También intenté de esta manera:

<input type="submit" value = "Submit" onClick = "http://address/uploadQuestion.php">

Pero nada está funcionando. ¿Qué va mal aquí? Soy un principiante en desarrollo web, ¿alguien puede ayudarme por favor? Gracias..

EDITAR:

  $database = new Database('addredd','username','pass','handbook');

  $dbConnection = $database->getDB();

  $stmt = $dbConnection->prepare("insert into questions(question,answer_a,answer_b,answer_c,answer_d,answer) values(?,?,?,?,?,?)");
  $stmt->execute(array($question,$option1,$option2,$option3,$option4,$ans));

Traté de usar la instrucción pdo pero recibí este error: Error fatal: no se encontró la clase 'Base de datos' en /var/www/html/uploadQuestion.php en la línea 12

EDIT2:

Estoy tratando de cargar un archivo en el servidor y también quiero guardarlo en la base de datos, por lo que para esto he creado 2 archivos, uno es index.php y otro es uploadFile.php.

Como mostraste ahora, usé pdo para esto, pero cuando hago clic en cargar imagen nuevamente, la misma página se está cargando.

Index.php

    <form action="index.php" method="post" enctype="multipart/form-data">
    <p> Select image to upload:</p>
    <input name = "file" type="file" id="fileToUpload"><br><br>
    Enter chapter name :
    <input name = "chapterName" type = "text"><br><br>
    <input type="submit" value = "Upload Image">
    </form>


<?php

if (isset($_FILES['file']['tmp_name']))
{

    $ch = curl_init();

    $cfile = new CURLFile($_FILES['file']['tmp_name'],$_FILES['file']['type'],$_FILES['file']['name']);

    $data = array("myfile" => $cfile);

    curl_setopt($ch, CURLOPT_URL, "http://host/NewProject/uploadFile.php");
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOTP_POSTFIELDS, $data);

    $response = curl_exec($ch);

    if($response == true)
    {
        echo "File posted";

    }
    else{

        echo "Error: " . curl_error($ch);
    }

}

?>

UploadFile.php

    <?php
ini_set('display_errors', 1);

if(isset($_FILES['myfile']['tmp_name']))
{
    $path = "files/" . $_FILES['myfile']['name'];

    move_uploaded_file($_FILES['myfile']['tmp_name'], $path);

    $chapterName=$_POST['chapterName']; 

    $dbh = new PDO('mysql:host=host;dbname=database_name','username', 'password');


$stmt = $dbh->prepare("INSERT INTO chapters (title,file) VALUES (?, ?)");
$stmt->execute(array($chapterName,$path));

if ($dbh->lastInsertId())
{
    echo 'File upploaded.';
}
else
{
    echo 'File could not upload.';
}


}
    ?>

Por favor ayuda ... Gracias ...

0
Sid 18 mar. 2017 a las 15:02

2 respuestas

La mejor respuesta

Primero repare su formulario, type="" no se puede nombrar input puede verificar aquí https://www.w3schools.com/tags/att_input_type.asp

<!doctype html>
<html>

<head>
  <meta charset="utf-8">
  <title>MCQ Questions</title>
</head>

<body>

  <form action="uploadQuestion.php" method="post" enctype="multipart/form-data">

    <p> Enter the question :</p> <input name="question" type="text"> <br><br>

    <p> Enter options :</p>
    Enter option 1 : <input name="opt1" type="text"> <br><br>
    Enter option 2 : <input name="opt2" type="text"> <br><br>
    Enter option 3 : <input name="opt3" type="text"> <br><br>
    Enter option 4 : <input name="opt4" type="text"> <br><br>

    <p> Enter correct answer :</p>

    <input name="ans" type="text"> <br><br>

    <input type="submit" value="Submit">

  </form>
</body>

</html>

Entonces el tuyo php código

<?php

// mysql connection
$db_server = mysql_connect("address","username","pass"); 

// check for mysql connection
if(!$db_server)
{ 
    die("Database connection failed: " . mysql_error()); 
}
else
{
    // check if database exists
    $db_select = mysql_select_db("mlm",$db_server); 

    if (!$db_select)
    { 
        die("Database selection failed:: " . mysql_error()); 
    } 
}

// escape post variables
$question = mysql_real_escape_string($_POST['question']);
$option1 = mysql_real_escape_string($_POST['opt1']);
$option2 = mysql_real_escape_string($_POST['opt2']);
$option3 = mysql_real_escape_string($_POST['opt3']);
$option4 = mysql_real_escape_string($_POST['opt4']);
$ans = mysql_real_escape_string($_POST['ans']);




// make query
$sql = "INSERT INTO questions (question,answer_a,answer_b,answer_c,answer_d,answer) VALUES ('$question', '$option1', '$option2', '$option3', '$option4', '$ans')";

// check if query runs    
if (!mysql_query($sql)) {
    die('Error: ' . mysql_error()); 
}

?>

O php con mysqli

<?php

// host, username, password, database name
$db_server = mysqli_connect("address", "username", "pass", "mlm"); 

// check for connection
if(!$db_server)
{ 
   die("Database connection failed: " . mysqli_error($db_server)); 
}

// escape post variables
$question = mysqli_real_escape_string($db_server, $_POST['question']);
$option1 = mysqli_real_escape_string($db_server, $_POST['opt1']);
$option2 = mysqli_real_escape_string($db_server, $_POST['opt2']);
$option3 = mysqli_real_escape_string($db_server, $_POST['opt3']);
$option4 = mysqli_real_escape_string($db_server, $_POST['opt4']);
$ans = mysqli_real_escape_string($db_server, $_POST['ans']);

// make query
$sql = "INSERT INTO questions (question,answer_a,answer_b,answer_c,answer_d,answer) VALUES ('$question', '$option1', '$option2', '$option3', '$option4', '$ans')";

// check if query runs
if (!mysqli_query($db_server, $sql))
{
    die('Error: ' . mysqli_error($db_server)); 
}

?>

O php con declaraciones preparadas

<?php

// mysql connection
$dbh = new PDO('mysql:host=adress;dbname=database_name', 'username', 'password');

// escape post variables
$question = $_POST['question'];
$option1 = $_POST['opt1'];
$option2 = $_POST['opt2'];
$option3 = $_POST['opt3'];
$option4 = $_POST['opt4'];
$ans = $_POST['ans'];


$stmt = $dbh->prepare("INSERT INTO questions (question,answer_a,answer_b,answer_c,answer_d,answer) VALUES ( ?, ?, ?, ?, ?, ?)");
$stmt->execute(array($question, $option1, $option2, $option3, $option4, $ans));

if ($dbh->lastInsertId())
{
    echo 'Sucess.';
}
else
{
    echo 'Fail.';
}

?>
1
Mario 18 mar. 2017 a las 12:39

Cambia tu código de a este

<!doctype html>
<html>

<head>
  <meta charset="utf-8">
  <title>MCQ Questions</title>
</head>

<body>

  <form action="uploadQuestion.php" method="post" enctype="multipart/form-data">

    <p> Enter the question :</p> <input name="question" type="input"> <br><br>

    <p> Enter options :</p>
    Enter option 1 : <input name="opt1" type="input"> <br><br> Enter option 2 : <input name="opt2" type="input"> <br><br> Enter option 3 : <input name="opt3" type="input"> <br><br> Enter option 4 : <input name="opt4" type="input"> <br><br>

    <p> Enter correct answer :</p>

    <input name="ans" type="input"> <br><br>

    <input type="submit" value="Submit">

  </form>
</body>

</html>
-2
Praveen Premaratne 18 mar. 2017 a las 12:10