詳細データを常に同一スペースに表示する方法

このQ&Aのポイント
  • PHP+MySQLで商品データの表示ページを作りたいと考えています。データベースには最低限下記のデータがあるという前提です。「商品別番号、カテゴリ名、商品名、価格、画像ファイル名」
  • 理想は、一つの画面内に1.カテゴリ一覧表示2.(↑のカテゴリ一覧からどれかを選択(クリック)した際)そのカテゴリに属する商品名のみを10件表示 ※10件以上ある場合は「次ページ」等のリンクを表示3.(↑の商品名のどれかを選択(クリック)した際)該当商品の詳細表示をすることです。
  • 購入したPHPの参考書では、1.と2.を同一ページで表示するスクリプトはありましたが、3.に関しては詳細表示だけの別画面へ遷移させる仕組みになっていました。これを2.で表示される商品名のどれかをクリックすると、同一ページ内の詳細表示部にその商品のデータが表示される(=詳細表示部の内容だけが切替わっていく)ようにしたいのですが、どの様な方法が考えられるでしょうか?
回答を見る
  • ベストアンサー

詳細データを常に同一スペースに表示する方法

PHP+MySQLで商品データの表示ページを作りたいと考えています。 データベースには最低限下記のデータがあるという前提です。 「商品別番号、カテゴリ名、商品名、価格、画像ファイル名」 理想は、一つの画面内に 1.カテゴリ一覧表示 2.(↑のカテゴリ一覧からどれかを選択(クリック)した際)  そのカテゴリに属する商品名のみを10件表示 ※10件以上ある場合は「次ページ」等のリンクを表示 3.(↑の商品名のどれかを選択(クリック)した際)  該当商品の詳細表示 をすることです。 購入したPHPの参考書では、1.と2.を同一ページで表示するスクリプトはありましたが、3.に関しては詳細表示だけの別画面へ遷移させる仕組みになっていました。 これを2.で表示される商品名のどれかをクリックすると、同一ページ内の詳細表示部にその商品のデータが表示される(=詳細表示部の内容だけが切替わっていく)ようにしたいのですが、どの様な方法が考えられるでしょうか? イメージは↓の様な感じです。 ┌――――――┬―┐ │  ** 3 ** │*1*│ │(詳細表示を │ │ │  切り替え) │ │ ├――――――┴―┤ │   ** 2 **   │ └────────┘ 今、自力で考えている方法は、フレーム分割して上記「3」の部分に詳細表示用スクリプト(例:syousai.php)を固定し、そこに選択された商品のデータを渡す事ですが…。 勉強し始めのため、色々考えていて頭の中がごちゃごちゃになってきております。 フレームを使わない方法や、根本の考え方が間違っている等々、色々なご意見、ご教示を頂けるととても有り難く存じます。どうぞ宜しくお願い致します。 ※参考書のスクリプトは http://www.nishi2002.com/demo/6/shop.php?cateid=2 です

  • fou
  • お礼率93% (41/44)
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • taskuni
  • ベストアンサー率71% (49/69)
回答No.1

フレームを使わない場合の構造を少し。 ・とりあえず、表示用phpの名前は、「display.php 」とします。 ・商品DBと、カテゴリDBを作ります。 ・商品DB:商品別番号(ユニーク),カテゴリID,商品名,価格,画像ファイル名 ・カテゴリDB:カテゴリID(ユニーク),カテゴリ名 のような感じ。 ↓display.php の中身 <? // カテゴリ表示部 カテゴリ一覧表示のタグを生成して変数 $catlist_htmlに代入。 各カテゴリのリンク先は「display.php?cat_id=xx」の様な感じにする。 (xxは、各カテゴリにつけられたユニークなID) // カテゴリ内商品表示部 $_GET['cat_id'] の値を取得して、商品DBから絞込み 商品一覧表示のタグを生成して変数 $itemlist_htmlに代入。 各商品のリンク先は「display.php?cat_id=xx&item_id=yy」の様な感じにする。 (xxは、$_GET['cat_id'] の値) (yyは、各商品につけられたユニークなID) // 商品表示部 $_GET['item_id'] の値を取得して、商品DBから商品データ選択 商品詳細のタグを生成して変数 $itemdetail_htmlに代入。 ?> <html> <body> <? echo $catlist_html; ?> <? echo $itemlist_html; ?> <? echo $itemdetail_html; ?> </body> </html> とりあえずこんな感じで表示したい物が出るかどうか やってみてはどうでしょう。 レイアウトは後からどうにでもなると思います。

