2012-02-01 6 views
-5

フォームを更新しようとしていますが、最後の行のみが更新されます。送信されたポスト値(項目[Pidno]および項目[Pquantity])をエコーし​​ましたが、ちょうど最後の行項目で[Pquantity]更新、そしてそれは私が間違っているつもりアイテム[Pidno]を、返さないフォームで配列をエコーする

<? 
$pplresult = mysql_query("SELECT * FROM repplac"); 
echo "<table border='1'><tr><th> SHOP NAME</th><th> PRODUCT NAME</th><th> 
PRODUCT SIZE</th><th> PRODUCT COLOUR</th><th> PRODUCT QUANTITY</th><th> 
PRICE</th><th> </th></tr>"; 
while($row = mysql_fetch_assoc($pplresult)){?> 
<form action='updatepplac.php' method='Post' class='slistbar'> 
<?echo "<tr><td>" .$row['Sname'] ."</td><td>" .$row['Pname'] ."</td><td>" .$row['Psize'] ."</td><td>" .$row['Pcolour'] ."</td><td>" ."<input type='text' name='item[Pquantity]' id='Pquantity' value='{$row['Pquantity']}' >" ."</td><td>" .$row['Price'] ."</td><td>" ?> 
<a href="deleteproduct.php?del=<?php echo $row['Pidno'];?>">delete</a></td></tr> 
<input type='hidden' name='item[Pidno]' id='Pidno' value='<?php echo $row['Pidno']; ?>' ><?php } 
// table closing tag 
?> 

これは、常にでは同じである

$submit = $_POST['submit']; 
     //$rowdelete = $_GET['del']; 
     $nPquantity = $_POST['item']; 
     foreach($nPquantity as $Pquantitys){ 
list($pidno, $Pquantity) = $Pquantitys; 
     echo "$Pquantitys"; 
     //echo "$rowdelete"; 
     //echo "$pidno"; 
      //echo "$Pquantity"; 
     die(); 
+0

echo "

";print_r($_POST); echo "
"で入力を確認してください。 – Alfabravo

+1

あなたのHTMLタグが間違った場所にあります。すべての反復で新しい '

'要素を必要とせず、 ''は ''の直接の子としては無効です。ループの後に出力されていると思われる送信ボタンをクリックすると、最後の ''のデータのみが送信されるため、問題の原因になる可能性があります。これを修正するには、 ''を最初の行に移動します。また、最初の行を意味するときには、 'name =" item [Pidno] "' '' name = "item [Pidno] []" 'に配列 – DaveRandom

+0

としてすべてのデータを集めるように変更する必要があります。 – user1158373

答えて

0

更新スクリプトあなたのフォームは、最後のPidnoだけが$ _POSTにあります。[item]

name='item[Pidno]' 

は後で行うかのように:上記の私のコメントから、変更後

name='item[<?php echo $row['Pidno']; ?>]' 
1

を、ここで私はあなたのコードを書く方法は以下のようになります

<?php 

    // Output start of table and form 
    echo " 
    <form action='updatepplac.php' method='Post' class='slistbar'> 
    <table border='1'> 
     <tr> 
     <th>SHOP NAME</th> 
     <th>PRODUCT NAME</th> 
     <th>PRODUCT SIZE</th> 
     <th>PRODUCT COLOUR</th> 
     <th>PRODUCT QUANTITY</th> 
     <th>PRICE</th> 
     <th></th> 
     </tr>"; 

    // Get DB results and loop, outputting table rows with counter 
    $pplresult = mysql_query("SELECT * FROM repplac") or die(mysql_error()); 
    for ($i = 0; $row = mysql_fetch_assoc($pplresult); $i++) { 
    echo " 
     <tr> 
     <td>".htmlspecialchars($row['Sname'])."</td> 
     <td>".htmlspecialchars($row['Pname'])."</td> 
     <td>".htmlspecialchars($row['Psize'])."</td> 
     <td>".htmlspecialchars($row['Pcolour'])."</td> 
     <td> 
      <input type='text' name='item[$i][Pquantity]' id='Pquantity' value='".htmlspecialchars($row['Pquantity'])."' /> 
      <input type='hidden' name='item[$i][Pidno]' id='Pidno' value='".htmlspecialchars($row['Pidno'])."' /> 
     </td> 
     <td>".htmlspecialchars($row['Price'])."</td> 
     <td><a href='deleteproduct.php?del=".htmlspecialchars($row['Pidno'])."'>delete</a></td> 
     </tr>"; 
    } 

    // Close table and form 
    echo " 
    </table> 
    <input type='submit' value='Submit' /> 
    </form>"; 

?> 

その後、フォームが送信された後、送信されたデータを次のようにループすることができます。

<?php 

    $items = $_POST['item']; 

    foreach ($items as $key => $item) { 
    echo "Item $key: Pquantity={$item['Pquantity']}; Pidno={$item['Pidno']}<br>\n"; 
    } 
+0

今更新部分で作業することができます。 – user1158373

+0

@david、更新コマンドによる構文エラーがあります – user1158373

+0

@ user1158373問題が発生しているコードで質問を更新してください – DaveRandom

関連する問題