商品の詳細情報を表示するページから、カートに商品を追加できるようにしてみましょう。
まずは商品一覧のページを作ってみましょう。
product.php
<?php require ‘header.php’; ?> <form action=”product.php” method=”post”> 商品検索 <input type=”text” name=”keyword“> <input type=”submit” value=”検索”> </form> <hr> | 検索キーワードのリクエストパラメータ名はkeywordとしました。 |
<?php echo ‘<table>’; echo ‘<tr><th>商品番号</th><th>商品名</th><th>価格</th></tr>’; $pdo=new PDO(‘mysql:host=localhost;dbname=shop; charset=utf8′,’staff’,’password’); if(isset($_REQUEST[‘keyword’])){ $sql = $pdo->prepare(‘select * from product where name like ?’); $sql ->execute([‘%’.$_REQUEST[‘keyword’].’%’]); } else { $sql = $pdo ->query(‘select * from product’); } foreach ($sql as $row){ $id = $row[‘id’]; echo ‘<tr>’; echo ‘<td>’ ,$id, ‘</td>’; echo ‘<td>’; echo ‘<a href=”detail.php?id=’, $id, ‘“>’, $row[‘name’],'</a>’; echo ‘</td>’; echo ‘<td>’ , $row[‘price’], ‘</td>’; echo ‘</tr>’; } echo ‘</table>’; ?> <?php require ‘footer.php’; ?> | データの表示を行う際に、リクエストパラメータに検索キーワードが含まれているときには、商品の検索を行います。 リクエストパラメータに検索キーワードが含まれたないときには、商品一覧を表示します。 |
上記ページで商品をクリックしたら、商品画像と各情報が表示されるページを作ります。
例えば5番のカシューナッツをクリックすると・・・
このような画面が表示されるようにします。
商品画像は、スクリプトを保存したフォルダ内に「image」というフォルダを用意し、その中に「商品番号.jpg」という名前で格納しました。
detail.php
<?php require ‘header.php’; ?> <?php $pdo = new PDO(‘mysql:host=localhost;dbname=shop; charset=utf8′,’staff’,’password’); $sql = $pdo->prepare(‘select * from product where id=?’); $sql->execute([$_REQUEST[‘id’]]); | 指定した商品番号を、select文で取得します。 ?の部分に、リクエストパラメータで取得した商品番号を指定します。 実行には、executeメソッドを使います。 |
foreach($sql as $row){ | foreachメソッドを使って処理し、商品情報を表示します。 変数$rowには、取得した商品テーブルの行が格納されています。 |
echo ‘<p><img alt=”image” src=”image/’,$row[‘id’],’.jpg”></p>’; echo ‘<form action=”cart-insert.php” method=”post”>’; echo ‘<p>商品番号;’, $row[‘id’], ‘</p>’; echo ‘<p>商品名;’, $row[‘name’], ‘</p>’; echo ‘<p>価格;’, $row[‘price’], ‘</p>’; echo ‘<p>個数:<select name=”count”>’; for ($i=1; $i<=10; $i++){ echo ‘<option value=”‘,$i,'”>’,$i,'</option>’; } echo ‘</select></p>’; | 商品の画像は<img>タグを使って表示します。 画像はimageフォルダに「画像番号.jpg」の形で格納されています。 |
echo ‘<input type=”hidden” name=”id” value=”‘,$row[‘id’],'”>’; echo ‘<input type=”hidden” name=”name” value=”‘,$row[‘name’],'”>’; echo ‘<input type=”hidden” name=”price” value=”‘,$row[‘price’],'”>’; echo ‘<P><input type=”submit” value=”カートに入れる”></P>’; ‘</form>’; | type属性がhiddenなので画面には表示されませんが、inputタグに書いた情報はサーバーに送信されます。 「カートに入れる」ボタンをクリックすると、カートに商品を追加するcart-insert.phpが実行されます。 |
echo ‘<p><a href=”favorite-insert.php?id=’,$row[‘id’],'”>お気に入りに追加</a></p>’; } ?> <?php require ‘footer.php’; ?> | お気に入りに追加」リンクでは、リクエストパラメータ名idに、商品番号を設定します。お気に入り商品を登録する際に、商品番号が必要になるためです。 |