前提条件(追加)
あくまで外部のCSVファイルを読み込んで要件を実現させる
※php上でのデータ入力はなし
php
1// このコードを必ず使う 2$file = fopen('shop_list.csv', 'r');
実現したい事
現在手作業で配列(配列自体はExcel上で自動作成)に情報を入れて、表リストを生成しているのですが、
今後はフォーム上でCSVをアップロードして、手作業時の描画と全く同じことを実現したい。
問題点・分からないこと
CSVから自動生成することは可能になったが、
完成型(参照画像下部)のように同じエリア名を束ねる事ができていない
shop_list.csv エリア1,ランチ ○○店1,ランチ 神戸店1住所 エリア1,ランチ ○○店2,ランチ 神戸店2住所 エリア2,スイーツ ○○店1,スイーツ ○○店1住所 エリア2,スイーツ ○○店2,スイーツ ○○店2住所
html
1<!-- 参照画像上部 --> 2 <table> 3 <tr> 4 <td class="city"></td> 5 <td class="shopName">店舗名</td> 6 <td class="address">住所</td> 7 </tr> 8 <?php $file = fopen('shop_list.csv', 'r'); ?> 9 <?php if($file !== FALSE ): ?> 10 <?php while( ($data = fgetcsv($file)) !== FALSE ): ?> 11 <?php 12 $area = $data[0]; 13 $shop = $data[1]; 14 $address = $data[2]; 15 ?> 16 <tr> 17 <td class="city" ><?=$area ?></td> 18 <td><?=$shop ?></td> 19 <td><?=$address ?></td> 20 </tr> 21 <?php endwhile; ?> 22 <?php endif; ?> 23 <?php fclose ( $file ); ?> 24 </table>
html
1<!-- 2参照画像下部 3現在、手作業でリスト生成しているコード 4--> 5<?php 6 $sales_list = array( 7 'エリア1' => array( 8 array('name' => '店舗名', 'address' => '住所'), 9 array('name' => '店舗名', 'address' => '住所'), 10 ), 11 'エリア2' => array( 12 array('name' => '店舗名', 'address' => '住所'), 13 array('name' => '店舗名', 'address' => '住所'), 14 ), 15 ); 16 ?> 17 <table> 18 <tr> 19 <td class="city"></td> 20 <td class="shopName">店舗名</td> 21 <td class="address">住所</td> 22 </tr> 23 <?php 24 foreach ($sales_list as $area => $shops) : 25 $count = 1; 26 foreach ($shops as $shop) : 27 echo '<tr>'; 28 if ($count++ === 1) { 29 echo '<td class="city" rowspan="'.count($shops).'">'.$area.'</td>'; 30 } 31 echo '<td>'.$shop['name'].'</td>'; 32 echo '<td>'.$shop['address'].'</td>'; 33 echo '</tr>'; 34 endforeach; 35 endforeach; 36 ?> 37 </table>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/08 10:01
2018/06/09 07:27
2018/06/09 13:05