###やりたいこと
例えば、下記のようにフォームがあるとします。
HTML
1<form action="" method="POST"> 2 <table border="1"> 3 <thead> 4 <tr> 5 <th></th><th>名前</th> 6 </tr> 7 </thead> 8 <tbody> 9 <?php for($i = 1; $i <= 5; $i++) : ?> 10 <tr> 11 <td><?= $i; ?></td> 12 <td><input type="text" name="date[<?= $i; ?>][name]"> 13 </tr> 14 <input type="hidden" name="date[<?=$i;?>[id]" value="2016716<?=$i;?>"> 15 <?php endfor; ?> 16 </tbody> 17 </table> 18<input type="submit" name="test"> 19</form>
この5行データのうち、、、
例えば、1行目と3行目だけにデータを入れて送ったとします。
PHP
1$dates = $_POST['date']; 2foreach ($dates as $date) { 3 $id = $date['id']; 4 $name = $date['name']; 5}
上記は空白に対しての処理は書いていませんので、print("$id=>$name");
とりあえず出力してみると20167161=>テスト1 20167162=> 20167163=>テスト2 20167164=> 20167165=>
となります。
ここではとりあえず出力してみましたが、基本的な動きはDBへInsertさせたいので、空白があった場合は何もしないというif文を付け加えてDBに入れる作業まではできました。
PHP
1$dates = $_POST['date']; 2foreach ($dates as $date) { 3 $id = $date['id']; 4 $name = $date['name']; 5 if ($name != "") { 6 // DBへInsert処理 7 } 8} 9 10次に、一応DBからデータを取り出すということをやってみて、、、 11```MySQL 12// 下記でとりあえず条件検索してみました 13"SELECT * FROM test WHERE id LIKE 2016716%";
PHP
1$rows = // DBからデータ取得 2echo "<table><thead><tr><th></th><th>名前</th></tr></thead><tbody>"; 3foreach ($rows as $row) { 4 $id = $row['id']; 5 $name = $row['name']; 6 print("<tr><td>$id</td><td>$name</td></tr>"); 7} 8echo "<tbody></table>";
で取得することもできました。
これを同じようにテーブルで表示させてみようと思ったので、、、
基本的には同じようにforeachで回してやってみたのですが、、、当然表示は
1 | テスト1
2 | テスト2
というようになります(左の数字はわかりやすいかとつけただけです)。
そこで、入力されたフォームの行と同じ行に表示させる方法を探しています。
「フォーム側」
1 | テスト
2 |
3 | テスト2
4 |
5 |
と入力した場合、次にDBから引っ張ってきた時も
1 | テスト
2 |
3 | テスト2
4 |
5 |
となる方法を探しています。
要は結局何がしたいかというと、フォームにデータを入れる前に条件検索を行ってフォームを出すようにします。
そして、条件にヒットしてデータがあったらフォームにそのデータを反映させて、空白行に対して追加で入力があればそれでInsertしたり、既にあるデータを編集したりするようにしたいと思っています。
###最後に
DBへ登録する際に空白行には何もしないのですが、当然空白行を入れてしまって、IDだけでも登録しておけば、表示する際にはそれで問題なくできるかと思いますが、それは適切なのでしょうか?
実際には10行ほどのデータになり、項目はそこまで多いわけではありませんが、DBに空白をあえて入れる方法が適切なのか、それとも別の方法があるのか?
教えていただけませんでしょうか?
質問が猥雑になってしまい大変申し訳ございません。
ご指摘ありましたらお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/16 08:21