人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

DBのテーブルA("no":001,002 "name":a,b)をtable一覧し左のチェックボックスを選択するtest1,phpと、チェック選択のデータ(複数可)のみ表示&編集できるtest2.phpを作成したいと思っています。
両方チェックしてもtest2.phpに"002"のデータしか受け渡しができないため、2つのファイルの書き方を教えてください。<(_""_)>

<!-- test1.php -->
<form action="test2.php" method="post" >
<table>
<?php $ct=0; while($data = mysql_fetch_array($result)) { ?>
<tr><td><input type="checkbox" name="chk[]" value="<?php echo $data['no']; ?>"></td>
<td><?php echo $data["no"]; ?></td>
<td><?php echo $data["name"]; ?></td></tr>
<?php $ct++; } ?>
<input type="submit" value="編集" />
</form>

<!-- test2.php -->
<?php
$dataCount = count($_POST["chk"]);
if(isset($_POST["chk"])){
for($ct=0; $ct<$dataCount; $ct++) {
$result = mysql_query("SELECT * FROM A WHERE no ='" . $_POST["chk"][$ct] . "'");
$data = mysql_fetch_array($result);
}
?>
<form action="test3.php" method="post" >
<table>
<form action="test3.php" method="post">
<input type="hidden" name="no[]" value="<?php echo $data[$ct]['no']; ?>">
<tr><td><?php echo $data['no']; ?></td>
<td><input type="text" name="name[]" value="<?php echo $data['name']; ?>"></td></tr>
</table>
<?php } ?>
</form>

●質問者: m0r1y055tan
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● snow0214
●50ポイント

test1.php の name属性に添字を加えて下さい。
※コメントを受けてプログラムを少し直しました。

<!-- test1.php -->
 <form action="test2.php" method="post" >
 <table>
 <?php $ct=0; while($data = mysql_fetch_array($result)) { ?>
 <tr><td><input type="checkbox" name="chk[<?php echo $ct; ?>]" value="<?php printf("%03d", $data['no']); ?>"></td>
 <td><?php echo $data["no"]; ?></td>
 <td><?php echo $data["name"]; ?></td></tr>
 <?php $ct++; } ?>
 <input type="submit" value="編集" />
 </form>

m0r1y055さんのコメント
snow0214さん 有り難うございます!やってみましたが、$ctが$ct=0の定義のため、DBにあるnoと$ctが no:001=>$ct:0, no:002=>$ct:1 のため、チェック対象の抽出が合いませんでした。ちなみにtest2.phpで、for($ct=0; $ct<$dataCount; $ct++) {echo $_POST["chk"][$ct]; } と書いてから、test1,phpのブラウザで全部のno(001-004)をチェックしてボタン押したら、test2,phpのブラウザで001002003004と表示されました。最後のnoしかヒットしないのは、これのせいでしょうか? $_POST["chk"][$ct]をカンマ区切りにしないとダメってことでしょうか? ^ - ^;

snow0214さんのコメント
コメントを受けて、チェックボックスのvalue値の表示を直してみました。

m0r1y055さんのコメント
snow0214さん 有り難うございます! 何をやってもうまくいかないので、根本的な問題かも知れません。 もう少しがんばってみます。有り難うございました!!(T ^ T)/"

2 ● pogpi
●50ポイント

test1のname属性は、chk0、chk1、・・・となるようにして、
test2で$_POST["chk0"]を参照する方がいいかも知れません。


m0r1y055さんのコメント
「value="<?php echo $data[no]?>"」でユニークな番号を持たせているので、おそらくそこは問題ないと思います。(ちがってたらすみません;) ちなみに、test2.phpで、for($ct=0; $ct<$dataCount; $ct++) {echo $_POST["chk"][$ct]; } と書いてから、test1,phpのブラウザで全部のno(001-004)をチェックしてボタン押したら、test2,phpのブラウザで001002003004と表示されました。最後のnoしかヒットしないのは、これのせいでしょうか? ^ - ^;

m0r1y055さんのコメント
すみません、何度やってもここにvalue=""の中身が反映されないようです。

m0r1y055さんのコメント
<?php $chk = implode(",", $_POST["chk"]); for($ct = 0; $ct < sizeof($chk); $ct++) { echo $chk ; } ?> でカンマ区切りができたので、SELECT * FROM A WHERE menu_no IN をしたのですが......ダメでした。(>_<)もう少し頑張ってみます。

pogpiさんのコメント
POSTデータが取れれば、どちらでもいいと思います。noはint型じゃないなら、'001','002'にしなければいけません。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