[PHP-users 35179] FORMでの値渡しについて(最後の値が入ってしまう)

kona uto-s @ ymail.plala.or.jp
2010年 4月 30日 (金) 01:15:01 JST


こんばんは。konaと申します。

データベースの内容をwhile文を使って一覧表示させ、
各行(レコード)の右端に「削除」ボタンを設け、
レコードを削除させたいのですが、
目的のレコードの「削除」ボタンをクリックしても、
表の最後(一番下)のレコードしか削除されず悩んでいます。
下記の例で、POSTで渡す値に、一番最後の値が入ってしまいます。

<?php
$rs = $db->query("SELECT * FROM table WHERE id = '$id'");
$row = $rs->fetchRow(DB_FETCHMODE_ASSOC);
?>
<table>
<?php
while ($row=$rs->fetchRow(DB_FETCHMODE_ASSOC)){
?>
  <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>">
  <tr>
    <td><?php echo $row['no'] ?></td>
    <td><?php echo $row['name'])?></td>
    <td><input type="submit" name="del" value="削除"></td>
  </tr>
  <input type="hidden" name="no" value="<?php echo $row['no'] ?>">
  </from>
<?php
}
</table>

上記の場合、$_POST['no'] で受け取る値が、目的のレコードのnoでなく
一番最後の値になってしまいます。
但し、表にある $row['no']  の値は目的のレコードのnoを表示しています。

原因や何か良い解決方法がございましたら
どなたかアドバイス頂けますと助かります。

よろしくお願い致します。 




PHP-users メーリングリストの案内