0

フォームから複数のテーブルを更新するのに苦労しています。クエリを実行し、(または死ぬ)を使用してエラーをチェックしましたが、MySQLコードにエラーがないようです。メインテーブルのデータを更新することはできますが、他のテーブルを更新することはできません。フォームフィールドに問題があるのではないかと思います。これは私のフォームコードです:

<?php

$sql= "SELECT * FROM client WHERE resID=".$_GET["resID"];
$rs = mysql_query($sql) or die($sql."<br/><br/>".mysql_error());

$sqlM= "SELECT * FROM menu WHERE resID=".$_GET["resID"];
$rsM = mysql_query($sqlM) or die($sqlM."<br/><br/>".mysql_error());

$i = 0;


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






echo "<form name='form_update' method='post' action='client_admin_post.php'>\n";


$f=mysql_fetch_array($rs);echo '<tr>';
echo "<td>Res ID :</td>";
echo "<td>{$f['resID']}<input type='hidden' name='resID' value='{$f['resID']}' /></td>";
echo '</tr>';
++$i;

echo '<tr>';
echo "<td>Restaurant Name :</td>";
echo "<td><input type='text' size='40' name='resName' value='{$f['resName']}' /></td>";
echo '</tr>';
++$i;


while ($fM = mysql_fetch_array($rsM)) {

echo '<tr>';
echo "<td>Menu :</td>";
echo "<td><input type='text' size='40' name='mname[$i]' value='{$fM['name']}' /></td>";
echo "<td>{$fM['id']}<input type='hidden' name='mid[$i]' value='{$fM['id']}' /></td>";
echo '</tr>';
++$i;
}


echo '<tr>';
echo "<td><input type='submit' value='submit' /></td>";
echo '</tr>';
echo "</form>";
echo '</table>';

?> 

これは私の郵便番号です:

<?php


        //session_start();
        include_once("connection.php");

        $resID= $_POST["resID"];
        $resName= $_POST["resName"];

            $sql = "UPDATE client ".
           "SET resName = '$resName' ".
           "WHERE resID = '$resID' " ;

       mysql_query($sql) or die ('query failed:' . mysql_error());

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

    $i = 0;
    while ($i < $size) {
    $name= $_POST['mname'][$i];
    $id = $_POST['mid'][$i];

    $sqlM = "UPDATE menu SET name = '$name' WHERE id = '$id' LIMIT 1";
    mysql_query($sqlM) or die ("Error in query: $sqlM");
    echo "$name<br /><br /><em>Updated!</em><br /><br />";
    ++$i;
    }

    ?> 

ご存知のように、1つのレストランにはたくさんのメニューがあります。メインのレストラン情報は編集できますが、メニューは編集できません。私を助けてください。本当にあなたの助けに感謝します。ありがとう

4

1 に答える 1

0

$ mnameインデックスとして出力する前に、少なくとも2回++$iを実行します。したがって、$ _POST['mname']のインデックスは2..count_of_rows+1になります。while()はこの事実を無視し、0..サイズをカウントします。

すべての警告をオンにした場合(必要に応じて)、「$ name = $ _POST ...」で始まる行に無効なインデックス0が使用されていることを示す警告が表示され、そこから把握できます。

于 2012-12-07T08:52:19.133 に答える