動的ページのカラクリ

2012-08-13 16:48:05
PHPをゼロから始める人はfor文やif文などの構文を一通り見たけど、「で、何をすればいいの?」と足ふみをしてしまう人が多いのではないでしょうか?

そんな人にまず知ってほしいのは動的ページのカラクリ。これが分かればドドドっと次から次へと課題が出てくるので、勉強が進みます。

では早速簡単な動的ページを作ってみましょう。まずは商品データが入ったログファイルを作ります。下記の例ではカンマ区切りで「ID」「商品名」「値段」という構成で一商品一列でまとめています。

<ログファイル data.log>


1,アップル,200,
2,オレンジ,100,
3,メロン,1500,
4,グレープ,400,
5,マンゴー,2500,

次は商品一覧ページを作ります。最初は何も考えずにコードをコピーして動かしてみてください。PHPはサーバーでしか動かないので、レンタルサーバーを持っている人はFTPなどでアップして実証してみてください。サーバーがない人は自分のパソコンにサーバー(xampp推奨)をインストールしてください。

<商品一覧ページ list.php>


<?php
$array = file('data.log');
foreach($array as $val){
    list($id,$name,$price) = explode(',',$val);
    $list_body .= "<li><a href=\"detail.php?id={$id}\">{$name}</a></li>\n";
}
echo "<p>商品一覧</p>\n<ul>\n{$list_body}</ul>";
?>

上記のコードをザっと簡単に説明すると、file()でログファイルを読み込み、foreach文でループさせ、最後にechoでソースコードをブラウザに渡す。といった流れです。では、次は商品詳細ページを作ります。

<商品詳細ページ detail.php>


<?php
$array = file('data.log');
foreach($array as $val){
    list($id,$name,$price) = explode(',',$val);
    if($id == $_GET['id']){
        $detail_body = "<div>{$name}<br />{$price}円</div>\n";
        break;
    }
}
echo "{$detail_body}\n<p><a href=\"list.php\">前に戻る</a></p>";
?>

このコードも簡単に説明すると、file()でログの内容を配列に格納し、配列をforeach文でループさせ、URLのIDとログファイルのIDが一致したらループを抜け、商品データを表示させています。

サンプルコードのダウンロード

どうでしょう、ちゃんと動作を確認できましたか?表示されたページのソースコードもチェックしてみてください。ソースとphpのファイルを照らし合わせて見てみると、理解が深まるハズです。文字化けがある場合は文字コードが統一されていない場合に起きます。全部のファイルの文字コードを「UTF-8」で保存してください。

これが動的ページのカラクリです。ログファイルあるいはデータベースからデータを取得してくるだけなので、ほんのわずかなファイル数で何千何万もの商品を扱ったサイトが作れるのです。

でもこれで満足してはいけません。ページャーや管理画面の構築、ソート機能、詳細検索機能などなど勉強しなければいけないことが盛りだくさんなのです。
カテゴリ: PHP