プロが教えるわが家の防犯対策術!

今はひとつずつ削除しているのですが、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[])にしたりしてやってみたのですがうまくいきません。同じ値だけしか取り出せなかったりします。

A 回答 (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 />'; // ←こいつを削除
 }
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/01/22 00:51

肝心の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>";
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/01/21 20:45

とりあえず突っ込みどころ満載と言っておきましょう。



>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>";
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!