- ベストアンサー
PHPでcsv内のデータをカテゴリ・サブカテゴリ別で表示させたい
- PHPを使用して、CSVファイルからカテゴリ・サブカテゴリ別にデータを表示させたいです。
- CSVファイルの中身をカテゴリ・サブカテゴリ別に表示する方法を教えてください。
- PHPでCSVファイルのデータをカテゴリとサブカテゴリに分類して表示したいです。どうすれば実現できますか?
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- while繰り返し処理で買い物かごカテゴリ階層表示作成
買い物かごのカテゴリ階層表示作成を下記のようにしたいのですが 例) ・カテゴリ1 ・サブカテゴリ1 ・サブサブカテゴリ1 ・サブサブカテゴリ2 ・サブカテゴリ2 ・サブカテゴリ3 ・カテゴリ2 while処理のメインカテゴリ生成内でwhile処理メインカテゴリサブカテゴリ生成内でwhile処理サブカテゴリ該当サブサブカテゴリ作成です。 現在、下記のような状態となっております。 ・カテゴリ1 ・サブカテゴリ1 ・サブサブカテゴリ1 ・サブサブカテゴリ2 ・サブカテゴリ1 ・サブカテゴリ2 ・サブカテゴリ1 ・サブカテゴリ2 ・サブカテゴリ3 ・カテゴリ2 該当サブカテゴリには3つ配列変数があります。 while処理でサブカテゴリ1内の該当サブサブカテゴリ1と2を 出力後、サブカテゴリ1がまた出力されます。サブカテゴリ1と2を 出力後、またサブカテゴリ1、2、3と出力します。 メインカテゴリは正常表示です。 1回のwhile処理に1個ずつ増やして出力しています。 出力する変数の場所を変えると、サブカテゴリは正常表示になり 今度はサブサブカテゴリが表示されなくなります。 サブカテゴリのwhile処理の計算方法がちがうのでしょうか? ご教授お願いいたします。
- ベストアンサー
- Perl
- CSVに追加データを挿入したいです。
この前質問したばかりなのですが、別の質問させてください。 数日頑張ったのですがどうしても出来なくて… やりたいこと ↓のようなものが書かれてあるCSVファイルがあります。 服 トップス 服 ボトムス 服 ブランド このCSVファイルに、 服 トップス なら01&01_01 服 ボトムス なら01&01_02 服 ブランド なら01&01_03 という情報を1列目に付け足したいです。 そこで、以下の配列を作り、 $data array("01&01_01" => "トップス", "01&01_02" => "ボトムス", "01&01_03" => "ブランド") csvファイルの、「服 トップス」をexplodeで分けました。 $log = "list.csv"; # ログ名 $lines = file("$log"); foreach ($lines as $l) { $line = explode(",",$l); $push = $line[0].",".$line[1].",".$line[2].",".$line[3].",\n"; $cate = explode(" ",$line[2]); # $line[2]は、上記の「服 トップス」というデータを挿入しています。 $catea = $cate[1]; # サブカテゴリ名を格納 $cate[1]=トップス foreach($data as $key => $value){ if($value == $catea){ $LOG[$catea] .= $key.",".$push."\n"; # カテゴリ情報を追加したcsvデータを1行ずつ保存 } } foreach($LOG as $keys => $values){ $file = fopen("list2.csv", 'w'); # カテゴリ情報を追加したcsvデータを書き込み fwrite($file, $values); fclose($file); } すると、foreach($LOG as $keys => $values){ の部分でforeachエラーが出ます。 根本的に記述が間違っているのでしょうか。 お手数かけますが、ご指南よろしくお願いします<(_ _)>
- ベストアンサー
- PHP
- CSVデータを読み込み、ファイルにカテゴリを分けて書きこむ
CSVファイル例 01,0101,○○○,○○○□□,010101, 01,0102,○○○,○○○■□,010102, 02,0201,○○○,○○○□□,020101, ・・・・・ というファイルがあったとすると、 1番目の「01」「02」と、分けて別のファイルに保存がしたいです。 書き込み自体は出来るようなのですが、なぜかループが、番号ごとに1回しかされずに、 log/01.cgi 01<>0101<>○○○<>○○○□□<>010101 log/01.cgi 02<>0201<>○○○<>○○○□□<>020101 となってしまい、全ての生成したファイルには1行しか格納されていません。 ちなみに、csvファイルは1万行近くあります。 ソースはこのような感じです。 $log = "△△△.csv"; # ログ名 $lines = file("$log"); foreach ($lines as $l) { $line = explode(",",$l); $push_line = $line[0]."<>".$line[1]."<>".$line[2]."<>".$line[3]."<>".$line[4]."<>\n"; $LOG[$line[0]] .= $push_line; $cate = $line[0].",,".$line[1]; # サブカテゴリ用 $LOG[$cate] .= $push_line; # カテゴリ用ログを保存 } なお、csvファイルは、 01・・・ 02・・・ 01・・・ 03・・・ のようになっているため、全ての行を読み込むことはしていると思います。 しかし、ログファイルにはなぜか1行分しか書き込まれていません。書き込みの文は以下になります。 foreach($LOG as $key => $value){ $explode = explode(",,",$key); if($explode[0]){ $logfile = "./log/".urlencode($explode[0]).".cgi"; } $file = fopen("$logfile", 'w'); flock($file,LOCK_EX); fwrite($file, $value); flock($file,LOCK_UN); fclose($file); 解決法が分かる方、回答のほどよろしくお願いいたします。
- ベストアンサー
- PHP
- phpで表示件数をcsvの項目ごとに出す
初心者です、2点分からないことを投稿させていただきます。 下記サイトを参考に、 phpでcsvを読み込み表示するサイトを作成しています。 http://affiliate.aki-f.com/prog/cat/cat9.html 「1ページを10件表示に制限する」方法で、 全件数の表示をすることはできるのですが 各カテゴリページ毎のページ送りを付ける方法がわかりません。 下記サンプルページでいうと 「1.ホームページ」をクリックした後のページを 10件ずつ表示にしたいという感じです。 http://affiliate.aki-f.com/prog/sample/sample30/ もう1点は、 「1.ホームページ」の横に、そのカテゴリの件数を 表示させる方法が分かりません。 例) ┏ 1. ホームページ作成(5) ┣ 2. Webデザイン(2) ┣ 3. CGI(0) ┗ 4. JavaScript(8) としたいのですが、教えて頂けませんでしょうか? お願い致します。
- ベストアンサー
- PHP
- foeach
IDと名前とパスワードを入力したsample.csvがあり、 $shop = file('sample.csv'); として、foreachを利用して配列に入れたとします。 foreach($shop as $val){ list($li_id ,$li_name, $li_pass) = split("\t",$val); if($id == $li_id){ echo "a"; exit; }else{ echo"b"; exit; } } として、フォームから送られてきたIDと、 csvに入っているIDが一致したらaを表示、 一致しなければbを表示というように上記のプログラムを書きました。 しかし、csvファイルの一番上のIDでなければ、 すべてbが表示されてしまいます。 exit;をとると今度は、 「abb」や「bab」など、すべて表示されてしまいます。 どのようにすれば一致したらaを表示、しなければbを表示というようにできるのでしょうか。
- ベストアンサー
- PHP
- phpでCSVファイルの中身を多次元配列にしたい
PHPを学習中です。CSVを多次元化して最後はセッションに格納し、自由に他のページでもそのセッションを読み込めるようにしたいです。 CSVの中身はコード名、商品名、値段、在庫数になっています。 while(!eof($f_pt)){ $data=fgets($f_pt); $data=rtrim($data); $str=explode(",",$data); $str[0]=array($str[1],$str[2],$str[3]); } こんな風にひとまずコードに格納してwhileで回せばいいのかな??っと苦戦しています。 そしてセッションにしたあとforeachでどうやって配列で表示すればいいかわかりません。。。 アドバイス等頂けたら幸いです。よろしくお願いします。
- ベストアンサー
- PHP
- Googleの検索結果にサブカテゴリを表示させる方法
例えば、googleで「教えて」で検索すると教えて!gooがトップ検索されますが、その下にサブカテゴリも一緒に表示されます。 ---------------------------------------- oshiete.goo.ne.jp/ - 44k - キャッシュ - 関連ページ カテゴリ一覧 - oshiete1.goo.ne.jp/list.php3 デジタルライフ - oshiete1.goo.ne.jp/c207.html ライフ - oshiete1.goo.ne.jp/c214.html マイページ - oshiete1.goo.ne.jp/mypage.php3 oshiete.goo.ne.jp との他の一致 » ---------------------------------------- 大手の企業はだいたいこのように表示されるようですが、何か特別なやり方でもあるのでしょうか?
- ベストアンサー
- インターネットビジネス
- phpで 変数の中にデータが入っているかどうかを判別する
phpで変数の中が空なら・・・ という命令を書く場合 if($hoge == "")とか if(isset($hoge)) という風に書くとおもうんですが、 変数の中身が配列で、その配列の一つでもデータが入っているかどうかを 判別する方法はないのでしょうか? 例えば、 $hoge = array([1] = りんご,[2] = ) と $hoge = array([1] = ,[2] = ) で、表示結果を変えたいということです。 配列を一旦分解するしかないのでしょうか?
- ベストアンサー
- PHP
- PHPでCSVファイルから行指定してループする方法
こんにちは。 PHPでループ処理をしているのですが、ふと疑問にあたりました。 CSVファイルをオープンしそれを一行づつ読み込みたいのです。 「次のページ」などのよくある方法のように30行あったら次のページをクリック。 次ページでは31行目から60行目までを表示、その繰り返しのようなループを考えています。 Perlの場合foreach(1 .. 30){} のように配列の始点終点の指定ができたとおもうのですが、PHPでもこのような処理は可能なのでしょうか? 恐れ入りますがご教授お願いします。
- ベストアンサー
- PHP
- 配列の差し替えについて
配列について勉強をしています。 データを差し替えるプログラムを考えていて色々試してみたのですが 下記のような感じでうまく機能しません。 ・指定した箇所に追加書き込みになってしまう。 ・指定箇所が削除され別の箇所に追加書き込みになってしう。 ・まったく機能しなくなったりと困っています。 こんな感じのイメージ結果にしたいのですが・・・ -------------------------------------- dat.csvの中みが下記とします。 サンプル01 サンプル02 サンプル03 サンプル04 ↓↓↓↓↓実行結果↓↓↓↓↓ サンプル01 サンプル02 サンプル05 サンプル04 -------------------------------------- ソース -------------------------------------- 外部からの呼び出しで値が「サンプル03」です。 $edit_data=$_GET["sid"]; $test = "サンプル05"; if($_POST["regist"]){ $Data=file("data.csv"); for($i=0; $i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); if($edit_data==$line[1]){ array_splice($Data,$i,1,$test); $fp=fopen("data.csv","w"); flock($fp, LOCK_EX); foreach($Data as $item)fputs($fp,$item); fclose($fp); } } } -------------------------------------- まず、外部から「サンプル03」という値を呼び出し $edit_data==$line[1]でCSVデータと照合させました。 一致したらその箇所を「array_splice」で置換えるようにしているはずなんですが・・・ なんともうまく機能しません。。。。 どなたか、知恵を貸していただければと思い投稿させて頂きました。 宜しくお願い致します。
- ベストアンサー
- PHP
お礼
何度もありがとうございました。 無事解決できました。