• ベストアンサー

リンク表示方法について2

教えてgooやyahooオークションのように 一覧画面からタイトルをクリックした後、 各種データ(名前、コメント等)をDBから引っ張ってきたときの 詳細表示画面の表示方法は 当サイトにご教授頂き解決しました。 では、一覧画面からタイトルをクリックした時、 詳細画面を表示させる方法はどのように実現できているのでしょうか? これもDBから引っ張ってくる手法が取られているのでしょうか? ご教授のほどよろしくお願いします。

  • PHP
  • 回答数5
  • ありがとう数2

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.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句を使用して、取得するレコードの条件を決めます。 (ここが重要です)

rapid6
質問者

お礼

こんにちは。 No.4の設定を入れたつもりだったのですが、 反映されておりませんでした。 これでようやくスタート地点に立てたという感じです。 長い間どうもありがとうございました。

その他の回答 (4)

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

こんにちは。 一覧からタイトルをクリックして詳細のページに内容を表示する方法でしょうか? それでしたら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を生成し情報を取得する

rapid6
質問者

補足

ご回答ありがとうございます。 早速教えて頂いた情報を参考に、作成してみました。 しかし、 親記事から受け取ったキーにて小記事に1件のみ表示されるはずなんでが、 複数作成されてしまいます。 原因として、どこがわるいのでしょうか? ご教授のほどお願いします。

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

こんにちは。 そうですね。表面上の用途は違うかもしれませんが、やっていることは同じになります。 (掲示板として使っているか、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先のを見ましたが、クラスを作って使用しています。 (いわゆるオブジェクト指向的な作り方) いきなりだと厳しいかもしれません。 ソースは読みやすいのですが、いきなりでは読解していくのは難しいかもしれません。 まずは、簡単なものを作ってみて、そこからレベルアップにチャレンジしていってみてはいかがでしょうか。 いきなり大きいものを作ろうとしても行き詰まって作るのがいやになってしまうかもしれません。 是非、がんばって下さい。

rapid6
質問者

補足

ご回答ありがとうございます。 >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)
回答No.2

こんにちは。 具体的なスクリプトといっても、テーブルの構造はわかりませんし、 方法はいろいろな方法があるので難しいです。 やってることとしては、URLにIDを埋め込み、そのIDを受け取る。 受け取ったIDを使用して取得用のSQLを生成。 そのSQLを使用して情報を取得。 取得した情報を元に回答、補足を取得 (回答数分のループを行い表示を行う) (補足を同時に取得しているかもしれません。そこはテーブル構造とSQLの使い方次第?) 流れはこんな感じです。 同じようなことをやってる物は多いと思いますが、なかなかDBを使った物で参考になるような スクリプトはないかもしれません。 DBを使っていない(テキストファイル)ものだったらあるかもしれません。 やってることは掲示板の記事表示(レスつき)と同じようなものなので掲示板スクリプトを 探してみるといいかもしれません。 (やはりDBのはなかなかありません)

rapid6
質問者

補足

ありがとうございます。 すると、下記のようなサイトになるのですね。 下記はphp+mysqlです。 http://www.kenjiweb.com/?mode=bbs#dbbbs しかし、ソースをみていると、 一筋縄では覚えられそうにないですね。。 先は長そうです。 もしよろしければ、 ざっとでいいのですが、 ここの部分は絶対に覚えなさいという部分がありましたら、お教え頂けないでしょうか? よろしくお願いします。

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

こんにちは。 その通りだと思います。 タイトルのリンク先はkotaeru.php3?q=xxxxxxxとなっていると思います。 xxxxxxxの数字がキーになっていてそれを元に質問内容、タイトル等 表示されているものをDBより取得し、表示しています。

rapid6
質問者

補足

ご回答ありがとうございます。 お手数ですが、具体的なスクリプト、もしくは参考URLを教えて頂けないでしょうか? 当方、調べ方がわるいのか参考となるものをみつけられませんでした。 よろしくお願いします。

