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

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

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

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

PHP

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

Q&A

解決済

4回答

2438閲覧

SELECT文を複数回用いての曜日ごとの表作成

Nk2

総合スコア8

MySQL

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

PHP

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

0グッド

1クリップ

投稿2017/04/11 07:14

編集2017/04/11 09:38

###前提・実現したいこと
複数の条件の行を違う表として表示させたいのですが、一行も表示されません。
SELECT文を複数回使用する際の文法ミスなどあれば何卒ご教授頂きたく…

###ソースコード

<?php require_once('db_accese.php'); $db = new DB(); $sql_mon = "SELECT * FROM timetable WHERE day=' mon'"; $res_mon = $db->executeSQL($sql,null); //$recordlist = "<table>\n"; $index .= "<table>\n" ."<tr><td>" .'コード' ."</td><td>" .'授業名' ."</td><td>" .'担当者' ."</td><td>" .'雇用形態' ."</td><td>" .'開催時期' ."</td><td>" .'曜日' ."</td><td>" .'時限' ."</td><td>" .'教室' ."</td><td>" .'CD' ."</td><td>" .'CS' ."</td><td>" .'HW' ."</td><td>" .'PS' ."</td>"; while($row = $res_mon->fetch(PDO::FETCH_ASSOC)){ //連想配列を使う場合はFETCH_ASSOCを指定 $recordlist .= "<tr><td>{$row['code']}</td>"; $recordlist .= "<td>{$row['name']}</td>"; $recordlist .= "<td>{$row['teacher']}</td>"; $recordlist .= "<td>{$row['employ']}</td>"; $recordlist .= "<td>{$row['semester']}</td>"; $recordlist .= "<td>{$row['day']}</td>"; $recordlist .= "<td>{$row['term']}</td>"; $recordlist .= "<td>{$row['room']}</td>"; $recordlist .= "<td>{$row['CDgrade']}</td>"; $recordlist .= "<td>{$row['CSgrade']}</td>"; $recordlist .= "<td>{$row['HWgrade']}</td>"; $recordlist .= "<td>{$row['PSgrade']}</td></tr>"; } $recordlist .= "</table>\n"; //火曜日 $sql_tue = "SELECT * FROM timetable WHERE day = ' tue'"; $res_tue = $db->executeSQL($sql_tue,null); while($row = $res_tue->fetch(PDO::FETCH_ASSOC)){ //連想配列を使う場合はFETCH_ASSOCを指定 $recordlist2 .= "<tr><td>{$row['code']}</td>"; $recordlist2 .= "<td>{$row['name']}</td>"; $recordlist2 .= "<td>{$row['teacher']}</td>"; $recordlist2 .= "<td>{$row['employ']}</td>"; $recordlist2 .= "<td>{$row['semester']}</td>"; $recordlist2 .= "<td>{$row['day']}</td>"; $recordlist2 .= "<td>{$row['term']}</td>"; $recordlist2 .= "<td>{$row['room']}</td>"; $recordlist2 .= "<td>{$row['CDgrade']}</td>"; $recordlist2 .= "<td>{$row['CSgrade']}</td>"; $recordlist2 .= "<td>{$row['HWgrade']}</td>"; $recordlist2 .= "<td>{$row['PSgrade']}</td></tr>"; } ?> <!DOCTYPE html> <html> <head> <title>test</title> <meta charset="utf-8"> <style> table tr:hover { background-color: #fff072; } tr:nth-child(1) { background-color:#42f474; } td{border:1px solid black;} </style> </head> <body> <h1>曜日ごとに表示</h1> <?php echo $index;?> <?php echo $recordlist;?><br /> <?php echo $index;?> <?php echo $recordlist2;?><br /> </body> </html>

###補足情報(言語/FW/ツール等のバージョンなど)
各バージョン
php:PHP 5.6
Mysql:Mysql5.5

[mon]を含むデータ

2 授業名 担当者名 PS full 1 mon 4 W207 null null null null null null null null null null null null PSopenY 授業呼称名 1 option null null null null null

tueで表示されるべきデータ例

2 授業名 担当者名 PS full 1 mon 4 W207 null null null null null null null null null null null null PSopenY 授業呼称名 1 option null null null null null

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

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

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

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

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

masaya_ohashi

2017/04/11 07:17

テーブルに実際格納された、monのデータとtueのデータを1つずつ記載してみてください。
kei344

2017/04/11 07:57

質問文のコード/データはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
kei344

2017/04/11 08:34

PHPコードもコードブロック化よろしくお願いします。
kei344

2017/04/12 05:47

まだ質問が「受付中」になっていますが、いったん「解決済」にされてはいかがでしょうか。また、解決されていないなら状況を質問文に追記ください。
guest

回答4

0

ベストアンサー

どこまでうまくいっているか、var_dump()などを用いてデバッグしてみてはいかがでしょうか?

あと、複数回DBから取得する必要はありますでしょうか?
全件抽出して、dayの中身によってプログラムで振り分けた方が効率が良さそうなのですが・・・

投稿2017/04/11 07:20

s.t.

総合スコア2021

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

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

Nk2

2017/04/11 07:31

仰る通りです…。 phpの連想配列に詳しくないものでもしよろしければご教授願えればと思います…。
s.t.

2017/04/11 07:45

if($row['day'] == " mon"){ //月曜の処理 } のようにするだけかなと思います。 あと、 $db->executeSQL($sql,null); の$sqlはいかがでしょうか?
guest

0

関係ないかもしれませんが…
$res_mon = $db->executeSQL($sql,null); に渡す変数は$sqlではなく、$sql_monなのでは?
$res_mon = $db->executeSQL($sql_mon,null); ←これが正解?

投稿2017/04/11 08:02

motuo

総合スコア3027

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

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

Nk2

2017/04/11 08:12

ありがとうございます! ご指摘頂きました点を改善したところ希望通りの表示が出来ました!
guest

0

変数の$recordlistと$recordlist2が宣言されていないように見えます。

$recordlist = $recordlist2 = "";

投稿2017/04/11 07:26

namimon

総合スコア726

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

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

Nk2

2017/04/11 07:34

ご指摘の通り宣言を追加してみましたが、変化はありませんでした…。
guest

0

day=' mon'
monの前にスペースが入っていますが、こういうデータなんでしょうか?

投稿2017/04/11 07:18

ttyp03

総合スコア16998

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

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

Nk2

2017/04/11 07:30

はい、データ挿入の際の誤りのため、今回はこのような形になっております。 後程挿入しなおす予定です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問