繁体   English   中英

将HTML表单提交到PHP文件

[英]Submitting HTML form to PHP file

我在远程服务器上创建了两个文件。 一种是html形式,要求输入一些字段,另一种是php文件,它将获取所有数据并插入数据库中。

为此从单击提交按钮的html文件中,我正在调用php文件,但是我认为该文件没有得到执行,因为当我再次单击提交时,它会重新加载相同的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>

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()); 
}

?>

我也尝试过这种方式:

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

但是没有任何效果。 怎么了 我是网络开发的初学者,有人可以帮忙吗? 谢谢..

编辑:

  $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));

我尝试使用pdo语句,但收到此错误:致命错误:在第12行的/var/www/html/uploadQuestion.php中找不到类'Database'

编辑2:

我正在尝试将一个文件上传到服务器上,并希望也将其保存在数据库中,因此,我为此创建了2个文件,一个是index.php,另一个是uploadFile.php。

正如您现在所显示的,我为此使用了pdo,但是当我再次单击上载图像时,同一页面正在加载。

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.';
}


}
    ?>

请帮助..谢谢

首先修复您的表单,不能将type=""命名为input可以在此处检查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>

然后你的php代码

<?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()); 
}

?>

phpmysqli

<?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)); 
}

?>

或带有准备好的语句的php

<?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.';
}

?>

从代码更改为此

 <!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> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM