diff --git a/controllers/orderController.js b/controllers/orderController.js index 54666049ca833d26ed2147b2250b86289e3088a2..761a68d1f6289ad580adf574a968f7622090d5db 100644 --- a/controllers/orderController.js +++ b/controllers/orderController.js @@ -1,27 +1,36 @@ -// แสดงหน้าสั่งซื้อ + exports.showOrderPage = (req, res) => { if (!req.session.userId) { - req.flash('error', 'คุณต้องเข้าสู่ระบบก่อนถึงจะสั่งซื้อได้'); + req.flash('error', 'คุณต้องเข้าสู่ระบบก่อนถึงจะเพิ่มสินค้าได้'); return res.redirect('/login'); } - res.render('order', { title: 'หน้าสั่งซื้อ' }); + res.render('order', { title: 'เพิ่มสินค้า' }); }; - // ส่งคำสั่งซื้อ + // บันทึกสินค้าใหม่ exports.submitOrder = (req, res) => { - const { productId, quantity, address } = req.body; + const { productName, price, quantity, description } = req.body; - // ตรวจสอบความถูกต้องและกระบวนการสั่งซื้อ - if (!productId || !quantity || !address) { + // ตรวจสอบว่าได้กรอกข้อมูลครบหรือไม่ + if (!productName || !price || !quantity || !description) { req.flash('error', 'กรุณากรอกข้อมูลให้ครบถ้วน'); return res.redirect('/order'); } - // สมมุติว่าบันทึกคำสั่งซื้อในฐานข้อมูล - // db.saveOrder({ productId, quantity, address, userId: req.session.userId }); + // สมมุติว่าบันทึกข้อมูลสินค้าในฐานข้อมูล + // ตัวอย่างการใช้ MySQL (ตัวอย่างนี้ใช้ `mysql2`): + const db = require('../db'); // เชื่อมต่อฐานข้อมูล - req.flash('success', 'คำสั่งซื้อของคุณถูกบันทึกเรียบร้อยแล้ว!'); - res.redirect('/order'); + const query = 'INSERT INTO products (product_name, price, quantity, description) VALUES (?, ?, ?, ?)'; + db.execute(query, [productName, price, quantity, description]) + .then(() => { + req.flash('success', 'สินค้าได้ถูกเพิ่มเรียบร้อยแล้ว!'); + res.redirect('/order'); + }) + .catch(err => { + req.flash('error', 'เกิดข้อผิดพลาดในการเพิ่มสินค้า'); + res.redirect('/order'); + }); }; \ No newline at end of file diff --git a/db.js b/db.js index b7bdc177a9419de7428a493260568b889d38bda8..e15872fe13a3f4aec8442e1c1f91780eb177989b 100644 --- a/db.js +++ b/db.js @@ -10,5 +10,11 @@ const pool = mysql.createPool({ connectionLimit: 10, queueLimit: 0 }); - +db.connect((err) => { + if (err) { + console.error('Error connecting to the database:', err); + } else { + console.log('Connected to the database'); + } + }); module.exports = pool; diff --git a/views/order.ejs b/views/order.ejs index 9ecffa7f07417224c111550fa79d43c9a256fdbd..673df8d8cf2b56282679dfbcf58c51d9b8a4aa51 100644 --- a/views/order.ejs +++ b/views/order.ejs @@ -1,161 +1,48 @@ <!DOCTYPE html> -<html lang="en"> - <head> - <!-- basic --> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <title>ASA</title> - <meta name="keywords" content=""> - <meta name="description" content=""> - <meta name="author" content=""> - <!-- bootstrap css --> - <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"> - <!-- style css --> - <link rel="stylesheet" type="text/css" href="css/style.css"> - <!-- Responsive--> - <link rel="stylesheet" href="css/responsive.css"> - <!-- fevicon --> - <link rel="icon" href="images/fevicon.png" type="image/gif" /> - <!-- Scrollbar Custom CSS --> - <link rel="stylesheet" href="css/jquery.mCustomScrollbar.min.css"> - <!-- Tweaks for older IEs--> - <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"> - </head> - <body> - <!--header section start --> - <div class="header_section"> - <nav class="navbar navbar-expand-lg navbar-light bg-dark" > - <div class="logo"><a href="/"><img src="images/logo.png"></a></div> - <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav"aria-expanded="false" aria-label="Toggle navigation"> - <span class="navbar-toggler-icon"></span> - </button> - <div class="collapse navbar-collapse" id="navbarNav"> - <ul class="navbar-nav ml-auto"> - <li class="nav-item active"> - <a class="nav-link" href="/">Home</a> - </li> - <% if (loggedIn) { %> - <li class="nav-item"> - <a class="nav-link text-danger" href="/logout">Logout</a> - </li> - <% } %> - <% if (!loggedIn) { %> - <li class="nav-item"> - <a class="nav-link" href="/login">Login</a> - </li> - <li class="nav-item"> - <a class="nav-link" href="/register">Register</a> - </li> - <% } %> - <li class="nav-item"> - <a class="nav-link" href="#"><i class="fa fa-search" aria-hidden="true"></i></a> - </li> - </ul> - </div> - </nav> +<html lang="th"> +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>เพิ่มสินค้า</title> + <link rel="stylesheet" href="/css/style.css"> +</head> +<body> + <h1>เพิ่มสินค้าใหม่</h1> + + <% if (flash.error && flash.error.length > 0) { %> + <div class="alert alert-danger"> + <%= flash.error %> + </div> + <% } %> + <% if (flash.success && flash.success.length > 0) { %> + <div class="alert alert-success"> + <%= flash.success %> </div> - <!--header section end --> + <% } %> - <!-- Add Product section start --> - <div class="add_product_section layout_padding"> - <div class="container"> - <h1 class="gallery_taital">Add New Product</h1> - <% if (loggedIn) { %> - <form action="/product/add" method="POST" enctype="multipart/form-data"> - <!-- Show error message --> - <% if (message && message.length > 0) { %> - <div class="alert alert-danger" role="alert"> - <%= message %> - </div> - <% } %> + <form action="/order" method="POST"> + <div class="form-group"> + <label for="productName">ชื่อสินค้า:</label> + <input type="text" id="productName" name="productName" class="form-control" required> + </div> - <div class="form-floating mb-3"> - <label for="productName">Product Name</label> - <input type="text" class="form-control" id="productName" name="product_name" placeholder="Product Name" required> - </div> + <div class="form-group"> + <label for="price">ราคา:</label> + <input type="number" id="price" name="price" class="form-control" required> + </div> - <div class="form-floating mb-3"> - <label for="productDescription">Product Description</label> - <textarea class="form-control" id="productDescription" name="product_description" placeholder="Product Description" required></textarea> - </div> + <div class="form-group"> + <label for="quantity">จำนวน:</label> + <input type="number" id="quantity" name="quantity" class="form-control" required> + </div> - <div class="form-floating mb-3"> - <label for="productPrice">Product Price</label> - <input type="number" class="form-control" id="productPrice" name="product_price" placeholder="Product Price" required> - </div> + <div class="form-group"> + <label for="description">คำอธิบายสินค้า:</label> + <textarea id="description" name="description" class="form-control" required></textarea> + </div> - <div class="form-floating mb-3"> - <label for="productImage">Product Image</label> - <input type="file" class="form-control" id="productImage" name="product_image" required> - </div> + <button type="submit" class="btn btn-primary">เพิ่มสินค้า</button> + </form> - <button class="btn btn-primary w-100 py-2" type="submit">Add Product</button> - </form> - <% } else { %> - <p>Please log in to add a product.</p> - <% } %> - </div> - </div> - <!-- Add Product section end --> - - <!-- footer section start --> - <div class="footer_section layout_padding"> - <div class="container"> - <div class="row"> - <div class="col-lg-3 col-sm-6"> - <h3 class="useful_text">About</h3> - <p class="footer_text">Let's use our time to do good things and earn volunteer hours.</p> - </div> - <div class="col-lg-3 col-sm-6"> - <h3 class="useful_text">Menu</h3> - <div class="footer_menu"> - <ul> - <li><a href="/">Home</a></li> - </ul> - </div> - </div> - <div class="col-lg-3 col-sm-6"> - <h3 class="useful_text">Contact Us</h3> - <div class="location_text"> - <ul> - <li> - <a href="#"> - <i class="fa fa-map-marker" aria-hidden="true"></i><span class="padding_left_10">Address : Loram Ipusm</span> - </a> - </li> - <li> - <a href="#"> - <i class="fa fa-phone" aria-hidden="true"></i><span class="padding_left_10">Call : +01 1234567890</span> - </a> - </li> - <li> - <a href="#"> - <i class="fa fa-envelope" aria-hidden="true"></i><span class="padding_left_10">Email : demo@gmail.com</span> - </a> - </li> - </ul> - </div> - </div> - </div> - </div> - </div> - <!-- footer section end --> - <!-- copyright section start --> - <div class="copyright_section"> - <div class="container"> - <p class="copyright_text"> @ASA 2025 </p> - </div> - </div> - <!-- copyright section end --> - <!-- Javascript files--> - <script src="js/jquery.min.js"></script> - <script src="js/popper.min.js"></script> - <script src="js/bootstrap.bundle.min.js"></script> - <script src="js/jquery-3.0.0.min.js"></script> - <script src="js/plugin.js"></script> - <!-- sidebar --> - <script src="js/jquery.mCustomScrollbar.concat.min.js"></script> - <script src="js/custom.js"></script> - </body> +</body> </html>