トップページでは for 文とexplode 関数を使ってカテゴリーのCSVから「すべての」データを取り出しました。カテゴリー別ページでは、さらに if 文を追加してデータのCSVから同じカテゴリのアイテムだけを取り出します。
データ用のCSVはどのような構成にすれば良いでしょうか?最低必要な項目はアイテムのIDとカテゴリーを識別するIDです。後の項目は作りたいリンク集の性格によって変わります。例)
僕が使っているサーバーとドメイン管理のレジストラーです。
§カテゴリー別ページを作る
トップページでは for 文とexplode 関数を使ってカテゴリーのCSVから「すべての」データを取り出しました。
カテゴリー別ページでは、さらに if 文を追加してデータのCSVから同じカテゴリのアイテムだけを取り出します。
クエリで送信されたIDと一致するものを抽出
データ用のCSVはどのような構成にすれば良いでしょうか?
最低必要な項目はアイテムのIDとカテゴリーを識別するIDです。
後の項目は作りたいリンク集の性格によって変わります。
例)
アイテム名はほとんどの場合テキストリンクと重複すると思うので省略しました。
ただし、だらだら長いだけで名前がわからないテキストリンクしか用意していない困ったマーチャントさんも中にはいらっしゃるので、その辺は臨機応変に対応したいですね。
さてこのデータ用CSVから同じカテゴリーのものだけ抽出するプログラムです。
cat.php
//解説(1)
$Cid=$_GET['cid'];
$Data=file('cat.csv');
for($i=0;$i<sizeof($Data);$i++){
$line=explode("‚ "‚ $Data[$i]);
if($line[0]==$Cid){ //解説(2)
$CatTitle=$line[1];
break;
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<title><?=$CatTitle?> | サンプルリンク集</title>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<body>
<a href="index.php">HOME</a>
<h1><?=$CatTitle?></h1>
<table border="1">
<tbody valign="top">
<?php
$Data=file('item.csv'); //解説(3)
for($i=0;$i<sizeof($Data);$i++){
$line=explode("‚ "‚ $Data[$i]);
if($line[1]==$Cid){ //解説(4)
?>
<tr>
<td><?=$line[2]?></td>
<td>
<?=$line[3]?><br><br>
<a href="item.php?id=<?=$line[0]?>">詳細を見る</a> //解説(5)
</td>
</tr>
<?php
}
}
?>
</tbody>
</table>
</body>
</html>
解説(1)
クエリの「cid」を$_GET["cid"]で受取り変数$Cidに収めます。
解説(2)
まず、cat.csvからタイトルに表示するカテゴリー名を抽出しましょう。
for文とexplode関数でCSVを分解しif文で1行ずつ調べます。
$line[0](カテゴリーID)が$Cidと一致すれば、$CatTitleに$line[1](カテゴリー名)を代入します。
一致しなければ次に行を調べます。
breakは繰り返し処理を強制的に中断する関数です。
処理したい項目が見つかればそれ以降の処理は必要ありません。
繰り返しから抜けることで不必要なサーバーへの負担を軽減します。
こういった細かい配慮って後々重要になってきます。
解説(3)
次にデータ用のCSVから$Cidと同じカテゴリーIDを持つデータを抽出します。
要領はまったく同じです。
解説(4)
$line[1](カテゴリーID)と$Cid一致すればすべて表示します。
一致しなければ表示されません。
一致するものはすべて表示したいのでbreakで中断はしません。
解説(5)
アイテムの詳細を表示するページへリンクを張ります。
$line[0] は各アイテムのIDです。