- ベストアンサー
リンク表示方法について2
教えてgooやyahooオークションのように 一覧画面からタイトルをクリックした後、 各種データ(名前、コメント等)をDBから引っ張ってきたときの 詳細表示画面の表示方法は 当サイトにご教授頂き解決しました。 では、一覧画面からタイトルをクリックした時、 詳細画面を表示させる方法はどのように実現できているのでしょうか? これもDBから引っ張ってくる手法が取られているのでしょうか? ご教授のほどよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 URLを載せちゃうと、消されちゃうと思います。 det.phpで詳細を取得するSQLを生成していると思いますが、 今のSQLですと、全件取得です。 一覧表示のほうとSQLが同じです。 また、idに値を与えているのですが、それを受け取っていません。 No4の回答内容の一部ですが、もう一度見直してみてください。 == det.php $id = $_GET['id']; $sql = "SELECT * FROM SUBTABLE WHERE ID=$id"; $result = mysql_query ( $sql ); $rows = mysql_fetch_array ( $result ); まず、$id=$_GET['id']でURLの中からidの値を受け取ります。 受け取ったidを条件として1件取得するSQLを生成します。 WHERE句を使用して、取得するレコードの条件を決めます。 (ここが重要です)
その他の回答 (4)
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 一覧からタイトルをクリックして詳細のページに内容を表示する方法でしょうか? それでしたらdet.phpが詳細ページを表示するとして、 == 一覧表示PHP $sql = "";//一覧を取得するSQL $result = mysql_query ( $sql, $con ); while ( $rows=mysql_fetch_array($result) ) { // 取得した一覧を出力 print "<a href=\"det.php?id={$rows['ID']}\">{$rows['ID']}番のデータを開きます</a>\n"; } == det.php $id = $_GET['id']; $sql = "SELECT * FROM SUBTABLE WHERE ID=$id"; $result = mysql_query ( $sql ); $rows = mysql_fetch_array ( $result ); // $rowsに各カラムの情報が入っているのでHTML内に埋め込んで出力 ========================= こんな感じでidというものにキーとなるものを渡してあげて、 それを受け取り、SQLを生成して取得すればその一つの情報が取得できます。 (上のテーブル名やカラム名は適当に置き換えて下さい。) IDをキーとしてリンクを生成しているので実行してみればわかりますが、 <a href="det.php?id=0">0番のデータを開きます</a> <a href="det.php?id=1">1番のデータを開きます</a> ・ ・ ・ と言う感じのソースが出力されていると思います。 det.phpでそのidの値を取得して、レコードを取得し、表示します。 何か詳細ページ等を開く際は 1.キーとなるIDをURL引数に渡すか、POSTで渡す。 2.受け取ったキーを使い、その1件だけを取得するSQLを生成し情報を取得する
補足
ご回答ありがとうございます。 早速教えて頂いた情報を参考に、作成してみました。 しかし、 親記事から受け取ったキーにて小記事に1件のみ表示されるはずなんでが、 複数作成されてしまいます。 原因として、どこがわるいのでしょうか? ご教授のほどお願いします。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 そうですね。表面上の用途は違うかもしれませんが、やっていることは同じになります。 (掲示板として使っているか、QAのように使っているか) > ここの部分は絶対に覚えなさいという部分がありましたら、お教え頂けないでしょうか? DBを使って作るのであれば、まずは簡単な掲示板を作って勉強してみてはいかがでしょうか。 (簡単なというのはレス機能がなく、1つのメッセージ毎表示するようなタイプ) 登録、表示、管理機能(削除等)をつけて作ってみてください。 そうすると、新規記事登録の方法、表示の方法、削除の方法等がまずわかると思います。 上のものが完成したらレス機能のあるものを作ってみましょう。 これは一からではなく、上のものに機能追加を行います。 例えば、別テーブルでレスを持てば、親記事のIDをキーにして簡単に実現することが可能です。 (親記事の一覧を表示しながら、レステーブルからレスを取得し、レスの一覧を表示。) 例ですが(一部端折ってます) // 親記事を取得 $sql = "SELECT * FROM MAINTABLE"; $result = mysql_query ( $sql, $con ); while ( $mainMes=mysql_fetch_array($result) ) { // 整形しつつHTMLを生成して親記事を表示 // レス記事を取得 // 子記事機能(取得した親記事のIDを使用して子記事を取得する $sql = "SELECT * FROM SUBTABLE WHERE ID={$mainMes['id']}"; $resResult = mysql_query ( $sql, $con ); while ( $subMes=mysql_fetch_array($result) ) { // 整形しつつHTMLを生成して子記事を表示 } } こんな感じにすると、親記事と子記事(レス)表示機能を持ったものになります。 // 子記事機能 の部分が無ければ最初の親記事のみ表示できる掲示板です。 何か難しそうなことをやっていても多くの場合は基本的な事の組み合わせになっています。 それをいかに発想できるかでしょうか。 難しく考えると意外と進まないものです。発想の転換も大切です。 参考URL先のを見ましたが、クラスを作って使用しています。 (いわゆるオブジェクト指向的な作り方) いきなりだと厳しいかもしれません。 ソースは読みやすいのですが、いきなりでは読解していくのは難しいかもしれません。 まずは、簡単なものを作ってみて、そこからレベルアップにチャレンジしていってみてはいかがでしょうか。 いきなり大きいものを作ろうとしても行き詰まって作るのがいやになってしまうかもしれません。 是非、がんばって下さい。
補足
ご回答ありがとうございます。 >DBを使って作るのであれば、まずは簡単な掲示板を作って勉強してみてはいかがでしょうか。 >(簡単なというのはレス機能がなく、1つのメッセージ毎表示するようなタイプ) はい。こちらにつきましては作成したことがあります。 >上のものが完成したらレス機能のあるものを作ってみましょう。 >例えば、別テーブルでレスを持てば、親記事のIDをキーにして簡単に実現することが可能です。 >(親記事の一覧を表示しながら、レステーブルからレスを取得し、レスの一覧を表示。) 別テーブル方法はまだ作成したことがありませんでしたので、 実施してみたいと思います。 しかし、やはりリンクの問題はどのように解決するのか不明です。 例えば、小記事にてメールアドレスへリンクを貼るページを作成する場合、 サブテーブルにありますメールアドレスへ下記のようにリンクを貼れば解決しますが、 $sql = "SELECT * FROM subtable ORDER BY id DESC"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { echo "<hr>"; if (!is_null($row["g_mail"])) { echo "<a href=\"mailto:".$row["g_mail"]."\">" .cnv_dispstr($row["g_name"])."</a>"; } 親記事にある小記事へリンクが貼られているタイトルをクリックしたとき、 小記事のページを出力させるための方法がわかりません。 $sql = "SELECT * FROM guestdata ORDER BY id DESC"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { echo "<hr>"; if (!is_null($row["g_mail"])) { echo <a href=?????>?????</a>; ?????の部分は具体的にどのようになるのでしょうか? よろしくお願いします。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 具体的なスクリプトといっても、テーブルの構造はわかりませんし、 方法はいろいろな方法があるので難しいです。 やってることとしては、URLにIDを埋め込み、そのIDを受け取る。 受け取ったIDを使用して取得用のSQLを生成。 そのSQLを使用して情報を取得。 取得した情報を元に回答、補足を取得 (回答数分のループを行い表示を行う) (補足を同時に取得しているかもしれません。そこはテーブル構造とSQLの使い方次第?) 流れはこんな感じです。 同じようなことをやってる物は多いと思いますが、なかなかDBを使った物で参考になるような スクリプトはないかもしれません。 DBを使っていない(テキストファイル)ものだったらあるかもしれません。 やってることは掲示板の記事表示(レスつき)と同じようなものなので掲示板スクリプトを 探してみるといいかもしれません。 (やはりDBのはなかなかありません)
補足
ありがとうございます。 すると、下記のようなサイトになるのですね。 下記はphp+mysqlです。 http://www.kenjiweb.com/?mode=bbs#dbbbs しかし、ソースをみていると、 一筋縄では覚えられそうにないですね。。 先は長そうです。 もしよろしければ、 ざっとでいいのですが、 ここの部分は絶対に覚えなさいという部分がありましたら、お教え頂けないでしょうか? よろしくお願いします。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 その通りだと思います。 タイトルのリンク先はkotaeru.php3?q=xxxxxxxとなっていると思います。 xxxxxxxの数字がキーになっていてそれを元に質問内容、タイトル等 表示されているものをDBより取得し、表示しています。
補足
ご回答ありがとうございます。 お手数ですが、具体的なスクリプト、もしくは参考URLを教えて頂けないでしょうか? 当方、調べ方がわるいのか参考となるものをみつけられませんでした。 よろしくお願いします。
お礼
こんにちは。 No.4の設定を入れたつもりだったのですが、 反映されておりませんでした。 これでようやくスタート地点に立てたという感じです。 長い間どうもありがとうございました。