• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP + MySQLを使用して詳細画面を開く)

PHP + MySQLを使用して詳細画面を開く

このQ&Aのポイント
  • PHP + MySQLを使用して一覧画面を表示する方法を教えてください
  • 氏名をクリックしたら別ウィンドウで詳細画面を表示させる方法を教えてください
  • 新規登録ボタンを押すと新規登録画面に遷移する方法を教えてください

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

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

こうなるとおそらくもう釣りだと思うんだけど一応かいときます もし釣りじゃなければ何か参考書でもかって基礎から学習したほうがいいと思います。 <table border='1'> <tr> <th>番号</th> <th>氏名</th> <th>住所</th> </tr> <?PHP $id=(isset($_GET["id"]))?((int) $_GET["id"]):0; $con=mysqli_connect("localhost","root","password","db_test"); $result = mysqli_query($con,"SELECT `番号`,`氏名`,`住所` FROM tbl_test where `番号`={$id}"); while($row = mysqli_fetch_array($result,MYSLQI_ASSOC)){ print "<tr>"; print "<td>".htmlspecialchars($row["番号"])."</td>"; print "<td>".htmlspecialchars($row["氏名"])."</td>"; print "<td>".htmlspecialchars($row["住所"])."</td>"; print "</tr>"; eof; } ?> </table> 前回は<tr>の位置がまちがってました。 ちなみに、削除するときは DELETE FROM tbl_test where `番号`={$id} で削除することになります

noname#197690
質問者

お礼

つりじゃないです ありがとうございます。表示できました。 その画面からデータの編集を行いたいのですが、番号はそのままで氏名と住所だけ入力できるようにしたいのですがどこにどんな命令をいればいいと思いますか? 何度もすいません

その他の回答 (7)

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

なんか噛み合ってないね 詳細がみたいんでしょ? だったら要素名と値を表示するんじゃないの? <table border='1'> <tr> <th>要素名</th> <th>値</th> </tr> <?PHP $id=(isset($_GET["id"]))?((int) $_GET["id"]):0; $con=mysqli_connect("localhost","root","password","db_test"); $result = mysqli_query($con,"SELECT * FROM tbl_test where `番号`={$id}"); while($row = mysqli_fetch_array($result,MYSLQI_ASSOC)){ print "<tr>"; foreach($row as $key=>$val){ print "<td>".htmlspecialchars($key)."</td>"; print "<td>".htmlspecialchars($val)."</td>"; } print "</tr>"; } ?> </table> そもそもテーブルの要素は「番号」と「氏名」と「住所」しかないの? だったら元ページで一覧表示しているんだから、わざわざ詳細出す意味ないでしょ?

noname#197690
質問者

お礼

ありがとうございます。 詳細を1件ずつ出してその画面からデータの更新や削除を行いたいので 番号、氏名、住所しかないです

noname#197690
質問者

補足

今 番号 氏名 住所 番号 10  氏名 あ  住所 い こんな感じに出ます

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

http://www.php.net/manual/ja/mysqli-result.fetch-array.php MYSQLI_ASSOCを指定してみてください while($row = mysqli_fetch_array($result)) ↓ while($row = mysqli_fetch_array($result,MYSQLI_ASSOC))

noname#197690
質問者

お礼

ありがとうございます <html> <body> <table border='1'> <tr> <th>番号</th> <th>氏名</th> <th>住所</th> </tr> <tr><td>番号</td><td>1</td><td>氏名</td><td>米倉 隆諭</td><td>住所</td><td>福井県鯖江市大倉町92丁目268-6495</td></tr></table></body> </html> まだ番号、氏名、住所がひとつずつずれています tableにはできないのでしょうか

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

> htmspecialchars() それは失礼しました、typoです 該当関数名を htmlspecialchars() に書きなおしてみてください

noname#197690
質問者

補足

すいません!自分も気がつきませんでした。 できました。 出来たのですが表示がおかしいです 番号や氏名や住所が二回表示されます 画面のソースをコピーしました <html> <body> <table border='1'> <tr> <th>番号</th> <th>氏名</th> <th>住所</th> </tr> <tr><td>0</td><td>4</td><td>番号</td><td>4</td><td>1</td><td>渡川 幹知</td><td>氏名</td><td>渡川 幹知</td><td>2</td><td>岩手県奥州市前沢区長根52丁目295-315</td><td>住所</td><td>岩手県奥州市前沢区長根52丁目295-315</td></tr></table></body> </html>

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

>ここでエラーがおき先に進めません で、どういうエラー?

noname#197690
質問者

お礼

