初級・中級者向け~ウェブ制作備忘録
PHPでCSVを読み込み表示させる場面が多々ありますが、指定列のデータでソート(並べ替え)しながら、さらに1ページの表示数を指定するコード。
【CSV】
11<>12<>13<>14<>15<> 21<>22<>23<>24<>25<> 31<>32<>33<>34<>35<> 41<>42<>43<>44<>45<> 51<>52<>53<>54<>55<>
【PHP】
<?php ///////////// // 1ページ表示数 ///////////// $DISPALY = 5; ///////////// // データファイル ///////////// $datafile = file("data.csv"); ///////////// // データ読み込み ///////////// foreach($datafile as $value){ $column = explode('<>', $value); $data[] = array( 'name0' => $column[0], 'name1' => $column[1], 'name2' => $column[2], 'name3' => $column[3] ); } ///////////// // 列の配列 ///////////// foreach($data as $key => $value){ $name0[$key] = $value['name0']; $name1[$key] = $value['name1']; $name2[$key] = $value['name2']; $name3[$key] = $value['name3']; } ///////////// // データソート ///////////// //SORT_ASC,//小さい順 //SORT_DESC,//大きい順 array_multisort( $name0,SORT_ASC, $name1,SORT_ASC, $name2,SORT_ASC, $name3,SORT_ASC, $data ); ///////////// // 結果の常時 ///////////// $page = $_GET['page'];
if($page < 1){ $page = 1; } $start = $DISPALY * ($page-1); $end = $DISPALY + $start; if($end > count($data)){ $end = count($data); } for($i=$start; $i<$end; $i++){ echo '<li>' .$name0[$i]. '|' .$name1[$i]. '|' .$name2[$i]. '|' .$name3[$i]. '</li>'."\n"; } ///////////// // ページリンク ///////////// if($start > 0){ echo '<a href="./?page=' .($page-1). '">前のページ</a>'."\n"; } if($end < count($data)-1){ echo '<a href="./?page=' .($page+1). '">次のページ</a>'."\n"; } ?>
ページ遷移は、前ページ・次ページの簡易リンクとなります。
PHP | |
2021.05.13 19:25 | |
2021.05.13 22:04 |