fou
質問者

お礼

早速ご回答いただき大変ありがとうございます。 まさにtaskuniさんが示されたような方法を求めていたと言っても過言ではありません。 自分の頭の中では実現しそうな構造のイメージは湧くのですが、具体的な方法(構造)が思い浮かばず困っておりました。 フレームは個人的にもあまり使いたくありませんでしたし、まずはアドバイス頂いた全体の構造(骨組み)を元に、実際のスクリプトを作っていきたいと思います。 PHPもMySQLもまだまだ初歩の初歩段階で、勉強しながら作ることになるため、結果のご報告がかなり遅くなると思いますが、とりあえず無事作れることを祈りつつまたご報告しに来たいと思います。 ご丁寧な回答をいただき本当にありがとうございました。

関連するQ&A

  • データ(表示)が切り替わってしまう

    以前「http://okwave.jp/kotaeru.php3?q=1862189」で質問させていただき、時間がなく、やっと実作業に移ったところの者です。 ■目的:MySQLを使い、「カテゴリ一覧表示」「(カテゴリorキーワード)検索結果一覧表示」「商品詳細表示」を一画面の中で行う。 ・前回ご回答頂いた内容では、それぞれの結果を変数に代入し、表示するということでしたが、参考にしている書籍では関数の中に表示処理も含んでいたので、そのまま利用してみました。 しかし、「カテゴリ一覧」は常に表示されるものの、「検索結果一覧表示」の中から一つの商品のリンクをクリックすると、「検索結果一覧表示」が消え、その代わりに「商品詳細表示」が現れる状態となります。 一つの画面に『検索結果一覧+カテゴリ一覧』か『商品詳細+カテゴリ一覧』がある状態です。 自分でも解決策を探し続けますが、並行して、もしも原因がお解かりになる方がおられましたら、何卒ご教示のほどよろしくお願いいたします。 // ページ内容の表示(switchで切り分け*↓一部) switch ($act) { default: // 商品検索画面 gamen_src(); //サブルーチン定義 ■function gamen_src() {  ・フォームデータ変換  ・テーブルの中に下記パーツを配置。   ・<?php dispprod(); ?>(商品詳細表示)   ・<?php dispall(); ?>(検索結果一覧)   ・<form>を使用し商品検索窓+ボタン   ・<form>を使用しかごの中身を表示   ・<?php dispcate(); ?>(カテゴリ検索(一覧表示)) ※文字数制限により「■function dispprod() 」「■function dispcate()」「■function dispall()」を省略していますが、回答補足にて明記させていただきたいと思います。どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP+CSVを使った一覧表示&詳細表示をするには?

    PHPは全くの素人でどのようにやったらよいかわかりません。 fgetcsvは何となくわかって単純なCSVデータを表示はできたのですが、そのデータを使って一覧表示では、データの主要部分を表示させ、『詳細』はこちらを選択すると、選択した1つのデータの主要部を含めた残りのデータを表示させたい。 ***CSVデータ例**** Aさん,20代,男性,映画鑑賞,コメント,写真または画像 Bさん,30代,男性,スポーツ,コメント,写真または画像 ***HTML一覧表示例*** ┌────┬───┬──┬────┐ │ 【詳細】│20代│男性│映画鑑賞│ ├────┼───┼──┼────┤ │ 【詳細】│30代│男性│スポーツ│ └────┴───┴──┴────┘ ***HTML詳細表示*** 詳細を選択されたデータのみの全データをテーブル内のの指定されたセルに配置したい。 こんな事をしたいと思うのですが、簡単な方法はないでしょうか?お知恵をお貸しください。

    • ベストアンサー
    • PHP
  • PHPでグリッドのような表示

    PHPとPostgresでシステムを作っています。 検索をして一覧を表示させ、一覧の一つを選択すると 選択した情報についての詳細が表示されるような ページを作りたいのですが、  フレームとJAVAScriptは使用せずに、選択した情報の詳細をスクロールさせずにいつでも見れて、 なお検索された一覧も項目列毎に揃えて(1行には複数の項目があります) PHP(HTML)で表示させるのにスマートな方法はありますでしょうか?  一覧のほうは複数コンボボックスのようにして中で スクロールさせようと考えましたが項目毎に揃える方法が思いつきません。お力を貸していただけると幸いです。

    • ベストアンサー
    • PHP
  • CSVデータを使ったページングとソート

    phpをやり始めて3ヶ月くらいですが、高度な事がまだまだわかりません。どなたかお知恵を拝借願えないでしょうか? fgetcsvを使って一覧表示をしidからそのデータの詳細をsyousai.phpへ送って表示するようにしています。 この一覧表示にページングとソート機能をつけたいのですが、どうやったらよいかわかりません。 <? $fname = "list.csv"; $file = fopen($fname, "r"); while (list( $data0, $data1, $data2, $data3, $data4) = fgetcsv($file, 1000, ",")) { ?> <table> <tr> <td> <form action="syousai.php" method="get" name="code"> <a href="syousai.php?id=<? echo $data0;?>" name="id">詳細</a> </form> </td> <td>番号:<? echo $data0;?></td> <td>名前:<? echo $data1;?></td> </tr> </table> <? } ?> <? fclose($file); ?> と、言うようなソースです。 こんなやり方でいいのかも不明ですがこの中にページングとソートの機能を追加したいと思っています。

    • ベストアンサー
    • PHP
  • submitして表示されるページをフレーム分割

    perl-CGIを使ったシステムです。 フレーム上下分割したページで、上のフレームにリストボックスにカテゴリがA・B・Cがあり、どれかを選択して実行ボタン(SUBMIT)をクリックすると、下のフレームに選択カテゴリのデータを抽出し一覧表が表示されるようにしています。ここまでは出来ているのですが、 これと全く別のページ、例えばindexページに、「カテゴリを選択して下さい。A、B、C」みたいなリンクがあって、Aをクリックすると、先に書いた、上下分割のページが表示され、下のフレームにはAの抽出一覧が表示される・・・という様にするにはどうしたらよいのでしょうか? indexでAを選択すると、Aの抽出一覧、つまり下のフレーム部分のみが表示されるページをつくることは出来ますが、それじゃ次に別のパラメータで再検索するということが出来ないので、どうしても最初に述べたフレーム上下分割したページにしたいのです。

    • ベストアンサー
    • Perl
  • DBでデータ取得後の画面の再表示方法

    こんにちは。 現在PHP+MySQLで検索画面を作成しています。 検索項目にIDを入力し「検索」ボタンを押下すると、該当データがあれば、一覧を検索画面と同画面(検索TextBoxの下)に一覧表示しようと思っています。フレームは使っていません。 検索ボタン押下後、SQL発行しデータ取得までは上手くいっているのですが、画面の再表示が上手くいきません。 調べたところ Header("Location: http://~~~~.php"); や require("http://~~~~.php") で実現出来そうですが駄目でした。 ご存知の方アドバイスお願いします。

    • 締切済み
    • PHP
  • データを呼び出して表示させる方法

    趣味でホームページを作っているのですが、すべてhtmlとcssを使って作成していました。 最近になってphpの存在を知り、サイドバーなど全ページに共通する部分をphp化し、その便利さに感動しました。 今度は複数の記事(といっても各5行程度)にタグを付けて、カテゴリー別に呼び出せるようにしたいと思っています。 今はhtmlでページを1つづつ作っているのですが、ページ数が増えれば増えるほど手直しがとても大変で、しかも途中のページから1つ記事を削除するとそこだけ記事数が減ってしまい、それを直すのに一苦労します。 なので、ブログのように[カテゴリー1]をクリックするとそれだけが一覧表示され、10個ごとに次のページが表示されるような仕組みを作りたいです。 このようなものを作る場合、phpだけで出来るのでしょうか? それともデータベースのようなものを作る必要があるのでしょうか? 今までhtmlしか知らなかったので、何を勉強すればいいのか分からず困っています。 本を買ってもどれを使えば私のしたいことが出来るのか分からずお手上げ状態です。 よろしくお願いします。

  • 親子データの一覧表示サンプルありませんか?

    作りたい物のイメージだけが先行し、知識が追いつかずに困っているPHP初心者です。 どうも全体を意識して作ろうとすると行き詰まってしまうので 小さな括りで部分的な処理を作ろうとしたのですが、ここでも困ってしまいました。 どうか皆さんのお知恵をお貸し下さい。 ここでの処理とは親データの一覧の一つを選択するとそれに対する従属データが一覧表示されるもので 例えば上段の一覧にある複数の中から一つの「店舗」を選択すると 同一ページ下段の領域にその「会員」データが一覧表示されるといったものです。 (環境:PHP⇔mySQL) 記事を検索すると近い質問があり、回答もあるのですが どうも具体的なコードがイメージできずサンプルをご紹介頂きたいのです。 (記事:http://oshiete1.goo.ne.jp/qa1862189.html) いくつかの記事を読むと基本的なものなので参考書などには サンプルが載っているとのことでしたが、少なくとも手持ちの本には 近いものがなく、またそれを探しに本屋を探すには現状を考えると 時間がかかりすぎるのでここでの質問に至りました。 またできることならデータの表示先「html」ファイルと処理の「PHP」とを分けたいのですが、 このケースでは可能なのでしょうか? サンプル、参考ページリンク、役立つ書籍などどれでも結構ですのでご紹介だけでもして頂けると助かります。 よろしくお願い致します。

    • 締切済み
    • PHP
  • カテゴリ毎の記事件数表示

    PHPとMySQLを使用しています。 ブログなどで、カテゴリ毎にそのカテゴリに登録されている記事件数がカテゴリ横に表示されているケースがあります。 (「カテゴリ名(15)」←のようなものです) それと同じことをしたいのですが、 ―――――――――― $sql = "SELECT COUNT(cateid) AS cnt FROM prod GROUP BY cateid order by cnt"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); $numrow = mysql_fetch_array($res, MYSQL_ASSOC);   while($numrow){   echo $numrow["cnt"];   } カテゴリid毎にレコード数をカウントして、それを配列で受けて表示する ―――――――――― という流れのつもりなのですが、上記スクリプトの「while~」部分がない場合は、1つのカテゴリidの登録数のみが表示され、他のカテゴリidは表示されず、「while~」を加えるとPCがフリーズしました。 熟考できていないのですが、何かヒントや上記スクリプトの間違いなどを ご指摘いただけると大変有り難く存じます。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • FORMでデータを渡す

    アーティストのデータベースを作っています。 formを使いデータを渡すことは成功しているのですが・・・ <FORM name="form1" method="post" action="syousai.php"> サザンオールスターズ詳細画面へ<BR> <INPUT type="submit" name="search_key" value="<?=$rs['id']?>"> submitでボタンをクリックすると詳細ページへ飛んで詳細画面を自動生成させています。 アーティストごとにそれぞれIDをセットしているのですが、そのIDをsyousai.phpに渡して詳細画面を作っています。(そのIDからデータベースに検索をかけて探して表示する。) 「サザンオールスターズ」をクリックしたらサザンの詳細ページを表示するようにしたいのですが、今はアーティストごとのIDの書かれたボタンをクリックしたときだけ詳細画面へ飛ぶようにしかできません。 そこで質問なのですが、valueは2つ設定できるのでしょうか?? ボタンの名前はサザンで、POSTするデータはIDにしたいんです。 とても説明がへたですみません>< 初心者です。 ご協力お願いいたします。

    • ベストアンサー
    • PHP