1

hcpというデータベースに、列diidDiseasename、およびdescrptionを持つテーブルdiseaseがあります。

HTML フォームから単純に入力したい。これまでの私のコードは次のとおりです。

<html><head><title>Disease Inssert</title></head>
<body>
<form action="diseaselist.php" method="post">
Disease Name : <input type="text" name="txtDiseaseName" id="textbox" /><br />
Description : <input type="text" name="txtDiseaseDescription" id="textbox" /><br />
<input type="submit" name="btnDiseaseSubmit" id="button"/>

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

<?php
mysql_connect("localhost","root","");
mysql_select_db("hcp");

if($_REQUEST['btnDiseaseSubmit'])
{
$queryDiseaseInsert="INSERT INTO  disease (`diseasename` ,`description`) VALUES ('".$_REQUEST['txtDiseaseName']."', '".$_REQUEST['txtDiseaseDescription']."');";

$resultDI=mysql_query($queryDiseaseInsert) or die(mysql_error());
}
?>

送信後、ページは にリダイレクトされますdiseaselist.phpが、データはデータベースに保存されません。

誰かが私のクエリに何か問題があるのを見ることができますか?

4

3 に答える 3

2

スクリプトにはいくつかの問題があります。まず第一に、データを挿入する前にデータをチェックしていないということです。HTML フォームの典型的なフローは次のようになります。

  1. フォームを表示します。ユーザーがデータを入力して送信します。
  2. データはサーバーに送信され、そこで必要なすべてのデータをチェックします。表示されていない場合、ユーザーは (通常) エラーのあるフォームを受け取ります。
  3. これは、ユーザーが完全に有効なフォームを提出するか提出するまで続きます。

上記のことを言ったので、ここにあなたのフォームで:

<?php

  $mysql = mysql_connect("localhost","root","");   // assign to variable
  mysql_select_db("hcp", $mysql);

  // Get into the habit of using $_POST and $_GET instead of $_REQUEST
  if(isset($_POST['btnDiseaseSubmit']) && !empty($_POST['btnDiseaseSubmit'])) 
  {  // Form was completely submitted
    $sql = "INSERT INTO  disease (`diseasename` ,`description`) VALUES ('".$_POST['txtDiseaseName']."', '".$_POST['txtDiseaseDescription']."');";  // No need for massive variable names

    $resultDI = mysql_query($sql, $mysql) or die(mysql_error());

    mysql_close($mysql);    // Close database connection - cleans things up
    echo "Successfolly ran database query!";
  } else {  // Form was not completely submitted, if at all - display form.
?>
<html>
  <head><title>Disease Inssert</title></head>
  <body>
    <!-- If action is not present, the form will submit to the current page. ie. If current page is a.php and we leave out action, the form will submit to a.php! -->
    <form method="post">
      Disease Name : <input type="text" name="txtDiseaseName" id="textbox" /><br />
      Description : <input type="text" name="txtDiseaseDescription" id="textbox" /><br />
      <input type="submit" name="btnDiseaseSubmit" id="button"/>
    </form>
  </body>
</html>
<?php
  }
?>

それはあなたにとってうまくいくはずです。コード内のコメントに注意して、私が何をしたのか、なぜそれをしたのかがわかるようにしてください。他の例については、Google で検索してください。それはすぐにあなたに明らかになるでしょう。

于 2012-04-24T06:33:59.287 に答える
2

フォームはリストに直接送信されます<form action="diseaselist.php" method="post"> 。データベースへのコード保存は実行されません。

process.phpデータベースに追加するためのコードを含む中間ページを作成できます。

<?php
mysql_connect("localhost","root","");
mysql_select_db("hcp");

if($_REQUEST['btnDiseaseSubmit'])
{
    $queryDiseaseInsert="INSERT INTO  disease (`diseasename` ,`description`) VALUES ('". mysql_real_escape_string($_REQUEST['txtDiseaseName'])."', '".mysql_real_escape_string($_REQUEST['txtDiseaseDescription'])."');";

   $resultDI=mysql_query($queryDiseaseInsert) or die(mysql_error());
   // insert is complete, redirect to list
   header("location: diseaselist.php");
} else {
   // the form was not submitted
   // redirect back to the form or show error message
}

?>

変更点:

  • mysql_real_escape_string を追加
  • 挿入後、ブラウザをリストにリダイレクトするヘッダー命令を送信します

ここで、現在のファイルで、html コードのみを残して属性を更新し、フォームをスクリプトactionに送信します。process.php

<html><head><title>Disease Inssert</title></head>
<body>
<form action="process.php" method="post">
Disease Name : <input type="text" name="txtDiseaseName" id="textbox" /><br />
Description : <input type="text" name="txtDiseaseDescription" id="textbox" /><br />
<input type="submit" name="btnDiseaseSubmit" id="button"/>

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

変更点:

  • フォームaction属性をに更新しましたprocess.php
于 2012-04-24T06:27:25.703 に答える
0

diseaselist.phpページで次のコードを試してください

<?php

   mysql_connect("localhost", "root", "");
mysql_select_db("hcp");

if (isset ($_REQUEST['btnDiseaseSubmit'])) {
    $queryDiseaseInsert = "INSERT INTO disease ('diseasename' , 'description') VALUES('" . $_REQUEST['txtDiseaseName'] . "','" . $_REQUEST['txtDiseaseDescription'] . "')";

    $resultDI = mysql_query($queryDiseaseInsert) or die(mysql_error());
}
?>
于 2012-04-24T06:28:35.390 に答える