こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

mysql - 出力を縦表示

mysql - 出力を縦表示にしたいのです。

$sql = "SELECT * FROM tensudb where kokugo >= 90 ORDER BY kokugo DESC,suugaku DESC,eigo DESC";
上記を
$sql = "SELECT * FROM tensudb where kokugo >= 90 ORDER BY kokugo DESC,suugaku DESC,eigo DESC" \G
とすればよいとありましたが、エラーがでて表示できません。

どこがいけないかご教授ください。

また、結果表示する際の項目をどのように組めばよいかも教えていただけると幸いです。
普通だと
     国語 数学 英語
Cクン  97 74 80
Bクン 95 34 80
Aクン 93 40 79
Sクン 92 80 60
表示されると思いますが、以下のように表示させたいのです。

   Cクン Bクン Aクン Sクン
国語 97    95   93   92
数学 74    34   40   80
英語 80    80   79   60

国語、数学、英語のソースの書き方もお願いします。
<table>
<tr><td>国語</td></tr>
<tr><td>数学</td></tr>
<tr><td>英語</td></tr>
</table>になってしまいますが・・・

よろしくお願いします。

投稿日時 - 2008-08-18 19:15:22

QNo.4260365

すぐに回答ほしいです

質問者が選んだベストアンサー

#1です。

SQL側でやるのはちょっと工夫が必要なのでPHP側の処理の例を。
とりあえずSQLから$listという形でデータを吸い上げたとします。

<?
$list=Array(
0=>Array("氏名"=>"Cクン","国語"=>97,"数学"=>74,"英語"=>80)
,1=>Array("氏名"=>"Bクン","国語"=>95,"数学"=>34,"英語"=>80)
,2=>Array("氏名"=>"Aクン","国語"=>93,"数学"=>40,"英語"=>79)
,3=>Array("氏名"=>"Sクン","国語"=>92,"数学"=>80,"英語"=>60)
);

//普通の表示
$str="";
$str.="<tr><th>氏名</th><th>国語</th><th>数学</th><th>英語</th></tr>";
foreach($list as $row){
$str.="<tr><td>{$row["氏名"]}</td><td>{$row["国語"]}</td><td>{$row["数学"]}</td><td>{$row["英語"]}</td></tr>";
}
print "<table border>{$str}</table>";

//縦横入れ替え表示
foreach($list[0] as $key=>$val){
$rows[$key].="<th>{$key}</th>";
}
foreach($list as $row){
foreach($row as $key=>$val){
$rows[$key].="<td>{$val}</td>";
}
}

$str="";
foreach($rows as $val){
$str.="<tr>{$val}</tr>";
}
print "<table border>{$str}</table>";
?>

投稿日時 - 2008-08-19 12:43:51

お礼

遅くなりましたが、縦に表示できるようになりました。

配列を基礎から勉強しなおしました。

おかげで、他にも役立てそうです。

投稿日時 - 2008-09-02 10:32:21

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

\Gで

列1   値1
列2   値2
列3   値3

のように、1行の値を縦に表示できるのいは、MySQL Command Line Clientを使った場合などの「クライアント側のソフトウェアの仕様」の話です。

投稿日時 - 2008-08-18 21:19:15

補足

回答ありがとうございます。
レンタルサーバーでは、無理ということですね。

投稿日時 - 2008-08-18 23:59:14

ANo.1

>$sql = "SELECT * FROM tensudb where kokugo >= 90 ORDER BY kokugo DESC,suugaku DESC,eigo DESC";
>上記を
>$sql = "SELECT * FROM tensudb where kokugo >= 90 ORDER BY kokugo DESC,suugaku DESC,eigo DESC" \G
>とすればよいとありましたが、エラーがでて表示できません。

まずこれはPHPで処理をするのでしょうか?
PHPのセミコロンを¥Gに変更することはできません。
MySQLのセミコロンと混同しています。
そもそも上の方のSQLで十分なのになんのために下のように書き換えようと
おもったのでしょうか・・・

縦表示うんぬんのところは処理はPHPでよいのですか?
MySQLの範疇ではないので、なにをつかってプログラムするかを
提示すべきです

投稿日時 - 2008-08-18 19:53:04

補足

ご指摘ありがとうございます。
PHP+MySQLになります。

>縦表示うんぬんのところは処理はPHPでよいのですか?
はい。PHPで処理しようと思っています。
ご教授お願いします。

投稿日時 - 2008-08-18 23:56:53

あなたにオススメの質問