0
table: test1
----------
|id |name|
----------
|46 |BOB |
----------

table: test2
------------------------
|id  |name_id |job     |
------------------------
|133 |46      |NOJOB   |
------------------------
|134 |46      |NOJOB   |
------------------------
|135 |46      |NOJOB   |
------------------------

こんにちは、私は、INSERTクエリの「test1.id」からのmysql_insert_id();関数から生じる「test2.name_id」と私のテーブル構造に基づいて、「test2.job」の複数の行をそれぞれ更新するのに問題があります。その上。

「WHEREname_id='」。$_GET['id']。"'"の条件で"test2"テーブルにあるレコードの量に応じて入力されるフォームがあり、 "localhost /rfps/を指定しましたブラウザのURLアドレスにztransposto.php?id = 46 "と入力すると、フォームは上記のtest2テーブルのように表示されます。

最初と2番目の行を変更して更新しようとすると、最後の行の値を変更し、最初と2番目の行の両方の他の2つの行を同じ値で更新した場合にのみ更新されるため、何も更新されません。以下はソースコードです。

1-フォームページを更新

<?php require_once('Connections/rfps.php'); ?>
<?php
//initialize the session
if (!isset($_SESSION)) {
  session_start();
 }
?>

<html>
<head>
</head>
<body>

<?php

$sql = "SELECT * FROM test2 WHERE name_id = '".$_GET['id']."'";

$result = mysql_query($sql) or die($sql."<br/><br/>".mysql_error());

$i = 0;

echo '<table width="50%">';
echo '<tr>';
echo '<td>ID</td>';
echo '<td>Name ID</td>';
echo '<td>Job</td>';
echo '</tr>';

echo "<form name='form_update' method='post' action='ztranspostop.php'>\n";
while ($job = mysql_fetch_array($result)) {
echo '<tr>';
echo "<td>{$job['id']}<input type='hidden' name='id[$i]' value='{$job['id']}' /></td>";
echo "<td>{$job['name_id']}<input type='hidden' name='name_id[$i]' value='{$job['name_id']}' /></td>";
echo "<td><input type='text' size='40' name='job[$i]' value='{$job['job']}' /></td>";
echo '</tr>';
++$i;
}
echo '<tr>';
echo "<td><input type='submit' value='submit' /></td>";
echo '</tr>';
echo "</form>";
echo '</table>';

?>
</body>
</html>

2-クエリページを更新

<?php require_once('Connections/rfps.php'); ?>
<?php
//initialize the session
if (!isset($_SESSION)) {
  session_start();
}

$size = count($_POST['job']);

$i = 0;
while ($i < $size) {
    $job= $_POST['job'][$i];
    $name_id = $_POST['name_id'][$i];

    $query = "UPDATE test2 SET job = '$job' WHERE name_id = '$name_id'";
    mysql_query($query) or die ("Error in query: $query");
    echo "$job<br /><br /><em>Updated!</em><br /><br />";
    ++$i;
}
?>

コードのどの部分が間違っているかを誰かが指摘できますか?前もって感謝します!

4

1 に答える 1

0

フォームのtest2.idフィールドと、それを更新クエリで使用することの間の接続が欠落していると思います。実際、代わりにWHERE name_id =含める場合は、おそらく句は必要ありません。WHERE id =これで、フォームの行(そのページの$ iの値)と更新される特定のジョブ行(次のページの$ iの値)の間の関連付けが完了します。それ以外の場合は、すべて共通の属性(name_id)に基づいて更新するだけです:-)

$i = 0;
while ($i < $size) {
    $job= $_POST['job'][$i];
    $job_id = intval($_POST['id'][$i]);

    $query = "UPDATE test2 SET job = '$job' WHERE id = '$job_id'";
    mysql_query($query) or die ("Error in query: $query");
    echo "$job<br /><br /><em>Updated!</em><br /><br />";
    ++$i;
}
?>
于 2012-07-15T05:39:45.220 に答える