สวัสดีครับ ในบทความนี้จะแจกตัวอย่าง Code PHP PDO แสดงสินค้าแยกตามหมวดหมู่-ประเภท โดยการคลิกที่เมนูและมีการส่งพารามิเตอร์ไอดีของประเภทสินค้าและนำไอดีไปคิวรี่เพื่อให้แสดงเฉพาะรายการสินค้าในประเภทดังกล่าว และโค้ดจะรองรับ php7, php8 ฝึกไว้ครับเผื่อได้ใช้
ตัวอย่างระบบที่มีการแสดงข้อมูลสินค้า
1.เว็บอีคอมเมิร์ช คลิก
2.เว็บ FOOD POS ขายอาหารหน้าร้าน คลิก
3.เว็บ Coffee POS ขายกาแฟหน้าร้าน คลิก
4.หลังบ้านระบบอีคอมเมิร์ช คลิก
5.เว็บบริษัท / เว็บองค์กร คลิก
6.ระบบอื่นๆ เพิ่มเติม คลิก
รวมคลิปสอนปรับพื้นฐาน ภาษา php ฟรี 100 คลิป ++ https://devbanban.com/?p=3940
โค้ดประกอบด้วย
- PHP PDO
- MySQL SQL Query
- HTML
- Bootstrap5 Class : col, table
มาเริ่มทำ workshop กันครับ *คอมเม้นอยู่ในโค้ด
0.รวม Workshop PHP PDO ก่อนหน้าคลิก
1.ตารางเก็บข้อมูลจะมี 2 ตาราง คือตารางเก็บข้อมูลประเภทสินค้า tbl_product_type และตารางเก็บข้อมูลสินค้า tbl_product ให้สร้างฐานข้อมูลก่อนครับ เช่น ฐานข้อมูลชื่อ workshop_pdo จากนั้นไปที่เมนู sql คัดลอกโค้ดไปวางและ go
tbl_product_type
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
CREATE TABLE `tbl_product_type` ( `type_id` int(11) NOT NULL, `type_name` varchar(100) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `tbl_product_type` -- INSERT INTO `tbl_product_type` (`type_id`, `type_name`) VALUES (1, 'ประเภทที่-1'), (2, 'ประเภทที่-2'); ALTER TABLE `tbl_product_type` ADD PRIMARY KEY (`type_id`); ALTER TABLE `tbl_product_type` MODIFY `type_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; |
tbl_product
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
CREATE TABLE `tbl_product` ( `no` int(11) NOT NULL, `type_id` int(11) NOT NULL COMMENT 'id ประเภทสินค้า', `product_name` varchar(100) NOT NULL, `product_price` int(16) NOT NULL, `product_img` varchar(100) NOT NULL, `product_qty` int(10) NOT NULL COMMENT 'qty' ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `tbl_product` -- INSERT INTO `tbl_product` (`no`, `type_id`, `product_name`, `product_price`, `product_img`, `product_qty`) VALUES (1, 1, 'Ford Mustang 2022', 4500000, 'prd.jpg', 10), (2, 1, 'ฟอร์ด มัสแตง 2021', 4500000, 'prd.jpg', 5), (3, 2, 'Ford Mustang 2021', 6500000, 'prd.jpg', 0), (4, 1, 'Ford มัสแตง 2021', 4500000, 'prd.jpg', 3), (5, 2, 'Ford Mustang 2021', 5500000, 'prd.jpg', 0), (6, 2, 'ฟอร์ด Mustang 2021', 4500000, 'prd.jpg', 20), (7, 1, 'รถ Ford Mustang 2021', 4500000, 'prd.jpg', 0), (8, 1, 'Ford Mustang 2019', 4500000, 'prd.jpg', 20); ALTER TABLE `tbl_product` ADD PRIMARY KEY (`no`); ALTER TABLE `tbl_product` MODIFY `no` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9; |
**ปล. หารูปมาใส่เองนะครับ ใส่ไว้ในโฟลเดอร์ upload ชื่อไฟล์ prd.jpg
2.สร้างโฟลเดอร์สำหรับทดสอบ เช่น ชื่อโฟลเดอร์ workshop_pdo *สำหรับคนที่เพิ่งฝึกยังไม่เข้าใจข้อนี้ว่าต้องสร้างไว้ที่ไหน ให้ดูคลิปชุดนี้ก่อน รวมคลิปสอนปรับพื้นฐาน ภาษา php ฟรี 100 คลิป ++ https://devbanban.com/?p=3940
3.ไฟล์เชื่อมต่อฐานข้อมูล ชื่อไฟล์ connect.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php $servername = "localhost"; $username = "root"; $password = ""; try { $conn = new PDO("mysql:host=$servername;dbname=workshop_pdo;charset=utf8", $username, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } //Set ว/ด/ป เวลา ให้เป็นของประเทศไทย date_default_timezone_set('Asia/Bangkok'); ?> |
4.สร้างโฟลเดอร์สำหรับเก็บไฟล์ภาพ ชื่อ upload (ตั้งตาม code บรรทัด 64)
5.ไฟล์ workshop ตั้งชื่อ showProductByType.php หรือแล้วแต่ เช่น index.php *มีคอมเม้นเพิ่มเติมใน code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
<?php //เรียกไฟล์เชื่อมต่อฐานข้อมูล require_once 'connect.php'; if (isset($_GET['type_id']) & isset($_GET['name'])) { //คิวรี่ข้อมูลสินค้าตามประเภท $stmt = $conn->prepare("SELECT* FROM tbl_product WHERE type_id=?"); $stmt->execute([$_GET['type_id']]); $stmt->execute(); $result = $stmt->fetchAll(); }else{ //คิวรี่ข้อมูลสินค้าทุกรายการ $stmt = $conn->prepare("SELECT* FROM tbl_product"); $stmt->execute(); $result = $stmt->fetchAll(); } //คิวรี่ข้อมูลประเภทสินค้า $stmPrdType = $conn->prepare("SELECT* FROM tbl_product_type"); $stmPrdType->execute(); $resultPrdType = $stmPrdType->fetchAll(); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"> <title>Basic PHP PDO แสดงสินค้าแยกตามหมวดหมู่-ประเภท by devbanban.com 2021</title> </head> <body> <div class="container"> <div class="row"> <div class="col-md-12"> <div class="alert alert-primary" role="alert"> <b> รายการสินค้า :: แสดงสินค้าแยกตามหมวดหมู่-ประเภท </b> </div> </div> </div> <div class="row"> <div class="col-md-3"> <div class="list-group"> <a href="showProductByType.php" class="list-group-item list-group-item-action active" aria-current="true"> หมวดสินค้า/ประเภทสินค้า </a> <?php foreach($resultPrdType as $rowPrdType) { ?> <a href="showProductByType.php?type_id=<?= $rowPrdType['type_id'];?>&name=<?= $rowPrdType['type_name'];?>" class="list-group-item list-group-item-action"> <?= $rowPrdType['type_name'];?></a> <?php } ?> </div> </div> <div class="col-md-9"> <div class="row"> <?php //ถ้ามีการคลิกเลือกประเภทสินค้า if(isset($_GET['name'])){ echo '<h4 style="color:red"> หมวดสินค้า ' .$_GET['name'] .'</h4>'; } //loop foreach($result as $row) { ?> <div class="col-sm-3" style="margin-bottom:50px;"> <img src="upload/<?= $row['product_img'];?>" width="100%"><br> <?= $row['product_name'];?> <br> QTY <?= $row['product_qty'];?> คัน <br> ราคา <?= number_format($row['product_price'],2);?> บาท <br> <?php if($row['product_qty'] > 0){ echo '<a href="#" style="width:100%" class="btn btn-success btn-sm">สั่งซื้อ</a>'; }else{ echo '<a href="#" style="width:100%" class="btn btn-danger btn-sm disabled" > สินค้าหมด !!</a>'; } ?> </div> <!-- //col --> <?php } ?> <br><br> </div> </div> <center>Basic PHP PDO แสดงสินค้าหน้าแรก by devbanban.com 2021 <br> คอร์สออนไลน์...<a href="https://devbanban.com/?cat=250" title="click">click</a> </center> </div> </div> </body> </html> |
6.ผลการทำงาน
ลองเอาไปประยุกต์ใช้ดูครับ และฝากติดตาม workshop ต่อๆ ไปด้วยครับผม
Bootstrap5 : https://getbootstrap.com/
ฝึก SQL : https://www.w3schools.com/sql/default.asp
แหล่งศึกษา PDO เพิ่มเติม : https://websitebeaver.com/php-pdo-vs-mysqli
List of PDOStatement::bindParam data_type parameters : https://www.php.net/manual/en/pdo.constants.php
ขอแนะนำระบบพร้อมใช้งาน *รายละเอียดและราคาอยู่ใต้คลิป
ระบบพร้อมใช้ทั้งหมด คลิก
ร่วมสนับสนุน ค่ากาแฟ ค่าโฮส devbanban.com ได้ที่
ธนาคารกรุงไทย สาขาเดอะมอลล์ท่าพระ
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 878-0-17747-6
————————————————————————————
ธนาคารไทยพาณิชย์ สาขามหาวิทยาลัยราชภัฏธนบุรี
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 406-359094-1
fanpage : https://www.facebook.com