プロが教える店舗&オフィスのセキュリティ対策術

(1)DB内を検索
(2)DBアクセスし、検索結果を画面(1)で表示。(ループです)その際、checkboxを左につける。
(3)チェックされたレコードを画面(2)で再表示。
(2)の画面でレコード取得&checkbox
<table class="TEBLE" border="1" width="100%">
<tr><th align="left"> </th>
<th align="left">upload日</th>
<th align="left">ファイル種別</th>
<th align="left">ファイル名</th>
<th align="left">作成日時</th>
<th align="left">サイズ</th>
</tr>
<? while($rows = mysql_fetch_assoc($result)): ?>
<tr>
<td><input type="checkbox" name="ck_del[]"VALUE="<?= $rows ?>"></td>
<td><?= $rows[upload_YMD] ?></td>
<td><?= $rows[upload_FILE_TYPE] ?></td>
・・・・・・・・
<? endwhile; ?>
これで検索結果は表示できました。でもvalueの値が間違っているようなきがしますが...全部の値をcheckboxでもって行こうという考えが無理ですか???
受け取る画面
<?php
$ck_del = $_POST["ck_del"];
foreach($ck_del as $rows){ ?>
<tr><td><?= $rows[upload_YMD] ?></td>
<td><?= $rows[upload_FILE_TYPE] ?></td>
・・・
</tr>
<? }; ?>
こんな感じで書いたんですが表にはAという英文字しか
表示されなくて困っています。どなたかおわかりの方がいらっしゃるならご教授お願いします。
またもっといい書き方がありましたら教えてほしいです。

A 回答 (2件)

name="ch_del[]"


とやってるから $_POST["ck_del"]で参照するのは無理じゃないか?

ちなみに
前の人の回答にちょっと追加で
検索結果表示にちょっと手入れ

<td><input type="checkbox" name="ck_del[]"VALUE="<?= $rows ?>"></td>

↓↓↓↓↓↓↓↓↓↓↓↓

<td><input type="checkbox" name="ck_del"VALUE="<?php implode(",",$rows) ?>"></td>

この回答への補足

name="ck_del[]"これは配列を渡すつもりでやりましたけど...<? while($rows = mysql_fetch_assoc($result)): ?><---このループを実行してDBの検索結果を表示ながら左にチェックボックスをつけて表示したいです。そこでチェックボックスのVALUEに配列の値をつけてPOSTで渡してまたループを実行してチェックしたものだけ次の画面に表示してやろうと思いましたがなかなかうまく行かないです。↑↑↑↑↑↑↑↑私の考えでした。もしまちがっているなら正しい考え方を教えてもらえないですか??よろしくお願いします。

補足日時:2006/08/22 11:08
    • good
    • 0

さすがに


<input type="checkbox" name="ck_del[]"VALUE="<?= $rows ?>">
は乱暴すぎるでしょう。
PHPのオブジェクトをhtmlで引き継ごうとしています?

そこで考えてみたんですが
こんな風に、カンマ区切りでvalueを渡してやれば
ご希望のケースも対応できないこともないかと。

<?PHP
if($_POST["ch_del"]){
foreach ($_POST["ch_del"] as $key=> $val){
$_POST["ch_del"][$key]=split(",",$val);
}
print "<pre>";
print_r($_POST);
print "</pre>";
}

print <<<eof
<form action=$PHP_SELF method=post>
<input type="checkbox" name="ch_del[]" value="20060101,aaaa">
<input type="checkbox" name="ch_del[]" value="20060801,bbbb">
<input type="checkbox" name="ch_del[]" value="20061001,cccc">
<input type="submit" value="送信">
eof;
?>

この回答への補足

ご教授ありがとうございます。他人のコードを拝見しながら自分で模索しているものなので、思いついたのがこんな方法しかなかったんです。完成したい機能はDB検索結果を表示するとき行ごとにcheckboxを付けます。さらにその画面でチェックをしたものだけ次の画面に持っていって表示させたいです。そこでなんですがほかにいい方法がありましたら教えてもらえないですか?すみません!未熟なもので説明とか下手でお手数をおかけしました。

補足日時:2006/08/22 09:43
    • good
    • 0

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