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

PHPでチェックボックスの配列の値をPOSTしたい!
質問の仕方が悪かったので再び。
IDや名前は自働で入っていきます。
【フォーム画面】
<form method="POST" action="syuxtukin_chk.php">
<table>
<tbody>
<tr>
<td>ID</td>
<td>名前</td>
<td>2010-08-10</td>
<td>2010-08-11</td>
</tr>
<tr>
<td>16</td>
<td>テスト1<input type="hidden" name="name" value="テスト1"></td>
<td>出勤<input type="checkbox" name="data[16][2010-08-10]" value="1"></td>
<td>出勤<input type="checkbox" name="data[16][2010-08-11]" value="1"></td>
</tr>
<tr>
<td>29</td>
<td>テスト2<input type="hidden" name="name" value="テスト2"></td>
<td>出勤<input type="checkbox" name="data[29][2010-08-10]" value="1"></td>
<td>出勤<input type="checkbox" name="data[29][2010-08-11]" value="1"></td>
</tr>
<td><input type="submit" value="送信"></td>
</tr>
</tbody></table>
</form>
【内容確認画面】
<form method="POST" action="syuxtukin_fix.php">
<table>
<tbody><tr>
<td>ID</td>
<td>名前</td>
<td>2010-08-10</td>
<td>2010-08-11</td>
</tr>
<tr>
<td>【ポストされるID】</td>
<td>【ポストされる名前】</td>
<td>【ポストされるcheckboxの値】</td>
<td>【ポストされるcheckboxの値】</td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" value="登録">
</td>
</tr>
</tbody></table>
</form>
どうしたらPOSTが表示されるか分からないんです・・・

●質問者: goodbabies
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:2010-08-10 2010-08-11 PHP チェックボックス テスト
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● うぃんど
●95ポイント ベストアンサー

前回質問( http://q.hatena.ne.jp/1281425126 )への回答用に途中まで作ってましたので1つで完結してます

動作を理解されましたら機能別にchkとfixに切り分けて使ってください

nameが同じだとデータを取れませんので下記のように勝手に変更しました

<td>テスト1<input type="hidden" name="name[16]" value="テスト1"></td>
<td>テスト2<input type="hidden" name="name[29]" value="テスト2"></td>

おまけで、日付の一覧を先頭で配列に格納することによって、日付変更が簡単にできるようにしてあります。例では2日分ですが1週間分でも1ヶ月分でも好きなだけ列挙してください

(連続する日付を楽して列挙する方法もありますが、それはまた別の話になりますので、ここでは割愛させていただきます)

<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
 <title>test</title>
</head>
<body>
 <?php
 // 日付の一覧を準備する
 $dateArray = array( '2010-08-10', '2010-08-11' );
 // テーブルヘッダ
 echo '<table border="1"><thead><tr><th>ID</th><th>名前</th>';
 foreach( $dateArray as $d ) {
 echo '<th>' . $d . '</th>';
 }
 echo "</tr></thead>\n";
 // テーブルボディ
 echo "<tbody>";
 if ( isset( $_POST['data'] ) ) {
 foreach( $_POST['name'] as $k1 => $v1 ) {
 echo '<tr><td>' . $k1 . '</td><td>' . $v1 . '</td>';
 foreach( $dateArray as $d ) {
 echo '<td>' . ( isset( $_POST['data'][$k1][$d] ) ? isset( $_POST['data'][$k1][$d] ) : '') . '</td>';
 }
 echo "</tr>\n";
 }
 }
 echo "</tbody>\n</table>\n";
 ?>
 <form action="<?= $_SERVER['SCRIPT_NAME'] ?>" method="POST">
 <table border="1">
 <tbody>
 <tr>
 <td>ID</td>
 <td>名前</td>
 <td>2010-08-10</td>
 <td>2010-08-11</td>
 </tr>
 <tr>
 <td>16</td>
 <td>テスト1<input type="hidden" name="name[16]" value="テスト1"></td>
 <td>出勤<input type="checkbox" name="data[16][2010-08-10]" value="1"></td>
 <td>出勤<input type="checkbox" name="data[16][2010-08-11]" value="1"></td>
 </tr>
 <tr>
 <td>29</td>
 <td>テスト2<input type="hidden" name="name[29]" value="テスト2"></td>
 <td>出勤<input type="checkbox" name="data[29][2010-08-10]" value="1"></td>
 <td>出勤<input type="checkbox" name="data[29][2010-08-11]" value="1"></td>
 </tr>
 <td><input type="submit" value="送信"></td>
 </tr> 
 </tbody>
 </table>
 </form>
</body>
</html>
◎質問者からの返答

すばらしいです!おっしゃるとおり!こんなにすばらしいサンプルまで作っていただき、感謝です!完璧にできました!

私はforeachがどうも苦手で、直感的なfor文ばかりを使ってきたのですが、おかげさまでforeachのことも理解できてきました!本当にありがとうございます


2 ● yamaneroom
●5ポイント

$_POST['data']['29']['2010-08-10']

というような形式で取得できる。

関連質問


●質問をもっと探す●



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