0

次の表(テキストフィールドの)としての私のフォーム。これらのテキストフィールドに値を入力しています。これらの値をデータベースに入力するにはどうすればよいですか? 助けてください。 ここに画像の説明を入力

フォームのコード:-

    $rows=$_POST["rows"];       
          echo "
        <table align=\"center\" border=\"1\" width=\"70%\">
        <tr>
        <td><b>Roll No.</b></td> <td><b>Full Name</b></td> <td><b>Unit_test</b>       </td><td><b>Prelims</b></td> 
        <td><b>Attendance</b></td> <td><b>File</b></td> 
        </tr>";

    for($n=0;$n<$rows;$n++)
    { 
    echo "<tr>
    <td><input type=\"text\" name=\"roll\" /></td><td><input type=\"text\"                 name=\"name\" /></td><td><input type=\"text\" name=\"unit_test\" /></td>
    <td><input type=\"text\" name=\"prelims\" /></td><td><input type=\"text\"  name=\"attendance\" /></td><td><input type=\"text\" name=\"file\" /></td>
    </tr>";
    }
     echo "</table>";
     echo "<form action=\"feed2.php\" method=\"post\">
    <br>
     <input type=\"submit\" name=\"\" value=\"Submit\" />
   </form>";

データベースへの挿入に使用されるコード:-

for($n=0;$n<3;$n++)
{
  if(isset($_POST['roll']))
  {
    echo "<br>Updating";

    $roll=$_POST['roll'];
    $name=$_POST['name'];
    $unit_test=$_POST['unit_test'];
    $prelims=$_POST['prelims'];
    $attendance=$_POST['attendance'];
    $file=$_POST['file'];

    $sql="Insert into students (roll,name,unit_test,prelims,average,attendance,file,interm) 
    VALUES ('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file')";
    $res=mysql_query($sql);
    header("Location:./view.php");
  } 
4

3 に答える 3

2

おそらく最も簡単な方法は、ロールなどの $_POST 値を配列にすることです (したがって、$_POST は多次元配列になります)。

方法の例については、この前の質問を参照してください。

PHPでPOST経由で多次元配列を送信する

次に、データベース挿入コードで配列値をループできます。

于 2013-09-29T11:59:00.857 に答える
0

SQL での複数行の挿入は、コンマを使用した単純な複数の括弧です。(), (), ();

また、データをエスケープしていません! テキストまたはバイナリに関係なく、すべてのデータをエスケープする必要があります。シンプルで、データのエスケープに失敗することはありません。データベースから直接データが取り出されたとしても、ハッカーがブログのコメントなどにコードを投稿する可能性があり、コメントアウトされますが、何らかの理由でそのコメントを処理すると、後で実行される可能性があります。

$roll = mysql_real_escape_string($_POST['roll');

だからこれをしてください...

INSERT INTO table (roll, name, unit_test, prelims, average, attendance, file, interm) VALUES 
('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file'),
('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file'),
('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file'),
('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file');
于 2013-09-29T15:53:46.860 に答える
0

ブラウザからサーバーにデータを正常に送信するには、各フィールドの名前が各行で異なる必要があります。あなたの場合、すべての列の名前はすべての行で同じままです。$n をサフィックスとして付けることができます

解決:

フィールドを生成するコードを次のように置き換えます。

 for($n=0;$n<$rows;$n++)
    { 
    echo "<tr>
    <td><input type=\"text\" name=\"roll_$n\" /></td><td><input type=\"text\"                     name=\"name_$n\" /></td><td><input type=\"text\" name=\"unit_test_$n\" /></td>
    <td><input type=\"text\" name=\"prelims_$n\" /></td><td><input type=\"text\"  name=\"attendance_$n\" /></td><td><input type=\"text\" name=\"file_$n\" /></td>
    </tr>";
    }

上記のコードでは、各フィールドの末尾に _$n を付けています

次に、挿入のコードを次のように変更します。

$roll=$_POST['roll_'.$n];
$name=$_POST['name_'.$n];
$unit_test=$_POST['unit_test_'.$n];
$prelims=$_POST['prelims_'.$n];
$attendance=$_POST['attendance_'.$n];
$file=$_POST['file_'.$n];

第三に、SQL クエリを変更する必要があると思います。クエリの前に平均を計算し、その値を変数に格納します。次に、$roll や $name などの他の変数で行ったのと同じように、クエリでこの変数を参照します。

$average=(($unit_test + $prelims)/125) *10;

このコードでは、3 行すべてがデータベースに保存されます。

お役に立てれば。

于 2013-09-29T14:16:29.283 に答える