• 締切済み

checkboxでの複数選択削除がわかりません

今はひとつずつ削除しているのですが、checkboxにかえて複数削除するにはどのようにしたらいいでしょうか?具体的なフォームの形としては、タイトル(これは内容に飛ぶリンクがはられている)受信日、削除(ここの列にcheckboxをいれたい)これがヘッダーでテーブルの形になっています。 今のソースは以下のようになっています。 while ($line = mysql_fetch_array($rs_limit, MYSQL_ASSOC)) { echo "\t<tr>\n"; echo "<form action='message_s.php' method='POST' name='form1'>"; echo "<input type='hidden' name='no' value='$line[no]'>"; echo"\t\t <td NOWRAP><a href='message_s.php' onclick='document.forms[1].no.value=$line[no];document.forms[1].submit();return false;'>$line[title]</a></td>\n"; echo"</form>"; echo "\t\t <td NOWRAP>$line[zyusinbi]</td>\n"; //ここからが削除のフォームです echo "<form action='messagesakujyo_regist.php' method='POST' >"; echo "<input type='hidden' name='no' value='$line[no]'>"; echo"\t\t <td NOWRAP><a href='messagesakujyo_regist.php'onclick='document.forms[2].no.value=$line[no];document.forms[2].submit();return false;'>削</a></td>\n"; echo"</form>"; echo "\t</tr>\n"; } echo "</table>\n"; noをチェックボックスで複数の値を送りたいと思っています。自分でも配列(no[])にしたりしてやってみたのですがうまくいきません。同じ値だけしか取り出せなかったりします。

みんなの回答

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.3

onclickの中がよく分かりませんが・・ echo '<form method="post" action="">'; echo '<table>'; foreach ($rows as $row) {  echo '<tr>';  echo '<td><input type="checkbox" name="no[' . $row['no'] . ']" value="1"></td>';  echo '<td><a href="">' . $row['title'] . '</a></td>';  echo '<td>' . $row['zyusinbi'] . '</td>';  echo '</tr>'; } echo '</table>'; echo '<input type="submit" name="delete" value="Delete" />'; echo '</form>'; if (!empty($_POST['delete']) && !empty($_POST['no'])) {  foreach ($_POST['no'] as $no => $val) {   echo $no . '<br />'; // ←こいつを削除  } }

dfjie
質問者

お礼

回答ありがとうございます。 このコードをみて無事作ることができました。 わざわざ初心者の質問に答えていただきありがとうございます。

  • wp_
  • ベストアンサー率54% (132/242)
回答No.2

肝心のcheckboxを入れ忘れた。 (snip) echo "<form action='送信先' method='POST' id='f3'>"; foreach($rows as $row) {  echo"<a onclick='document.getElementById('f1').no.value="   . $rows["no"] . ";document.getElementById('f1').submit();return false;'>削</a>";  echo "<input type='checkbox' name='no[]' value='" . $rows["no"] . "' />まとめて削"; } echo "<input type='submit' /></form>";

dfjie
質問者

お礼

回答ありがとうございます。 まだエラーがでてるみたいなので、参考にしてがんばってみようと思います。 初心者の質問に答えてもらい本当にありがとうございます。

  • wp_
  • ベストアンサー率54% (132/242)
回答No.1

とりあえず突っ込みどころ満載と言っておきましょう。 >echo "<input type='hidden' name='no' value='$line[no]'>"; 変数は全て連結するか{}で括りましょう。 連結する方が高速なので当方は連結を使います。 echo "<input type='hidden' name='no' value='" . $line[no] . "'>"; echo "<input type='hidden' name='no' value='{$line[no]}'>"; submit()の部分でcheckboxに値を入れなおしている部分は不要でしょう。 ここでもjsの中にphpの構文が混ざっていてしっちゃかめっちゃかです。 >document.forms[1].no.value=$line[no]; ←コレ 何Mもあるデータをfetchするのであればスルーしていただきたいですが、 mysql_fetch_array()でループする中でhtmlをechoするのはあまり美しいやり方ではありません。 inputとoutputは極力分離して構築した方が見やすいロジックになります。 また、ループの中にformをそれぞれ書くのは少々無駄といえましょう。 aタグのhrefに値が入っているのも無意味です。 // そもそもhrefとonclickの優先順位ってブラウザ依存だったような気もします 当方が書くと以下の感じ。 $rows = array(); while($row = mysql_fetch_assoc()) {  $rows[] = $row; } foreach($rows as $row) {  echo"<a onclick='document.getElementById('f1').no.value="   . $rows["no"] . ";document.getElementById('f1').submit();return false;'>" .$line["title"]. "</a>";  echo"<a onclick='document.getElementById('f1').no.value="   . $rows["no"] . ";document.getElementById('f1').submit();return false;'>削</a>"; } echo "<form action='message_s.php' id='f1' method='POST'>"; echo "<input type='hidden' name='no' id='no' /> echo "</form>"; echo "<form action='messagesakujo_regist.php' id='f2' method='POST'>"; echo "<input type='hidden' name='no' id='no' /> echo "</form>";

関連するQ&A