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

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

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

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

1818閲覧

phpでmysqlのデータをうまく表示する

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2015/03/28 00:50

データベースを用意しphpで値を受け取れるようにしました。
行はadで識別するとします
a
dのそれぞれには何らかの数字を入れていきます。
sql分としては下のような感じです
create table sample(char text, num int);
insert into sample values("a",10);
insert into sample values("b",20);
insert into sample values("c",30);
insert into sample values("d",40);

データの取得は以下のようにしてみました。以下は強引な感じがするのでベストな方法教えていただけると嬉しいです。
$stA = $pdo->query("SELECT * FROM sample where char = 'a'");
$stB = $pdo->query("SELECT * FROM sample where char = 'b'");
$stC = $pdo->query("SELECT * FROM sample where char = 'c'");
$stD = $pdo->query("SELECT * FROM sample where char = 'd'");

$a= $stA->fetchAll();
$b= $stB->fetchAll();
$c= $stC->fetchAll();
$d= $stD->fetchAll();

表示させるにはテーブルを利用して以下のようにしてみました。こちらも指摘していただけると嬉しいです。

<tr> <th>char</th> <th>num</th> </tr> <?php foreach ($a as $a){ ?> <tr> <?php echo "<td>a</td>". "<td>".$a["num"]."</td>". ;?> </tr> <?php } ?> <?php foreach ($b as $b){ ?> <tr> <?php echo "<td>b</td>". "<td>".$b["num"]."</td>". ;?> </tr> <?php } ?> <?php foreach ($c as $c){ ?> <tr> <?php echo "<td>c</td>". "<td>".$c["num"]."</td>". ;?> </tr> <?php } ?> <?php foreach ($d as $d){ ?> <tr> <?php echo "<td>d</td>". "<td>".$d["num"]."</td>". ;?> </tr> <?php } ?>

小さなことでも構いませんので、こうした方が良いというのを指摘していただけると嬉しいです。

あと、このコードの場合a~dまでひとつずつただと問題ないのですが、aが2つあったりbが2つあったりした場合、表が増えていってしまいます。同じ行に数字だけ追加していくにはどうしたらよいでしょうか?

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

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

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

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

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

guest

回答1

0

データの取得は以下のようにしてみました。以下は強引な感じがするのでベストな方法教えていただけると嬉しいです。

IN句使うとか?
予めcharにabcdしかないのであればそもそもwhereはいらない気もしますが。

lang

1$sql = "SELECT * FROM sample where char IN ('a', 'b', 'c', 'd')";

表示させるにはテーブルを利用して以下のようにしてみました。こちらも指摘していただけると嬉しいです。

  • エスケープしましょう(データ的に必要ないという気持ちも分からんでもないですが)
  • <?php の外でタグを出力するのとechoでタグを出力するのを混在しないほうがよいと思います。
  • 後々charにeが加わったときにコードを修正する必要があるのは避けたいですね。

あと、このコードの場合a~dまでひとつずつただと問題ないのですが、aが2つあったりbが2つあったりした場合、表が増えていってしまいます。同じ行に数字だけ追加していくにはどうしたらよいでしょうか?

charはてっきり主キーだと思っていましたが上の前提ですと多分主キーがないと思いますので、
主キーはつけたほうがいいです。(charとnumの複合主キーの可能性もありますが)

同じ行に数字だけ追加・・・はどう表示したいか次第でコードが変わってくるので参考までに私ならこう書くというサンプルを貼っておきます。

lang

1$sql = "SELECT * FROM sample where char IN ('a', 'b', 'c', 'd')"; 2$rowset = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC); 3 4// 予め表示用にデータをまとめておく 5$data = array(); 6foreach($rowset as $row) 7{ 8 if(!isset($data[$row['char']]) 9 { 10 $data[$row['char']] = array(); 11 } 12 $data[$row['char']][] = $row['num']; 13} 14 15<tr> 16 <th>char</th> 17 <th>num</th> 18</tr> 19<?php foreach ($data as $char => $num_list): ?> 20 <tr> 21 <td><?php echo htmlspecialchars($char); ?></td> 22 <td><?php echo htmlspecialchars(implode(' / ', $num_list)); ?></td> 23 </tr> 24<?php endforeach; ?>

投稿2015/03/28 01:39

編集2015/03/28 01:44
PruneMazui

総合スコア227

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問