• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpで表示件数をcsvの項目ごとに出す)

phpで表示件数をcsvの項目ごとに出す

このQ&Aのポイント
  • 初心者です、2点分からないことを投稿させていただきます。下記サイトを参考に、phpでcsvを読み込み表示するサイトを作成しています。
  • 「1ページを10件表示に制限する」方法で、全件数の表示をすることはできるのですが各カテゴリページ毎のページ送りを付ける方法がわかりません。
  • もう1点は、「1.ホームページ」の横に、そのカテゴリの件数を表示させる方法が分かりません。

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

  • ベストアンサー
  • koke29
  • ベストアンサー率58% (114/196)
回答No.1

わかる方だけ返答です もう1点は、 「1.ホームページ」の横に、そのカテゴリの件数を 表示させる方法が分かりません。 http://affiliate.aki-f.com/prog/page/33.html の転載ですが↓ <?php $Data=file('item.csv'); //解説(3) for($i=0;$i<sizeof($Data);$i++){ $line=explode("‚ "‚ $Data[$i]); sizeof($Data); ←これが該当する件数を取得している部分ですので、 $num = sizeof($Data); 1. ホームページ作成($num) みたいなことをそれぞれのカテゴリですれば良いと思いますよ。

その他の回答 (4)

  • koke29
  • ベストアンサー率58% (114/196)
回答No.5

違う回答しちゃいましたね でも自力で出来て何よりです。 ページ送りについての質問も、サンプルの場合だとsizeof($Data)の総数を 利用してページ送りを作っているので、この件数の部分を各項目の変数に 置き換えてあげれば難なくいけると思いますよー 初めにご自身で完成させた$nを出す処理を書いて、その値を利用して サンプルの加工をしてみてはいかがでしょうか もう少しだと思うので、頑張って下さいねー

  • koke29
  • ベストアンサー率58% (114/196)
回答No.4

出来ましたかー 良かったです 全項目っていうのはCSVデータの全件ってことですよね $Data=file("CSVデータ"); $all = sizeof($Data); $all が全件数になりますよ。 for($i=0;$i<sizeof($Data);$i++){ ここの部分っていうのは、元々配列の件数分forで回しなさいっていう 命令なので、sizeof($Data); が配列の件数ということになります sizeof()やcount()は配列の要素数を求める関数です http://www.scollabo.com/banban/php/ref/ref_sizeof.html それぞれの件数を求める場合の部分は、CSVのカテ番号とCidの番号が 一致している場合(if($line[0]=="1"){)、該当するデータで別の配列を 作成して(array_push($Result,$Data[$i]);)その配列の件数を求める ($n=sizeof($Result);)という処理を行っているのです サンプルのサイトにも解説が載っていたので、じっくり読みながら 知らない関数は別で調べて理解しながら作成した方が後々のために よいと思いますよー 丸パクリだと求める処理は出来ても後で応用が 出来ないっていうことになってしまうので。頑張って下さいね!

noname#187708
質問者

お礼

全件(総数)の求め方ではなく、 それぞれの項目の個数っていう意味だったんですが、 なんとか出せるようにはなりました。 <?php $Data=file("item.csv"); $Result=array(); $Result2=array(); $Result3=array(); $Result4=array(); for($i=0;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); if($line[1]=="1"){ array_push($Result,$Data[$i]); } elseif($line[1]=="2"){ array_push($Result2,$Data[$i]); } elseif($line[1]=="3"){ array_push($Result3,$Data[$i]); } elseif($line[1]=="4"){ array_push($Result4,$Data[$i]); } } $n=sizeof($Result); $n2=sizeof($Result2); $n3=sizeof($Result3); $n4=sizeof($Result4); if($n==0){ $n=0; } ?> ┏1.ホームページ(<?=$n?>)<br> ┣2.Webデザイン(<?=$n2?>)<br> ┣3.CGI(<?=$n3?>)<br> ┣4.JavaScript(<?=$n4?>)<br> これが増える場合に備えて もっとシンプルに書ける方法を考えたいと思います。 有難うございます!

  • koke29
  • ベストアンサー率58% (114/196)
回答No.3

出ました! つうか、検索結果がゼロの場合の処理っていうページの応用ですよ。 http://affiliate.aki-f.com/prog/page/36.html $Data=file("CSVデータ"); $Result=array(); for($i=0;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); if($line[0]=="1"){ array_push($Result,$Data[$i]); } } $n=sizeof($Result); if($n==0){ print"no"; }else{ print"{$n}"; } $n が件数になります

noname#187708
質問者

補足

回答いただき有難うございます。 ┏ 1. ホームページ作成(<?=n?>) で、ひとつ分の項目件数表示はできるようになりました! if($line[0]=="1"){ の部分を"2"とか"3"とか"7"とかに変えれば 各項目ごとの個数を表示できることまでは理解できたのですが、 同時に全項目の個数を表示するにはどうしたら よいのかでつまづいてしまいました。

  • koke29
  • ベストアンサー率58% (114/196)
回答No.2

すみません CSVの構造をちゃんと見てなかったのでもう少し加工が必要になります ちょっと検証してみますね とりあえず sizeof(); で件数は取れるので 条件付けしてあげれば何とかなります

関連するQ&A