ソ-スは <html> <body> <table border='1'> <tr> <th>番号</th> <th>氏名</th> <th>住所</th> </tr> <?php $id=(isset($_GET["id"]))?((int) $_GET["id"]):0; $con=mysqli_connect("localhost","root","admin","db_test"); $result = mysqli_query($con,"SELECT * FROM tbl_test where `番号`={$id}"); while($row = mysqli_fetch_array($result)) { print "<tr>"; foreach($row as $key=>$val) { print "<td>".htmspecialchars($key)."</td>"; print "<td>".htmspecialchars($val)."</td>"; } print "</tr>"; } print "</table>"; ?> </body> </html>

noname#197690
質問者

補足

Call to undefined function htmspecialchars() in C:\WWW\test\htdoes\exit.php on line 17 これです

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

もはや何がわからないのかわからないわ・・・ //shousai.php <html> <body> <table border='1'> <tr> <th>要素名</th> <th>値</th> </tr> <?PHP $id=(isset($_GET["id"]))?((int) $_GET["id"]):0; $con=mysqli_connect("localhost","root","password","db_test"); $result = mysqli_query($con,"SELECT * FROM tbl_test where `番号`={$id}"); while($row = mysqli_fetch_array($result)){ print "<tr>"; foreach($row as $key=>$val){ print "<td>".htmspecialchars($key)."</td>"; print "<td>".htmspecialchars($val)."</td>"; } print "</tr>"; } print "</table>"; } ?> </body> </html> 的なこと・・・前回例示したつもりだったんですが 手抜きで書いてあるので環境に合わせてこまかいバグがあるかもしれないので うまく調整してください

noname#197690
質問者

お礼

ありがとうございます foreach($row as $key=>$val){ print "<td>".htmspecialchars($key)."</td>"; print "<td>".htmspecialchars($val)."</td>"; } ここでエラーがおき先に進めません

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

あれ?わからなかったですか? echo "<table border='1'> <tr> <th>詳細</th> <th>番号</th> <th>氏名</th> <th>住所</th> </tr>"; while($row = mysqli_fetch_array($result)) { echo "<tr>"; echo "<td><a href=\"shousai.php?id=" . $row['番号'] . "\">詳細</a></td>"; echo "<td>" . $row['番号'] . "</td>"; echo "<td>" . $row['氏名'] . "</td>"; echo "<td>" . $row['住所'] . "</td>"; echo "</tr>"; } echo "</table>"; のような処理です。 なお$rowを表示する際はhtmlspecialchars()を入れた方がいいかもしれません。 あとは詳細表示するプログラム側で SELECT * FROM tbl_test where 番号=○○ となるようなSQL文を発行します ○○の部分は$_GETの値を参照しますがインジェクション対策で プリペアド処理などを入れたり、バリデートする必要があるかもしれません。 最終的に print "<table>"; while($row = mysqli_fetch_array($result)) { print "<tr>"; foreach($row as $key=>$val){ print "<td>".htmspecialchars($key)."</td>"; print "<td>".htmspecialchars($val)."</td>"; } print "</tr>"; } print "</table>"; のような処理で一覧を表示させます

noname#197690
質問者

お礼

ありがとうございます。 何度もすいません shousai.phpは何って書けばいいですか? 参考までにおしえてください

noname#197690
質問者

補足

クリックしたデータを表示されるにはどうしたらいいですか?

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

仕様がまったくわからないので、なんとなくこんな感じかと予想しつつ・・・ tbl_testのプライマリキーないしユニークなidを拾って レコードを表示する際に <a href="shousai.php?id=○○">詳細</a> でリンクを表示し、shousai.php側でidを元に詳細データを 表示する仕組みをつくる

noname#197690
質問者

お礼

すいません 番号 int プライマリーキー 氏名 varchar 住所 varchar 登録画面のソース <HTML> <HEAD><TITLE>新規登録</TITLE></HEAD> <BODY> <BLOCKQUOTE> <FORM ACTION = "insert.php" METHOD = "POST"> <BR><BR>登録画面<BR><BR> 番号 <INPUT TYPE="NAMBER" NAME = "ID"><BR><BR> 氏名 <INPUT TYPE="TEXT" NAME = "NAME"><BR><BR> 住所 <INPUT TYPE="TEXT" NAME = "ADDR"><BR><BR> <A HREF="http://localhost/top.php"> <INPUT TYPE = "SUBMIT" VALUE = "登録する"></A> <A HREF="http://localhost/top.php">一覧に戻る</A> </BODY> </BLOCKQUOTE> </FORM> </BODY> </HTML>

関連するQ&A