• ベストアンサー

MySQL+PHPでリストから詳細表示

MySQL+PHPで顧客情報のデータベースを作っているところで詰まってしまいました。下のようなテーブルがあります。 number name furi ・・・ ------------------------- 1 北  kita 2  南 minami 3    東 higashi 4    西 nisi このテーブルのリスト一部分を表示して 詳細ボタンを押すと顧客情報の詳細が表示 できるようにしたいのですが、どのように すればいいかまったくわかりません。 一覧表示      名前 フリガナ   詳細  北   kita 詳細  南   minami  詳細 西   nisi こんな感じで詳細を押すと、顧客情報の詳細が 表示されるようにしたいのですが。 一覧を表示させるPHPはこんなかんじで作りました。 //SQL文 tab1表から全行を取り出し、number列の昇順に整列する $sql = "select * from addrmain order by number"; //SQL文を実行する $rs = mysql_db_query($db,$sql); //列数を取得する $num = mysql_num_fields($rs); //HTML文を出力 テーブルの開始を指定 print("<table border=1>"); //test表の列数と同じ回数を繰り返す for ($i=0;$i<$num;$i++){ //HTML文を出力 列名を <td>で囲んで出力 print("<td>".mysql_field_name($rs,$i)."</td>"); } //test表の行数と同じ回数を繰り返す while($row=mysql_fetch_array($rs)){ //HTML文を出力 表の行の開始<tr> を出力 print("<tr>"); //test表の列数と同じ回数を繰り返す for($j=0;$j<$num;$j++){ //HTML文を出力 列の内容を <td>で囲んで出力 print("<td>".$row[$j]."</td>"); } //HTML文を出力 表の改行</tr> を出力 print("</tr>"); } //HTML文を出力 テーブルの終了を指定 print("</table>"); なにをどのようにしたら良いかお知恵をお貸しください。お願いします。

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 表示項目としては名前とフリガナと詳細ボタンを表示して 一覧に表示するってことですよね。 <?php $sql = "select number,name,furi from addrmain order by number"; $rs = mysql_db_query($sql); ?> <table border="1"> <tr><td></td><td>名前</td><td>フリガナ</td></tr> <?php // 取得したデータの展開 while($rows=mysql_fetch_array($rs)) { ?> <form action="detail.php" method="get"> <input type="hidden" name="number" value="<?= $rows['number'] ?>"> <tr> <td><input type="submit" value="詳細"></td> <td><?= $rows['name'] ?></td> <td><?= $rows['furi'] ?></td> </tr> </form> <?php // End While } ?> </table> すいません。見易さは考慮していないのでうまくソースは整理してください。 こんな風な形で取得した情報を一覧に表示でき、各詳細ボタンを押すと detail.php?number=1という形でsubmitされるのでdetaile.phpで、 $number=$_GET['number']; としてnumberを受け取り、 $sql = "select * from addrmain where number=$number"; というSQLを発行して内容を表示すれば詳細情報が表示されると思います。 (動作確認もしていません。ロジック的にはこんな感じになると思います) 詳細というのがボタンじゃなくテキストリンクにしたいとかでしたら <a href="detail.php?number=<?= $rows['number'] ?>">詳細</a> とかにすればよいと思います。

goobuchou01
質問者

補足

さっそく実行してみましたが、 mysql_fetch_array(): supplied argument is not a valid MySQL result resource in とエラーになってしまいました。 どうやら <?php // 取得したデータの展開 while($rows=mysql_fetch_array($rs)) { ?> の部分でエラーになっているみたいです。

その他の回答 (5)

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

まぁご本人も直ぐに気がつくと思いますが ×<?= ['furi'] ?> ○<?= $rows['furi'] ?> いままでのすべてケアレスミスですよ 気をつけましょう。

goobuchou01
質問者

お礼

ありがとうございました。解決しました。 本当に単純なミスでした。いろいろありがとうございました。

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

文末の;が抜けているからじゃないですか? ×$number = $_GET['number'] ○$number = $_GET['number'];

goobuchou01
質問者

補足

36行目;を追加でクリアできました。ありがとうございます。 ただここをクリアしたら違う行でエラーになりました。 <TR> <TD height="16" class="hpb-cnt-tb-cell1" width="128">ふりがな</TD> <TD height="16" class="hpb-cnt-tb-cell1" width="659"><?= ['furi'] ?></TD>  <---ここです </TR> <TR> 検索した結果を表示させようとしたのですが・・。文法がまちがっているのでしょうか? エラーはここです。 syntax error, unexpected '[' in

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.4

こんにちは。 No1です。すいません、もとの提示してあったソースコピーして 改変してそのまま載せたので気づきませんでした。 mysql_db_queryを使用するならNo3さんの回答通りの引数です。 mysql_queryと勘違いしててそのまま載せちゃいました。 すいません。

goobuchou01
質問者

補足

すみませんありがとうございます。 detailのphpにnumberを送った後にエラーがでてしまいます。そのエラーの行がこれなのですが。 Parse error: syntax error, unexpected T_VARIABLE in addrdetail.php on line 36 その36行がこちらです。 $number = $_GET['number'] $sql = "select * from addrmain where number = $number";<======36行目です。 $rs = mysql_db_query($db,$sql) いきずまってしまいました。質問ばっかりですみません。

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

いや、だから指定されてないと思うんですが・・・ × $rs = mysql_db_query($sql); ○ $rs = mysql_db_query($db,$sql);

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

$rs = mysql_db_query($sql); でDB名を指定していないからじゃないでしょうか? そもそもmysql_connectとかしてあります?

goobuchou01
質問者

補足

<?php //DBへ接続開始 サーバー名--localhost ユーザー名--root パスワード--root $dbHandle = mysql_connect("localhost","root",""); //DBの接続に失敗した場合はエラー表示をおこない処理中断 if ($dbHandle == False) { print ("can not connect db\n"); exit; } //db名 test $db = "test"; $sql = "select number,furi,name from addrmain order by number"; $rs = mysql_query($sql); ?> <table border="1"> <tr><td></td><td>名前</td><td>フリガナ</td></tr> <?php // 取得したデータの展開 while($rows = mysql_fetch_array($rs)) { ?> <form action="detail.php" method="get"> <input type="hidden" name="number" value="<?= $rows['number'] ?>"> <tr> <td><input type="submit" value="詳細"></td> <td><?= $rows['name'] ?></td> <td><?= $rows['furi'] ?></td> </tr> </form> <?php // End While } ?> </table> こんな感じに作ってみたのですが、最初にDBは指定 しているのですが、どうでしょう?

関連するQ&A

専門家に質問してみよう