- 締切済み
親子データの一覧表示サンプルありませんか?
作りたい物のイメージだけが先行し、知識が追いつかずに困っているPHP初心者です。 どうも全体を意識して作ろうとすると行き詰まってしまうので 小さな括りで部分的な処理を作ろうとしたのですが、ここでも困ってしまいました。 どうか皆さんのお知恵をお貸し下さい。 ここでの処理とは親データの一覧の一つを選択するとそれに対する従属データが一覧表示されるもので 例えば上段の一覧にある複数の中から一つの「店舗」を選択すると 同一ページ下段の領域にその「会員」データが一覧表示されるといったものです。 (環境:PHP⇔mySQL) 記事を検索すると近い質問があり、回答もあるのですが どうも具体的なコードがイメージできずサンプルをご紹介頂きたいのです。 (記事:http://oshiete1.goo.ne.jp/qa1862189.html) いくつかの記事を読むと基本的なものなので参考書などには サンプルが載っているとのことでしたが、少なくとも手持ちの本には 近いものがなく、またそれを探しに本屋を探すには現状を考えると 時間がかかりすぎるのでここでの質問に至りました。 またできることならデータの表示先「html」ファイルと処理の「PHP」とを分けたいのですが、 このケースでは可能なのでしょうか? サンプル、参考ページリンク、役立つ書籍などどれでも結構ですのでご紹介だけでもして頂けると助かります。 よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hrm_mmm
- ベストアンサー率63% (292/459)
>一覧で特定の親データを選択したタイミングで phpのみで処理するなら、ここで、一旦サーバーへ送信しなければなりませんので、 親データの一覧をSQLで取得して、ループ処理しつつ、送信用のタグ埋め込みを行う必要があります。 // 一覧表示&radioボタン付きフォーム表示用関数 // param $sql_result= mysql_query('select '); SQLの select文実行後の返値を入れる、エラーチェック済みのこと // param $script : 実行中のphpスクリプト名 // param $hidden : 次のデータ絞り込み時に再度利用する既知のデータを input type='hidden' で埋め込む文字列 // param $radio_colum : radioボタン設置カラム番号 0開始 function radio_table_show($sql_result, $script, $hidden, $radio_colum){ $rowcnt = mysql_num_rows( $sql_result); print <<<EOD <form action="$script" method="post"> $hidden <table border="1"><caption>${rowcnt}件を表示します</caption> <tr><th>row count</th> EOD; $flen = mysql_num_fields ( $sql_result); for($i=0; $i<$flen; $i++ ){ print '<th>' . mysql_field_name($sql_result, $i) . '</th>'; } if( $radio_colum >=0 && $radio_colum<$flen ){ $radio_field = mysql_field_name($sql_result, $radio_colum); }else{ $radio_field = ""; } print "</tr>\n"; $j=0; while($row= mysql_fetch_row($sql_result)) { $j ++; print "<tr><td> $j </td>\n"; for($i=0; $i<$flen; $i++ ){ $val = htmlspecialchars($row[$i]); if($i == $radio_colum){ print " <td><input type='radio' name='$radio_field' value='$val'>$val</td>\n"; }else{ print " <td> $val </td>\n"; } } print "</tr>\n"; } print "</table><br><input type='submit' value='next'></form>\n"; } --------------------- >その従属データを抽出・一覧表示する もう一度、ページ全体をphpから出力しつつ、従属データの表示も行う。 送信されてきたデータからsql文さえうまく作れば、上記関数を使い回し可能。
- hrm_mmm
- ベストアンサー率63% (292/459)
webにしろ参考書にしろ、サンプルっていうのはだいたい機能的に部分的解説なので、組み合わせる力量がないと、それだけで完成にこぎ着けるのは難しいでしょう。 >親データの一覧の一つを選択するとそれに対する従属データが一覧表示 此一つについても、もっと細かく砕いてどこまで出来ているのかが問題です。 0.まず、htmlにおけるフォーム記述の基本文法くらいは理解している前提で 1.phpで、フォームデータのやりとりが出来ているのか? 2.MySQLにデータベースは構築できているのか? 3.phpからMySQLのデータベースにアクセス出来ているのか OS名とか、サーバーアプリ名とか、php version、MySQL versionで微妙に違うので、これらを抜きにサンプル提示しても動かないことが多い XAMPPなどをインストールしているならば、手軽にクリア出来そうだけど。 4.MySQLでの、selet文の記述法は、理解できているのか。 5.MySQLから受け取ったデータがどんな状態で受け取れているのか(配列とかハッシュとか)の理解は出来ているのか。 6.一覧表示にもいろいろあるが、配列データの表示にはループ処理が不可欠 この手順で、どのあたりで躓いているのでしょうか? >データの表示先「html」ファイルと処理の「PHP」とを分けたい データ表示のためには、phpで表示が不可欠ですけど? 表示用phpにおいて、処理用(関数のみ記述したphpファイル)をincludeして処理呼び出しすると言う方法がよく使われるのでは。 上記の各処理部分に該当するサンプルを、それぞれ関数として書き直して、呼び出し出来ればなんとか完成ってとこでしょうか。 7.phpの関数における、引数でのデータ受け渡し、関数からの戻り値の受け取りも理解できてますよね?
補足
だいぶ前提となる部分を省いてしまいご迷惑をおかけしました。 確認項目として挙げられた点を補足します。 まず私が作りかけているものはgoogleMapを使ったコミュニティツールで ページ上にgoogleMapを配置し、利用者によって地図に印されたマーカーの位置情報および フォームから入力してもらったその場所の説明等の情報をPHPを介して DBへ保存、再度アクセスしたとき呼び出して表示するというものです。 現状では情報の保存、呼び出しの基本的な部分は作成済みなので SQLを用いたデータ処理用PHPは使っていてある程度理解しているのですが いざ登録したデータを一覧表示しようとしたら表示系でPHPを使うのは初めてだったためそのやり方で躓いてしまったというわけなのです。 所有している書籍には抽出データの表示の仕方としてループ処理を説明しているので 同じようにただデータを羅列するだけならできると思いますが、 問題は動的な動作をする一覧をgoogleMapやフォームと一緒に表示するやり方、 一覧で特定の親データを選択したタイミングでその従属データを抽出・一覧表示するやり方がイメージできずに二の足を踏んでいる状態です。 とりあえずやりたいこととは切り離して親子データが連動する部分だけでもできたなら先に進めるかもしれないと質問しました。 どなたかよろしくお願い致します。
お礼
サンプルありがとうございます。 折角なので「無事できました」と言いたく自分なりに試してみたのですが どうにも具体的な使い方、組み込み方がわからず現状解決に至っていません。 申し訳ないです... 他でもサンプルを探しつつ、地道に調べてやってみます。