人力検索はてな
モバイル版を表示しています。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>
<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>
</form>
<?php } ?>

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

▽最新の回答へ

1 ● POGPI
●50ポイント

test2で、「WHERE no IN (...)」ですね。...にカンマ区切りでnoが入っていれば出ると思います。


POGPIさんのコメント
FORMタグの前で、forループが閉じているのはいらないですね。 /FORMタグの前で閉じてるのは、後にするといいですね。

POGPIさんのコメント
FORMタグは二個もいらないですね。

m0r1y055tanさんのコメント
pogpiさん 早速有り難うございます! FORMタグ、失礼しました(>v<)>; WHERE no IN (...)の...にカンマ区切りでnoが入っていればOKとのことですが、$_POST["chk"][$ct]はチェック済とno.の2d array(?)でpostしています。カンマ区切りに変更すれば良いのしょうか。できましたら具体的なコードをいただけると助かります。 ^-^ ちなみに参考にしたサイトはこちらです→( http://phppot.com/php/updatedelete-multiple-rows-using-php/ )

POGPIさんのコメント
arrayでPOSTって、やったことがありません。POSTデータが取れているなら、POSTしたデータを、カンマ区切りで連結すればいいですよね。 「.」で連結できますよ。 「$hoge . "," . $hoge2」とかですね。

m0r1y055さんのコメント
pogpiさん お返事ありがとうございます。ざっくりの理解だと、ループ配列してポストした後で、今度はループ区切りするってことですよね?うーむ....。クライアントと会ったり他業務に追われているため、すぐに試す時間はなさそうですが、近日中に試してみます。うまくいかなかったら、もっとarrayについて勉強しなくては!!<(_""_)>

2 ● gizmo5
●50ポイント

test2.php の前半を以下のような形にしてください。

<?php
$dataCount = count($_POST["chk"]);
$data = array();
if(isset($_POST["chk"])){
for($ct=0; $ct<$dataCount; $ct++) {
$result = mysql_query("SELECT * FROM A WHERE no ='" . $_POST["chk"][$ct] . "'");
$data[$ct] = mysql_fetch_array($result);// 配列の要素に検索結果を代入する
}
?>

m0r1y055tanさんのコメント
gizmo5さん 有り難うございます! ^ - ^ 教えて頂いた通りに修正しましたが、ボタンを押したらtest2.phpのページが真っ白になりました。分析したところ、$data = array();だけ追加修正したらテーブル内のデータがなくなり、$data= mysql_fetch_array($result); → $data[$ct]= mysql_fetch_array($result); だけ変更修正したところ、ページが真っ白になるようです。(>_<) なんかすみません....。ちなみにdbのテーブルは下記の状況です。 create table A ( no int(3) zerofill primary key auto_increment, name varchar(30), ); | no | name | | 001| aaa | | 002| bbb |

関連質問

●質問をもっと探す●



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