• ベストアンサー

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>になってしまいますが・・・ よろしくお願いします。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

#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>"; ?>

php2864
質問者

お礼

遅くなりましたが、縦に表示できるようになりました。 配列を基礎から勉強しなおしました。 おかげで、他にも役立てそうです。

その他の回答 (2)

回答No.2

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

php2864
質問者

補足

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

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.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の範疇ではないので、なにをつかってプログラムするかを 提示すべきです

php2864
質問者

補足

ご指摘ありがとうございます。 PHP+MySQLになります。 >縦表示うんぬんのところは処理はPHPでよいのですか? はい。PHPで処理しようと思っています。 ご教授お願いします。