質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

3848閲覧

複数行のデータのテーブル表示の方法

Z-TALBO

総合スコア525

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/07/16 07:44

###やりたいこと
例えば、下記のようにフォームがあるとします。

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に空白をあえて入れる方法が適切なのか、それとも別の方法があるのか?
教えていただけませんでしょうか?

質問が猥雑になってしまい大変申し訳ございません。
ご指摘ありましたらお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

何も入っていないということを記憶する必要があるのですから、
DBに空白の状態で保存することは、何もおかしいことはありません。

投稿2016/07/16 08:05

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Z-TALBO

2016/07/16 08:21

ありがとうございました! 空白とかは無い方がとか難しく考えてしまっておりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問