• ベストアンサー

CSVのデータをPHPで複数列表示したい

物販サイトで、CSVでデータを作成(商品名、写真、説明、価格など)しPHPで読み込み表示、しています。 PHPは初心者のため、現在は while を使って表示させているのですが、これだと表示が縦一列になってしまいます。 これを下のように縦三列に表示させるにはどのようにすればいいのでしょうか。 商品1 商品2 商品3 商品4 商品5 商品6

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

  • ベストアンサー
  • Sylar
  • ベストアンサー率71% (10/14)
回答No.3

あー、テーブルですか。 <?php // ファイル名 $fname = "csv.dat"; // ファイルを開く $file = fopen($fname, "r"); echo "<table border=1>"; // データ出力 $a=0; while (list($name, $fot, $bun, $kakaku) = fgetcsv($file, 10000, ",")) { if($a==0){ echo "<tr>"; } if ($name == TRUE) { echo "<td width=33%>"; echo "<div class=box4-waku>"; echo "<p class=name>$name</p>"; echo "<p align=center> $fot</p>"; echo "<p class=setsumei>$bun</p>"; echo "<br />"; echo "<p class=kakaku>$kakaku 円(税込)</p>"; echo "</div>"; echo "</td>"; $a++; } if($a==3){ echo "</tr>"; $a=0; } } echo "</table>"; // ファイルを閉じる fclose($file); ?> こんな感じでどうでしょう?

smhwm
質問者

お礼

ありがとうございます。 思っていたとおりのサイトができました。 感謝感謝です。

その他の回答 (2)

  • Sylar
  • ベストアンサー率71% (10/14)
回答No.2

>表示が縦一列になってしまいます。 どんな書き方をしてるのか分からないのでアレですが、表示部分がブロックレベルだからでは? 単純にインライン要素にするとかfloat:leftで並べるとか方法はいろいろですね。 PHPというより、CSSの書き方の問題かもしれませんよ。

smhwm
質問者

補足

すみません。もっと詳しく書くべきでした。 要は次のような感じにしたいのですが、これだと左、中、右のすべてに同じデータが入ってしまいます。 1番目のデータを左、2番目のデータを中、3番目のデータを右、4番目のデータを左の二段目という風に順次表示するようにしたいのです。 <?php // ファイル名 $fname = "csv/index.csv"; // ファイルを開く $file = fopen($fname, "r"); // データ出力 while (list($name, $fot, $bun, $kakaku) = fgetcsv($file, 10000, ",")) { // 左 echo "<table border=0>"; echo "<tr>"; echo "<td width=33%>"; if ($name == TRUE) { echo "<div class=box4-waku>"; echo "<p class=name>$name</p>"; echo "<p align=center> $fot</p>"; echo "<p class=setsumei>$bun</p>"; echo "<br />"; echo "<p class=kakaku>$kakaku 円(税込)</p>"; echo "</div>"; } echo "</td>"; // 中 echo "<td width=33%>"; if ($name == TRUE) { echo "<div class=box4-waku>"; echo "<p class=name>$name</p>"; echo "<p align=center> $fot</p>"; echo "<p class=setsumei>$bun</p>"; echo "<br />"; echo "<p class=kakaku>$kakaku 円(税込)</p>"; echo "</div>"; } echo "</td>"; // 右 echo "<td width=33%>"; if ($name == TRUE) { echo "<div class=box4-waku>"; echo "<p class=name>$name</p>"; echo "<p align=center> $fot</p>"; echo "<p class=setsumei>$bun</p>"; echo "<br />"; echo "<p class=kakaku>$kakaku 円(税込)</p>"; echo "</div>"; } echo "</td>"; echo "</tr>"; echo "</table>"; } // ファイルを閉じる fclose($file); ?>

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

while (<なんたら>) { print "商品"; if($i%3 == 0) { print "<br>"; } $i++; } とかやればいいとおもいます。

関連するQ&A