• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mysqlから取り出したデータの並び方を変えたい。)

mysqlからデータを取り出して表示する方法

このQ&Aのポイント
  • HTML・PHP・MySQLを使用してmysqlから取り出したデータをブラウザで表示する方法について教えてください。
  • データベースから取得した名簿データを表形式で表示するための具体的なソースコードを教えてください。
  • Windows2000/sp5 Apache/2.0.55 PHP/5.0.5 MySQL 5.0の環境で、mysqlから取り出したデータを表形式で表示する方法を教えてください。

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

  • ベストアンサー
回答No.3

単にHTMLを表示する部分の問題に思えます。 補足がないと解決できない問題でした。 while ($col = mysql_fetch_array($rst)) { $body .= <<<EOF <table border="1"> <tr><th>ID</th><td>{$col['id']}</td></tr> <tr><th>氏名</th><td>{$col['name']}</td></tr> <tr><th>年齢</th><td>{$col['age']}</td></tr> <tr><th>生年月日</th><td>{$col['bday']}</td></tr> <tr><th>住所</th><td>{$col['address']}</td></tr> <tr><th>自宅電話</th><td>{$col['tel']}</td></tr> </table> EOF; }

gacky1234
質問者

お礼

<?php $dbserver = "localhost"; $dbuser = "root"; $dbpassword = ""; $dbname = "meibo"; $con = mysql_connect($dbserver,$dbuser,$dbpassword); mysql_query("set names sjis"); $selectdb = mysql_select_db($dbname); $id = mysql_escape_string($_GET["id"]); $sql = "select id, name, bday, address, tel, curdate(), (year(curdate())-year(bday)) - (right(curdate(),5)<right(bday,5)) as age from meibo_1 WHERE id={$id}"; $rst = mysql_query($sql); while ($col = mysql_fetch_array($rst)) { $body .= <<<EOF <table> <tr><th>ID</th><td nowrap>{$col['id']}</td></tr> <tr><th>氏名</th><td nowrap>{$col['name']}</td></tr> <tr><th>年齢</th><td nowrap>{$col['age']}</td></tr> <tr><th>生年月日</th><td nowrap>{$col['bday']}</td></tr> <tr><th>住所</th><td nowrap>{$col['address']}</td></tr> <tr><th>自宅電話</th><td nowrap>{$col['tel']}</td></tr> </table>EOF; } mysql_free_result($rst); $con = mysql_close($con); ?> <!doctype html public "-//w3c//dtd html 4.01 transitional//en"> <html> <head> <STYLE type="text/css"> TH { color: #ffffff; /* 文字の色 */ background-color: #666699; /* 背景の色 */ border-style: solid; /* 枠の種類 */ border-color: #9999cc #333366 #333366 #9999cc; /* 枠の色 */ border-width: 7px; /* 枠の幅 */ } TD { color: #ffffff; /* 文字の色 */ background-color: #9999cc; /* 背景の色 */ border-style: solid; /* 枠の種類 */ border-color: #ccccff #666699 #666699 #ccccff; /* 枠の色 */ border-width: 7px; /* 枠の幅 */ } </STYLE> </head> <body> <?=$body?> </body> </html>

gacky1234
質問者

補足

shirayukix さま ご丁寧な回答ありがとうございます。 以下のソースでやってみましたが、Parse error: parse error, unexpected $end in C:\Program Files\*****\*****\*****\*****.php on line 99 が出て、うまくいきませんでした。 一応前後の部分も晒しておきます。 大変お手数ですが、宜しくお願いいたします。

その他の回答 (3)

回答No.4

私が示したソースとよく見比べてみてください。 参考URLを示しますので、ヒアドキュメントについて学んでください。 一行ごとに代入やprintするよりも便利です。

参考URL:
http://beginners.atompro.net/htm/faqphp/heardoc.shtml
gacky1234
質問者

お礼

shirayukix さま できました~~~!ありがとうございます! ヒアドキュメントについて大変勉強になりました。 ポイントは $body .= と <<<EOF の間の半角スペースですね。 ダブルクォーテーションがうっとうしかったので、これは便利です。 大変お手数おかけしました。もっと修行を重ねて、今よりもっと高度な所で行き詰りたいと思います。その際は宜しくお願いいたします。 大変にありがとうございました!

回答No.2

PHPですね。 表示する部分の前後のソース、使用したsql文をください。 それから、表示順と言えば、例えば「ID順に出力する」「名前順に出力する」というのもありますが、こちらは大丈夫でしょうか?

gacky1234
質問者

お礼

shirayukixさま >PHPですね。 >表示する部分の前後のソース、使用したsql文をください。 ご返答ありがとうございます。ソースはasuncionさんへの回答と補足に分けて書いてありますので、確認していただけますでしょうか。 回答に書いてあるのが、名簿の一覧(ID・名前・年齢)でファイル名はmeibo.phpです。 補足に書いてあるのが、詳細情報(ID・名前・年齢・生年月日・住所・電話番号)でファイル名はmeibo_view.phpです。 >それから、表示順と言えば、例えば「ID順に出力する」「名前順に出力す >る」というのもありますが、こちらは大丈夫でしょうか? はい。order by ですね。そちらのほうは大丈夫です。 お手数ですが宜しくお願いいたします。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

> 全て表示させるまでは成功しました。 まずは、そのphpスクリプトを提示してみてください。 そうすれば、どなたかお詳しいかたから 改造後のスクリプトが届くかもしれません。

gacky1234
質問者

お礼

ありがとうございます。ソースは以下です。 <?php $dbserver = "localhost"; $dbuser = "root"; $dbpassword = ""; $dbname = "meibo"; $con = mysql_connect($dbserver,$dbuser,$dbpassword); mysql_query("set names sjis"); $selectdb = mysql_select_db($dbname); $sql = "select id, name, curdate(), (year(curdate())-year(bday)) - (right(curdate(),5)<right(bday,5)) as age from meibo_1"; $rst = mysql_query($sql); $rec = mysql_num_rows($rst); $body = "<b>$rec 件のデータがみつかりました。</b>"; $body .= "<table> <tr> <th bgcolor='#cccccc'>ID</th> <th bgcolor='#cccccc'>氏名</th> <th bgcolor='#cccccc'>年齢</th>  </tr>"; while ($col = mysql_fetch_array($rst)) { $body .= "<nobr><tr>" . "<td>$col[id]</td>" . "<td><a href='/meibo_view.php?id={$col["id"]}'>$col[name]</a></td>" . "<td>$col[age]</td>" . "</tr></nobr>"; } $body .= "</table>"; $body .= "</form>"; mysql_free_result($rst); $con = mysql_close($con); ?> となりまして、この段階では上から順の通常の表示でかまわないのですが、 名前のリンクをクリックすると、その人の詳細情報が表示されるページにて表の並び方を変えたいのです。 詳細情報用のページに続きます・・・。

gacky1234
質問者

補足

続きです。以下、詳細情報用ページ meibo_view.php になります。 <?php $dbserver = "localhost"; $dbuser = "root"; $dbpassword = ""; $dbname = "meibo"; $con = mysql_connect($dbserver,$dbuser,$dbpassword); mysql_query("set names sjis"); $selectdb = mysql_select_db($dbname); $id = mysql_escape_string($_GET["id"]); $sql = "select id, name, bday, address, tel, curdate(), (year(curdate())-year(bday)) - (right(curdate(),5)<right(bday,5)) as age from meibo_1 WHERE id={$id}"; $rst = mysql_query($sql); $body .= "<table> <tr> <th nowrap>ID</th> <th nowrap>氏名</th> <th nowrap>年齢</th> <th nowrap>生年月日</th> <th nowrap>住所</th> <th nowrap>自宅電話</th>  </tr>"; while ($col = mysql_fetch_array($rst)) { $body .= "<nobr><tr>" . "<td nowrap>$col[id]</td>" .                   "<td nowrap>$col[name]</td>" . "<td nowrap>$col[age]</td>" . "<td nowrap>$col[bday]</td>" . "<td nowrap>$col[address]</td>" . "<td nowrap>$col[tel]</td>" . "</tr></nobr>"; } $body .= "</table>"; mysql_free_result($rst); $con = mysql_close($con); ?> もちろんこの状態では、通常の表示形式でしか表示できず、困っています。 どなたか是非お知恵をお貸しくださいませ!

関連するQ&A