PHPとMySQLでECサイトをフルスクラッチ開発⑮カテゴリ別ページの作成、html/cssでスタイリングしてECサイトの完成
2021-07-21
今回は、カテゴリ別ページの作成、html/cssでスタイリングしてECサイトを完成させたいと思います。
星マークはすでに作成済みのページになります。雲マークの商品カテゴリページを、今回作成します。
今商品のカテゴリは5つとしているので、5つのファイルを作成します。
内容的にはデータベースのSELECTする部分が変わるだけですので、1つのカテゴリを抜粋して説明しようかと思います。
商品カテゴリ別ページ
shop_list_book.php
<?php session_start(); session_regenerate_id(true); if(isset($_SESSION["menber_login"]) === true) { print "ようこそ"; print $_SESSION["menber_name"]; print "様 "; print "<a href='../menber_login/menber_logout.php'>ログアウト</a>"; print "<br><br>"; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>book</title> <link rel="stylesheet" href="../style.css"> </head> <body> <?php try{ $dsn = "mysql:host=localhost;dbname=shop;charset=utf8"; $user = "root"; $password = ""; $dbh = new PDO($dsn, $user, $password); $dbh -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT code,name,price,gazou,explanation FROM mst_product WHERE category=?"; $stmt = $dbh -> prepare($sql); $data[] = "書籍"; $stmt -> execute($data); $dbh = null; print "販売商品一覧"; print " <a href='shop_cartlook.php'>カートを見る</a>"; print "<br><br>"; while(true) { $rec = $stmt -> fetch(PDO::FETCH_ASSOC); if($rec === false) { break; } $code = $rec["code"]; print "<a href='shop_product.php?code=".$code."'>"; if(empty($rec["gazou"]) === true) { $gazou = ""; } else { $gazou = "<img src='../product/gazou/".$rec['gazou']."'>"; } print $gazou; print "商品名:".$rec["name"]; print "<br>"; print "価格:".$rec["price"]."円"; print "<br>"; print "詳細:".$rec["explanation"]; print "</a>"; print "<br>"; } print "<br>"; } catch(Exception $e) { print "只今障害が発生しております。<br><br>"; print "<a href='../staff_login/staff_login.html'>ログイン画面へ</a>"; } ?> <a href="shop_list.php">トップページへ戻る</a> <br><br><br> <h3>カテゴリー</h3> <ul> <li><a href="shop_list_eart.php">食品</a></li> <li><a href="shop_list_kaden.php">家電</a></li> <li><a href="shop_list_book.php">書籍</a></li> <li><a href="shop_list_niti.php">日用品</a></li> <li><a href="shop_list_sonota.php">その他</a></li> </ul> </body> </html>
shopディレクトリにshop_list_book.phpを作成します。
このページは、カテゴリ別の商品(上記では書籍)が一覧表示されるページになります。
もう説明するまでもありませんね、至って簡単なページです。
ただ単に、商品テーブルからカテゴリ”書籍”を選択してループで表示させているだけです。
1つ作成できれば、残りの4つはコピーしてSELECTの「カテゴリー」部分だけ変更すればOKです。
スタイリングはまだしてませんので少し殺風景ですが、一応これでスタッフ、商品管理とECサイトの完成です。
15回に分けて「ECサイトのスクラッチ開発」をまとめて参りましたが、少しでも参考になれば幸いでございます。
HTML/CSSでスタイリング
shop_list.php
最後に、ここから先は特に説明する事はありませんが、例としてhtml/cssの追加でスタイリングしたものを載せておきます。
抜粋して、トップページの記述になります。↓
<?php session_start(); session_regenerate_id(true); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>管理画面TOP</title> <link rel="stylesheet" href="../style.css"> </head> <body> <header> <h1>hellnear shop</h1> <p id="target">menu</p> </header> <warapper> <main> <?php try{ if(isset($_SESSION["menber_login"]) === true) { print "ようこそ"; print $_SESSION["menber_name"]; print "様 "; print "<a href='../menber_login/menber_logout.php'>ログアウト</a>"; print "<br><br>"; } $dsn = "mysql:host=localhost;dbname=shop;charset=utf8"; $user = "root"; $password = ""; $dbh = new PDO($dsn, $user, $password); $dbh -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT code,name,price,gazou,explanation FROM mst_product WHERE1"; $stmt = $dbh -> prepare($sql); $stmt -> execute(); $dbh = null; print "販売商品一覧"; print " <a href='shop_cartlook.php'>カートを見る</a>"; print "<br><br>"; while(true) { $rec = $stmt -> fetch(PDO::FETCH_ASSOC); if($rec === false) { break; } $code = $rec["code"]; print "<a href='shop_product.php?code=".$code."'>"; if(empty($rec["gazou"]) === true) { $gazou = ""; } else { $gazou = "<img src='../product/gazou/".$rec['gazou']."'>"; } print "<div class='box'>"; print "<div class='list'>"; print "<div class='img'>"; print $gazou; print "</div>"; print "<div class='npe'>"; print "商品名:".$rec["name"]; print "<br>"; print "価格:".$rec["price"]."円"; print "<br>"; print "詳細:".$rec["explanation"]; print "</div>"; print "</div>"; print "</div>"; print "</a>"; print "<br>"; } print "<br>"; } catch(Exception $e) { print "只今障害が発生しております。<br><br>"; print "<a href='../staff_login/staff_login.html'>ログイン画面へ</a>"; } ?> <nav id="menu" class="close"> <h3>カテゴリー</h3> <ul> <li><a href="shop_list_eart.php">食品</a></li> <li><a href="shop_list_kaden.php">家電</a></li> <li><a href="shop_list_book.php">書籍</a></li> <li><a href="shop_list_niti.php">日用品</a></li> <li><a href="shop_list_sonota.php">その他</a></li> </ul> </nav> <div id="back" class="white"></div> <div id="scrolltop" class="st">⇧</div> <div id="scrollmenu" class="sm">MENU</div> <br><br> </main> <aside> <div class="box"> <h3>カテゴリー</h3> <a href="shop_list_eart.php">食品</a><br> <a href="shop_list_kaden.php">家電</a><br> <a href="shop_list_book.php">書籍</a><br> <a href="shop_list_niti.php">日用品</a><br> <a href="shop_list_sonota.php">その他</a><br> </div> <div class="box"> <h3>管理人:ヘルニアクソ野郎</h3> <div class="img"><img src="../img/hellnear.jpg"></div> <p>低学歴とヘルニアで人生ハードモード☑ ICTと電子工作とブログやりつつ4コマ漫画作成予定で人生のラビリンスに迷い込み中☑ 都知事がストライクゾーン☑</p> </div> <div class="box"> <h3>電検三種ブログ</h3> <div class="img"><a href="https://denkenmusic.com"><img src="../img/denken.jpg"></a> </div></div> <div class="box"> <h3>特命工作員R</h3> <div class="img"><a href="https://mission-ro.com"><img src="../img/mission.jpg"></a> </div></div> </aside> </warapper> <footer> <h3>hell-nere shop</h3> </footer> <script src="../main.js"></script> <script src="../anime.min.js"></script> </body> </html>
htmlでマークアップして、cssでスタイルを付けていくだけです。javascriptも埋め込めば利便性が向上します。
div要素などをループ内で埋め込んでいけば、商品がリストカードのように表示されますね。トップ画面はこんな感じになります。↓
今回のサイトではやっていませんが、requireで各パーツ(header,main.side,footer)を分けて管理し、インクルードすれば、管理もしやすいし記述もすっきりすると思います。
完成したサイトは下記リンクにて公開していますので、是非ご覧ください。↓