2012-12-07 54 views
0

我無法從表單更新多個表格。我已經完成了查詢並使用(或死)檢查錯誤,但似乎我的MySQL代碼中沒有錯誤。我可以更新主表的數據,但我無法更新其他表。我懷疑我的表單域有問題。這是我的形式代碼:PHP + 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>'; 

?> 

這是我的POST代碼:

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

    ?> 

正如你們知道,一個餐廳得到了許多菜單。我可以編輯主餐廳信息,但我無法編輯菜單。請幫幫我。非常感謝您的幫助。謝謝:D

+1

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護,[棄用過程](http://j.mp/Rj2iVR)已經開始。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 –

+0

將'print_r($ _ POST)'放入POST代碼的開頭,並檢查您實際接收的數據。 –

+0

有2個菜單。我爲每個菜單獲得了'1' – user1822825

回答

0

您++ $我至少兩次輸出之前,作爲$ mname索引。所以$ _POST ['mname']將有索引2 .. count_of_rows + 1。你的while()忽略這個事實並計數0 .. size。

如果你打開了所有的警告(你應該),你會得到一個警告,指出無效的索引0在行上使用「$ name = $ _POST ...」,並且你可以弄清楚從那裏。

+0

非常感謝。我怎麼能糾正它?對不起,要求太多,但我仍然是一個初學者。 – user1822825

+0

可能發現了一些提示,當我刪除第一個表格代碼時,第二個表格工作 – user1822825