関連するQ&A

  • リンク表示方法について。

    ヤフーオークションや教えてgooでは、 DBから引っ張ってきたと思われる一覧情報の中の 個別個別のタイトルにリンクが貼られておれますが、 これはどのようなスクリプトにて実施できているのでしょうか? そもそも、データベースの内容をテーブルにて出力したとして、 それ自体にリンクを貼るということは可能なのでしょうか? でなければ、ほかの手法が取られているのでしょうか? どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • ブログのコメント表示

    はじめまして~。 先週からgooでブログを始めました。 一つどうしてもわからないことがあって、こちらにお邪魔させていただきました。 他の方のブログを拝見させていただくと、掲載記事の下に大きく【コメント一覧】が表示されているものがあります。(私のブログは、わざわざ「コメント」をクリックしないと開きません) できれば、クリックしなくても、いつでもコメント欄が表示されているようにしたいのですが、どのようにすればいいのでしょうか? ご存知の方、教えて下さい。よろしくお願いいたします♪

  • フォルダの表示方法について

    右クリック→「表示」→「縮小版」「並べて表示」「一覧」…などフォルダの表示の種類を選べると思うんですが。 自分は「詳細」が好きなのでほとんどのフォルダを詳細表示に設定しておくんですが、いつの間にか他の表示方法になってしまっています。 設定などでどうにかなるものですか?

  • ファイル-概要-コメントの取得

    ファイルを右クリック-プロパティでファイルのプロパティ画面を開くと、「概要」タブに各種情報が表示されます。 ここで、「説明」-「コメント」の部分に表示されている値を取得したいのです。 FileSystemObjectでFileオブジェクトを取得し、プロパティを見てみましたが、それらしいものはありませんでした。 実現方法がありましたらご教授願います。 Win2000 SP4 + VB6.0 SP6

  • 同一ページ内での画像同士のリンク

    ヤフーオークション等の 商品詳細画面で、小さい画像が三つくらい表示されています そのどれかをクリックするとクリックした画像が 下面に大きな画像で表示されるといった具合なのですが・・・ この画像の表示方法をHPに引用の際 どのようにしたら良いのでしょうか? ググッて調べてみたのですがわかりません。

  • エクスプローラの“表示”を毎回変えないで済む方法はないでしょうか?

    私は,Windowsのエクスプローラでファイルを探すときは右クリックメニューの“表示”で“一覧”にして探すようにしています. しかしエクスプローラを開きなおす度に,右クリックで“一覧”にしなければならず,非常にめんどくさい想いをしています. もしデフォルトで表示設定を“一覧”にできる方法があれば非常に助かります. ご存知の方がいらっしゃいましたらぜひご教授ください. よろしくお願いします.

  • ホームページで、クリックすると画面全体が黒くなって画像を表示させる方法

    ホームページで、例えば小さい画像をクリックすると 画面全体が黒くなり、中央に詳細の画像が表示される手法が最近多く見られます。 ◇http://www.meitetsumza.com/b1f/ ※中央付近の「フロアマップを拡大」をクリックします 上記の手法の名称がわからず、ぐだぐだな説明になってしまいましたが 是非知りたいのでよろしくお願いします。

    • ベストアンサー
    • Java
  • リンクが表示されない・・・

    リンクをクリックしたときに別の画面が開いて表示されるときがありますよね? そのときにカチッという音がするだけで何も表示されないときがあります。 前はそんなことはなかったのに・・・ でもその場合シフトを押しながらクリックするとちゃんと表示されます 直す方法はありませんか?

  • ■早急に回答ほしいです■画像が表示されない

    先ほど、Yahoo!オークションへ出品したのですが 画像を載せて出品後、一覧で見ると「画像あり」の状態になります。 クリックして詳細を見ると画像はちゃんと表示されています。 今までちゃんとできていたので、なぜこうなっているのかサッパリわかりません。

  • クリックできてしまう部分をコピーしたい。

    たとえば、ヤフーオークションの画面から「NIKON D3200」と打ち込み検索すると、各出品者の商品タイトル一覧が表示されます。この画面から、ある出品者のタイトル部分の文字列 「D3200」をコピーして、ワードに貼り付けたい場合、クリックすると商品詳細ページに飛んでしまいます。クリックできてしまう部分をコピーしたい場合、どのように操作したらいいのでしょうか? 環境はWindows8.1です。インターネットエクスプローラーとグーグルプラウザで、操作方法が違う場合、どちらも教えてほしいのですが? よろしくお願いします。

専門家に質問してみよう