PHP+CSVを使った一覧表示&詳細表示の方法とは?

このQ&Aのポイント
  • PHPを使用してCSVデータを一覧表示し、詳細表示する方法について教えてください。
  • CSVデータを取得し、一覧表示では主要なデータを表示し、詳細表示では選択したデータの全ての情報を表示する方法を教えてください。
  • 初めてPHPを使用してCSVデータを扱うため、簡単な方法やおすすめの手法があれば教えてください。
回答を見る
  • ベストアンサー

PHP+CSVを使った一覧表示&詳細表示をするには?

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

  • PHP
  • 回答数1
  • ありがとう数3

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

  • ベストアンサー
  • gonagona
  • ベストアンサー率80% (12/15)
回答No.1

こんにちは。 GETで渡してみてはいかがでしょうか? まずCSVデータの各行の初めの列にコード(型番など)を 挿入し、詳細ページではそのコードにマッチしたもののみ 表示させるという仕組みです。 ■一覧表示ページ |<a href="detail.php?code=XXX">【詳細】</a>|20代|男性| ■詳細表示ページ <?php $code = $_GET['code']; //?code=で渡されたコード名を取得 $fp = fopen("●●●.csv", "r"); while ($data = fgetcsv($fp, 10000)) { if ($data[0]==$code) { //コードが合致したら print <<<HTML <table> <tr> <td>$data[0]</td> <td>$data[1]</td> <td>$data[2]</td> 以下略) </tr> </table> HTML; } } ?> 「?●=XXX」がミソになるかと思います。

nazezo
質問者

お礼

あ~なるほど!という適切なアドバイスを頂きありがとうございました。うまく動作しました。

