例えばPHPで下記のようなdata.csvがあります
NO,種類,入荷日,出荷日
1,りんご,2010/06/10,2010/06/30
2,みかん,2010/03/10,2010/04/30
3,かき,2010/05/10,2010/05/30
・
・
・
これらをPHPで読み込んできて入荷日順に10件ずつ表示するプログラムを書きたいのですが
本も三冊買ってきたり、掲示板のソースとかをみて参考にできるかと思ったりしたのですが当方初心者でしてどうも難しく行き詰っております。
data.csvから1行ずつ取り込んできて、3番目の数字でソートするといいというのは分かるのですが
どうもその方法がわかりません。
何かアドバイス頂ければ幸いです。
No.3ベストアンサー
- 回答日時:
他にも何か良い方法がある気がしますが、ざっくり書いてみました。
ページネーションなんて気の効いたものはありません。
<?
$me = $_SERVER[SCRIPT_NAME];
$DimData = array();
// テスト用ゴミ配列作成
for($i=0;$i<20;$i++) { $DimData[$i] = sprintf("%03d" , $i); }
// 1ページに表示する最大数
$row = 10;
$Page = $_GET[Page];
// 最初のアクセス用
if (!$Page) { $Page = 1; }
// ページの最大数を算出(なんか計算が怪しい)
$PageLimit = (int) ((count($DimData)-1) / $row) + 1;
// 10行表示
for ($i=0;$i<$row;$i++) {
print $DimData[((($Page - 1) * $row) + $i)] . "<br>";
}
// 戻るリンク
$Back = ($Page > 1) ? "<a href=$me?Page=" . ($Page - 1) . ">1ページ戻る</a>" : "<font color=gray>1ページ戻る</font>";
// 進むリンク
$Next = ($Page < $PageLimit) ? "<a href=$me?Page=" . ($Page + 1) . ">1ページ進む</a>" : "<font color=gray>1ページ進む</font>";
print "<hr>$Back ($Page / $PageLimit) $Next<hr>";
?>
No.2
- 回答日時:
考え方は2つ。
1.ひとつは全部のデータを配列に読んでしまって、ソートをする。
配列のソート処理は比較的高速なのでソート処理はプログラムにまかせます
2.読みこむ際に、上位10個のデータを順次配列にいれていく
あらたに上位にきたら下位からデータをすて、上位にいれます。
1は処理は簡便で、データの汎用性や再利用性がたかいですが、データ量が増えたときに、
無駄にメモリをくい、処理がおそくなります。
2はデータ量に依存せず効率的な処理ですが、冗長なため、ソートしたい項目ごとに
フローの調整が必要になります。
大規模なデータを取り扱うときはデータベースを活用することになります。
No.1
- 回答日時:
ざ~っと、ゴミプロ書いてみました。
参考になれば幸いです。
<?
$DimData = array();
// とりあえず、CSVファイルを二次元配列に取り込み。
$fp = fopen("data.csv" , "r");
while ($DimJob = fgetcsv($fp , 1000 , ",")) {
$DimData[] = $DimJob;
}
fclose($fp);
// ソート前
print_r($DimData);
// ユーザー定義関数でソート
usort($DimData, "cmp");
// ソート後
print_r($DimData);
// 多分、日付の比較の仕方としてはおかしいけど、とりあえず動くみたい。
function cmp($cmp01, $cmp02) {
// 入荷日で比較
return strcmp($cmp01[2], $cmp02[2]);
// ↓こうすると出荷日で比較
//return strcmp($cmp01[3], $cmp02[3]);
}
?>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPのカッコ[ ]の使い方について
-
fgetsで取り込んだ文字をexplod...
-
foreachのなかで次のキーを参照...
-
String だと「 ByRef引数の型が...
-
PHPで配列をPOSTデータで送った...
-
配列を回すとき、最後の要素だ...
-
CakePHPのfindの取得件数は?
-
PHP 配列の添字に変数は使えない?
-
mb_ereg_replaceについて
-
phpで、連想配列を普通の配列に...
-
前のページで入力したものをあ...
-
file_existsでファイル名の部分...
-
配列の書き方
-
PHPでこのコード自体に意味は無...
-
プログラミングのPythonのnoteb...
-
スカラーのベクトル微分
-
ヒアドキュメントの中のfor文
-
PHPで連想配列のプルダウンメニ...
-
複数行のデータのPOST処理に関して
-
エラーメッセージ(無効な間接...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列をループでたくさん宣言し...
-
file_existsでファイル名の部分...
-
$_SESSIONに二次元配列を使える...
-
foreachのなかで次のキーを参照...
-
String だと「 ByRef引数の型が...
-
配列を回すとき、最後の要素だ...
-
配列一致(要素順番は違うが内容...
-
PHPのカッコ[ ]の使い方について
-
ネストが深い時のforeachはどう...
-
チェックボックス複数選択 mys...
-
PHPで配列をPOSTデータで送った...
-
phpで、連想配列を普通の配列に...
-
PHP 多次元配列変数のデータ受...
-
postgresql関数をつかったレコ...
-
【PHP】配列内のある値以上をカ...
-
SQL文の実行結果を変数で受けて...
-
プルダウンメニューでCSVデータ...
-
Smartyのテンプレートからjavas...
-
PHPにてクラスを配列にすること...
-
CSVデータのn番目だけの値を取...
おすすめ情報