- ベストアンサー
PHP + MySQLを使用して詳細画面を開く
- PHP + MySQLを使用して一覧画面を表示する方法を教えてください
- 氏名をクリックしたら別ウィンドウで詳細画面を表示させる方法を教えてください
- 新規登録ボタンを押すと新規登録画面に遷移する方法を教えてください
- みんなの回答 (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} で削除することになります
その他の回答 (7)
- yambejp
- ベストアンサー率51% (3827/7415)
なんか噛み合ってないね 詳細がみたいんでしょ? だったら要素名と値を表示するんじゃないの? <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> そもそもテーブルの要素は「番号」と「氏名」と「住所」しかないの? だったら元ページで一覧表示しているんだから、わざわざ詳細出す意味ないでしょ?
お礼
ありがとうございます。 詳細を1件ずつ出してその画面からデータの更新や削除を行いたいので 番号、氏名、住所しかないです
補足
今 番号 氏名 住所 番号 10 氏名 あ 住所 い こんな感じに出ます
- yambejp
- ベストアンサー率51% (3827/7415)
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))
お礼
ありがとうございます <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)
> htmspecialchars() それは失礼しました、typoです 該当関数名を htmlspecialchars() に書きなおしてみてください
補足
すいません!自分も気がつきませんでした。 できました。 出来たのですが表示がおかしいです 番号や氏名や住所が二回表示されます 画面のソースをコピーしました <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)
>ここでエラーがおき先に進めません で、どういうエラー?
お礼
ソ-スは <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>
補足
Call to undefined function htmspecialchars() in C:\WWW\test\htdoes\exit.php on line 17 これです
- yambejp
- ベストアンサー率51% (3827/7415)
もはや何がわからないのかわからないわ・・・ //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> 的なこと・・・前回例示したつもりだったんですが 手抜きで書いてあるので環境に合わせてこまかいバグがあるかもしれないので うまく調整してください
お礼
ありがとうございます foreach($row as $key=>$val){ print "<td>".htmspecialchars($key)."</td>"; print "<td>".htmspecialchars($val)."</td>"; } ここでエラーがおき先に進めません
- yambejp
- ベストアンサー率51% (3827/7415)
あれ?わからなかったですか? 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>"; のような処理で一覧を表示させます
お礼
ありがとうございます。 何度もすいません shousai.phpは何って書けばいいですか? 参考までにおしえてください
補足
クリックしたデータを表示されるにはどうしたらいいですか?
- yambejp
- ベストアンサー率51% (3827/7415)
仕様がまったくわからないので、なんとなくこんな感じかと予想しつつ・・・ tbl_testのプライマリキーないしユニークなidを拾って レコードを表示する際に <a href="shousai.php?id=○○">詳細</a> でリンクを表示し、shousai.php側でidを元に詳細データを 表示する仕組みをつくる
お礼
すいません 番号 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>
お礼
つりじゃないです ありがとうございます。表示できました。 その画面からデータの編集を行いたいのですが、番号はそのままで氏名と住所だけ入力できるようにしたいのですがどこにどんな命令をいればいいと思いますか? 何度もすいません