関連するQ&A

  • PHPとCSVの表示 もっとスマートにしたい

    現在PHPに手を出し始めた初心者です まだ分からない事だらけですが、できれば教えてください CSVファイルからデータを読み込んで表示するということを 苦戦しながらやっております ただ、1つのPHPファイルだけでの表示方法がわからず、今は3つのPHPファイルにしています 目的は大区分を選択後、小区分の一覧が表示され、小区分の1つを選択すると詳細が表示される という感じのものです まずCSVファイル 大区分,小区分,名称,詳細 1,101,hoge1,詳細1 1,102,hoge2,詳細2 2,201,hogex1,詳細x1 2,202,hogex2,詳細x2 3,301,hogexx1,詳細xx1 という感じに分けています で1つ目のhoge0.phpで <a href="hoge1.php?code=1">大区分(1)</a> ・・・ code が 1 なら hoge1.php で 小区分 1 の一覧を表示します 次に2つ目のhoge1.phpで $code = $_GET['code']; $lines = file('hoge.csv'); foreach($lines as $line) { $line = rtrim($line); list($bno,$sno,$name,$detail) = explode(",", $line); if ($bno==$code) { echo "<a href=hoge2.php?type=$sno>詳細</a>".$name."<br>"; } } type が 101 なら hoge2.php で 小区分 101 にある hoge1 項目の詳細を表示します 最後3つ目のhoge2.phpで $type = $_GET['type']; $lines = file('hoge.csv'); foreach($lines as $line) { $line = rtrim($line); list($bno,$sno,$name,$detail) = explode(",", $line);{ if ($no==$type) { echo $name.$detail; } } } 一応これでやりたい事は実現できたのですが、あまりにも不恰好で・・・ これを1つのPHP内で処理できるようにするにはどうしたらいいでしょうか? スマートになるやり方があれば教えてください

    • ベストアンサー
    • PHP
  • PHPでCSVデーターの表示について

    PHPでCSVデーターの表示について 教えてください。PHPでCSVデーターを表示したいのですが一覧表示ではなくテキストをクリックして特定のデーターを表示させようと考えております。 CSVデーターの中身(CSV.csv) 一郎,男,20歳 二郎,男,22歳 一子,女,24歳 二子,女,26歳 --data.php-- <?php $csvFile = 'CSV.csv'; $tempCSV = file_get_contents($csvFile); $tempCSV = mb_convert_encoding($tempCSV,'utf-8','SJIS-win'); $fp = tmpfile(); fwrite($fp,$tempCSV); rewind($fp); setlocale(LC_ALL,'ja_JP.UTF-8'); while ($arr = fgetcsv($fp,1024)) { list ($name,$sex,$age) = $arr; echo '<p>',<a href="01.php">' . $name . '</a>','</p>'; } fclose($fp); function h($string) { return htmlspecialchars($string, ENT_QUOTES); } ?> 一郎をクリックしたら一郎のデーターだけを(01.php)で表示させたいのですがよく分りません。 01.phpは今のところ一覧表示されるものを置いてあります。 --01.php-- <?php $csvFile = 'CSV.csv'; $tempCSV = file_get_contents($csvFile); $tempCSV = mb_convert_encoding($tempCSV,'utf-8','SJIS-win'); $fp = tmpfile(); fwrite($fp,$tempCSV); rewind($fp); setlocale(LC_ALL,'ja_JP.UTF-8'); while ($arr = fgetcsv($fp,1024)) { list ($name,$sex,$age) = $arr; echo '<table border=1>'; echo '<tr>'; echo '<td>','名前','</td>'; echo '<td>'.$name.'</td>'; echo '</tr>'; echo '<tr>'; echo '<td>','性別','</td>'; echo '<td>'.sex.'</td>'; echo '</tr>'; echo '<tr>'; echo '<td>','年齢','</td>'; echo '<td>'.$age.'</td>'; echo '</tr>'; echo '</table>'; } fclose($fp); function h($string) { return htmlspecialchars($string, ENT_QUOTES); } ?> 本を読んだり、ググったりしてヒントになる様な物を探しているのですが中々見つかりません。 初心者で申し訳ありませんが、どなたか教えていただけないでしょうか?

    • ベストアンサー
    • PHP
  • CSVファイルを読み込み表示すると行頭がおかしくなります

    ・CSVファイルを読み込み表示すると行頭がおかしくなります。 -【 CSVファイル(test.csv) 】------------------- 1,単一,必須 2,…,… ----------------------------------------- ・例えば上記のCSVを読み込んで、  PHPで表示すると以下のように表示されます。 -【 ブラウザ表示 】-------------------------- 1 P一 K須 2 … ----------------------------------------- ・というように最初の文字が正常に表示されません。 ・ちなみに数字(半角?)はちゃんと表示されました。 ・プログラムは下のような感じになります。 ・どこを編集すればよいでしょうか? -【 PHP 】--------------------------------- <?php  if( $fp = fopen( 'test.csv', 'r' ) ){   $data = fgetcsv( $fp );   while( ( $data = fgetcsv( $fp ) ) !== FALSE ){    echo $data[0] . ' ' . $data[1] . ' ' . $data[2] . '<BR>';   }  } ?> ----------------------------------------- -【 仕様 】--------------------------------- [OS]: CentOS5 [Server]: Apache_2.2.10 [PHP]: PHP_5.2.6 -----------------------------------------

    • ベストアンサー
    • PHP
  • CSVファイルを読み込んで表示するPHP

    <?php setlocale(LC_ALL, 'ja_JP'); if( $handle = fopen( 'data.csv', 'r' ) ){ echo '<table border=1 cellspacing=0 bordercolor=#ff6600 align=center>'; if( ( $data = fgetcsv( $handle ) ) !== FALSE ){ echo '<tr style="background-color:#FFCCFF">'; for( $i = 0; $i < count( $data ); $i ++ ){ if($i===0){ echo '<td align=center width=160px>' . $data[$i] . '</td>'; }else{ echo '<td align=center width=60px>' . $data[$i] . '</td>'; } } echo '</tr>'; } while( ( $data = fgetcsv( $handle ) ) !== FALSE ){ echo '<tr>'; for( $i = 0; $i < count( $data ); $i ++ ){ echo '<td align=center>' . $data[$i] . '</td>'; } echo '</tr>'; } echo '</table>'; } fclose($handle); ?> ■data.csvの内容 品名,数量,予備 AAA,1,1 BBB,1,1 CCC,1,1 上記のPHPは2列まで表示されるようになっています。 それを3列まで表示できるようにしたいのですが、 初心者なので、どう記述したらいいのか分かりません。 どうか、ご教授お願いします。

    • ベストアンサー
    • PHP
  • PHPで、CSVファイルを、指定した行数だけ出力するには?

    同じようなトピックは、いくつかありましたが、あと一歩、わからないので質問させてください。 CSVファイルをPHPを使って読み込み、出力させる場合で、 CSVファイル data.csv --------------------------- データ1,説明,詳細 データ2,説明,詳細 データ3,説明,詳細 データ4,説明,詳細 データ5,説明,詳細   … データ100,説明,詳細 --------------------------- 上記のように100行あったとします。 この時、 PHPファイルを、 --------------------------- <?php $fp = fopen("data.csv", "r"); while ($data = fgetcsv($fp, 10000)) { $num = count ($data); print <<<EOD $data[0]・$data[1]・$data[2]<br> EOD; } fclose ($fp) ?> --------------------------- と書くと、100行目まで普通に出力してしまいます。 もし、10行目までを出したい場合は、どう記述すればよいのでしょうか? 上記のPHPソースに少し書き加える形で解決できればと思うのですが・・・ 色々試しましたが、私の力だけでは無理でした。

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

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

    • ベストアンサー
    • PHP
  • CSVデータ内の特定部分をHTMLで表示したい

    はじめまして。 早速ですが、表題通り、CSVデータ内の特定部分をHTMLで表示したく、方法をご教授でいただければと思います。 CSVデータは 2021/11/25,01,あいうえお 2021/11/25,02,かきくけこ 2021/11/26,01,さしすせそ のように(日時)、(区分)、(コメント)になっております。 たとえば、当日11/25の02の「かきくけこ」という情報のみ表示したいと考えています。 良い方法などありますでしょうか? ご教授いただければ幸いです。 よろしくお願いします。

  • PHPでフォームに表示させたCSVを更新したい

    現在以下のようなものを作っています。 1)csvファイル(内容は id,url,name )からデータを読み込み、 2)フォーム内のテキストフィールドに表示、 3)新規登録フォームからcsvのラストに1行増やす。 ここまではできたのですが、 4)テキストフィールドに読み込んだCSVデータの一部を修正する というのはどうすればいいのでしょうか? 現在、 $fp = fopen("link.csv", "r"); while ($linkdata = fgetcsv($fp, 1000, ',')){ list($a, $b, $c) = $linkdata; … }で、 <input name="id" type="text" value="$a"><input name="id" type="text" value="$b"><input name="id" type="text" value="$c"> こんな感じで表示されています。 チェックした行を削除というのと、 表示されたテキストフィールドの中を書き換えてsubmitで更新というのを作りたいのですが…

    • ベストアンサー
    • 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
  • PHPとCSVでレシピサイトを作る

    こんにちは☆ PHPとCSVでレシピサイトを作ってます。 MYSQLでの構築は知識が足らないのでCSVを用いています。 まず HTMLで下記のように書いて | 略 <a href=\"deatail.php?recipe=1\">作り方</a> カレーライス|30分|★★★★ <a href=\"deatail.php?recipe=2\">作り方</a> シチュー|10分|★★☆☆ deatail.phpで $code = $_GET[\'recipe\']; $code =htmlspecialchars($code); $fp = fopen(\"recipe.csv\", \"r\"); while ($data = fgetcsv($fp, 10000)) { if ($data[0]==$code) { print <<<HTML <table> <tr> <td>$data[1]</td> <td>$data[2]</td> | 略 </tr> recipe.csvはこんな感じです ID,名前,材料,一言 1,カレーライス,玉ねぎ/にんじん/セロリ/にんにく/鶏肉,初心者でも作りやすいよ 2,シチュー food.csv ID,名前,画像, 1,玉ねぎ,<img src=\"tamanegi.gif\"/> 2,にんじん<img src=\"ninjin.gif\"/> 3,セロリ<img src=\"serori.gif\"/> 4,にんにく<img src=\"ninniku.gif\"/> 5,鶏肉<img src=\"toriniku.gif\"/> さらに玉ねぎやにんじんetcの詳細をdeatail.phpに表示させたいんですが、どのようにすればいいのか・・・ 頭が混乱してます(>_<) 一応考えてみたんですが recipe.csvの材料の所に 1,カレーライス,<a href=\"food_deatail.php?food_id=1\">玉ねぎ</a>/<a href=\"food_deatail.php?food_id=2\">にんじん</a>/セロリ/にんにく/鶏肉,初心者でも作りやすいよ <a href=\"food_deatail.php?food_id=1\">玉ねぎ</a>と書いて food_deatail.phpで $code = $_GET[\'food_id\']; $code =htmlspecialchars($code); $fp = fopen(\"food.csv\", \"r\"); while ($data = fgetcsv($fp, 10000)) { if ($data[0]==$code) { print <<<HTML <table> <tr> <td>$data[1]</td> <td>$data[2]</td> こうするしか無いのでしょうか? 何か複雑で頭がコンフューズしております 是非ご教授よろしく願います。

    • ベストアンサー
    • PHP

専門家に質問してみよう