diff --git a/controllers/cartController.js b/controllers/cartController.js
new file mode 100644
index 0000000000000000000000000000000000000000..44af215b3c21fef1aded17768a9c39949cbdecb4
--- /dev/null
+++ b/controllers/cartController.js
@@ -0,0 +1,94 @@
+const pool = require('../db');
+
+exports.addToCart = (req, res) => {
+    const { product_id, price } = req.body;
+    const quantity = parseInt(req.body.quantity) || 1;
+
+    if (!req.session.cart) {
+        req.session.cart = [];
+    }
+
+    const existingProduct = req.session.cart.find(item => item.product_id === product_id);
+    if (existingProduct) {
+        existingProduct.quantity += quantity;
+    } else {
+        req.session.cart.push({ product_id, quantity, price });
+    }
+
+    res.redirect('/cart');
+};
+
+exports.viewCart = async (req, res) => {
+    const cart = req.session.cart || [];
+    
+    if (cart.length === 0) {
+        return res.render('cart', { cart: [], products: [] });
+    }
+
+    const productIds = cart.map(item => item.product_id);
+    try {
+        const [products] = await pool.query('SELECT * FROM products WHERE product_id IN (?)', [productIds]);
+
+        // ผูกข้อมูลสินค้าเข้ากับตะกร้า
+        const cartWithDetails = cart.map(item => {
+            const product = products.find(p => p.product_id == item.product_id);
+            
+            // ตรวจสอบว่าเจอสินค้าไหม
+            if (product) {
+                return { ...item, product_name: product.product_name, image: product.image };
+            } else {
+                // ถ้าไม่พบสินค้า, คืนค่าด้วยค่า default หรือข้อความ
+                return { ...item, product_name: 'ไม่พบสินค้า', image: 'default_image.jpg' };
+            }
+        });
+
+        res.render('cart', { cart: cartWithDetails });
+    } catch (err) {
+        res.status(500).send('เกิดข้อผิดพลาดในการโหลดตะกร้าสินค้า: ' + err.message);
+    }
+};
+
+
+exports.removeFromCart = (req, res) => {
+    const product_id = req.params.id;
+    req.session.cart = req.session.cart.filter(item => item.product_id !== product_id);
+    res.redirect('/cart');
+};
+
+exports.checkout = async (req, res) => {
+    if (!req.session.userIdEmail) {
+        return res.status(401).send('กรุณาเข้าสู่ระบบก่อนทำการสั่งซื้อ');
+    }
+
+    const cart = req.session.cart || [];
+    if (cart.length === 0) {
+        return res.redirect('/cart');
+    }
+
+    try {
+        const totalAmount = cart.reduce((sum, item) => sum + item.price * item.quantity, 0);
+        const userEmail = req.session.userIdEmail;
+
+        // ดึง user_id จาก email
+        const [user] = await pool.query('SELECT id FROM users WHERE email = ?', [userEmail]);
+        if (user.length === 0) {
+            return res.status(404).send('ไม่พบผู้ใช้งาน');
+        }
+        const userId = user[0].id;
+
+        // สร้างคำสั่งซื้อใน Orders
+        const [orderResult] = await pool.query('INSERT INTO orders (user_id, total_amount) VALUES (?, ?)', [userId, totalAmount]);
+        const orderId = orderResult.insertId;
+
+        // เพิ่มรายการสินค้าลงใน Order_Items
+        const orderItems = cart.map(item => [orderId, item.product_id, item.quantity, item.price]);
+        await pool.query('INSERT INTO order_items (order_id, book_id, quantity, price) VALUES ?', [orderItems]);
+
+        // ล้างตะกร้าหลังจาก Checkout สำเร็จ
+        req.session.cart = [];
+
+        res.redirect('/orderConfirmation');
+    } catch (err) {
+        res.status(500).send('เกิดข้อผิดพลาดในการสั่งซื้อ: ' + err.message);
+    }
+};
\ No newline at end of file
diff --git a/controllers/indexController.js b/controllers/indexController.js
index ac3a6a044286c9202ce03e568a653ddf62706aae..932af7d1986a687d306782f9f20f835d1756d2b2 100644
--- a/controllers/indexController.js
+++ b/controllers/indexController.js
@@ -1,4 +1,30 @@
+const pool = require('../db');
 
-module.exports = (req, res) => {
-    res.render('index', { message: req.flash('message') });
-}
\ No newline at end of file
+exports.getProducts = async (req, res) => {
+    try {
+      const [rows] = await pool.query('SELECT * FROM products');
+      res.render('index', { products: rows });
+    } catch (err) {
+      res.status(500).send('Database error: ' + err.message);
+    }
+  };
+
+  exports.getProductDetail = async (req, res) => {
+    const productId = req.params.id;
+    try {
+      const [rows] = await pool.query(`
+        SELECT p.*, u.email AS owner
+        FROM products p
+        LEFT JOIN users u ON p.owner = u.email
+        WHERE p.product_id = ?`, [productId]);
+  
+      if (rows.length === 0) {
+        return res.status(404).send('ไม่พบสินค้านี้');
+      }
+  
+      res.render('product', { product: rows[0], currentUserEmail: req.session.userIdEmail || '' });
+    } catch (err) {
+      res.status(500).send('Database error: ' + err.message);
+    }
+  };
+  
\ No newline at end of file
diff --git a/controllers/productController.js b/controllers/productController.js
index 72b44363e5ca00b0793952c92b002bbf60c43b42..b003fdbc846c9448f777658b01a30376f89902c4 100644
--- a/controllers/productController.js
+++ b/controllers/productController.js
@@ -1,15 +1,12 @@
 const pool = require('../db');
 
 exports.showAddProductForm = (req, res) => {
-   if (!req.session.userIdEmail) {
-       return res.redirect('/login');
-   }
    res.render('addProduct');
 };
 
 exports.createProduct = async (req, res) => {
     const { product_name, price, image, description } = req.body;
-    const owner = req.session.userIdEmail;
+    const owner = req.session.userIdEmail; // เราต้องเก็บ email ตอน login ด้วยนะครับ
     try {
        const sql = 'INSERT INTO products (product_name, price, image, description, owner) VALUES (?, ?, ?, ?, ?)';
        await pool.query(sql, [product_name, price, image, description, owner]);
@@ -17,13 +14,11 @@ exports.createProduct = async (req, res) => {
     } catch (err) {
        res.status(500).send('เกิดข้อผิดพลาดในการเพิ่มสินค้า: ' + err.message);
     }
-};
+ };
 
+ 
 exports.showUpdateProductForm = async (req, res) => {
     const productId = req.params.id;
-    if (!req.session.userIdEmail) {
-        return res.redirect('/login');
-    }
     try {
         const [rows] = await pool.query('SELECT * FROM products WHERE product_id = ?', [productId]);
         if (rows.length === 0) {
@@ -35,7 +30,7 @@ exports.showUpdateProductForm = async (req, res) => {
     }
 };
 
-exports.updateProduct = async (req, res) => {
+ exports.updateProduct = async (req, res) => {
     const productId = req.params.id;
     const { product_name, price, image, description } = req.body;
     const currentUserEmail = req.session.userIdEmail;
@@ -59,10 +54,11 @@ exports.updateProduct = async (req, res) => {
     }
 };
 
-exports.deleteProduct = async (req, res) => {
+ exports.deleteProduct = async (req, res) => {
     const productId = req.params.id;
     const currentUserEmail = req.session.userIdEmail;
     try {
+      // ตรวจสอบว่าผู้ใช้นี้เป็นเจ้าของหรือไม่
       const [rows] = await pool.query('SELECT * FROM products WHERE product_id = ?', [productId]);
       if (rows.length === 0) {
         return res.status(404).send('ไม่พบสินค้านี้');
@@ -71,21 +67,22 @@ exports.deleteProduct = async (req, res) => {
       if (product.owner !== currentUserEmail) {
         return res.status(403).send('คุณไม่มีสิทธิ์ลบสินค้านี้');
       }
-
+  
+      // ลบสินค้าได้
       await pool.query('DELETE FROM products WHERE product_id = ?', [productId]);
       res.redirect('/');
     } catch (err) {
-      res.status(500).send('เกิดข้อผิดพลาดในการลบสินค้า: ' + err.message);
+      res.status(500).send('Database error: ' + err.message);
     }
-};
+  };
 
-exports.searchProducts = async (req, res) => {
-    const searchQuery = req.query.q;
+  exports.searchProducts = async (req, res) => {
+    const searchQuery = req.query.q; // รับค่าค้นหาจาก query parameter
     try {
         const sql = 'SELECT * FROM products WHERE product_name LIKE ?';
-        const [rows] = await pool.query(sql, [`%${searchQuery}%`]);
+        const [rows] = await pool.query(sql, [`%${searchQuery}%`]); // ค้นหาชื่อสินค้าที่คล้ายกัน
 
-        res.render('searchResults', { products: rows, searchQuery });
+        res.render('searchResults', { products: rows, searchQuery }); // ส่งผลลัพธ์ไปยังหน้า searchResults.ejs
     } catch (err) {
         res.status(500).send('เกิดข้อผิดพลาดในการค้นหา: ' + err.message);
     }
@@ -93,28 +90,31 @@ exports.searchProducts = async (req, res) => {
 
 exports.orderHistory = async (req, res) => {
     if (!req.session.userIdEmail) {
-        return res.redirect('/login');
+        return res.status(401).send('กรุณาเข้าสู่ระบบเพื่อดูประวัติการสั่งซื้อ');
     }
 
     try {
         const userEmail = req.session.userIdEmail;
 
+        // ดึง user_id จาก email
         const [user] = await pool.query('SELECT id FROM users WHERE email = ?', [userEmail]);
         if (user.length === 0) {
             return res.status(404).send('ไม่พบผู้ใช้งาน');
         }
         const userId = user[0].id;
 
+        // ดึงคำสั่งซื้อทั้งหมดของผู้ใช้
         const [orders] = await pool.query(
             'SELECT * FROM orders WHERE user_id = ? ORDER BY created_at DESC',
             [userId]
         );
 
+        // ดึงรายการสินค้าสำหรับแต่ละคำสั่งซื้อ
         for (let order of orders) {
             const [items] = await pool.query(
                 `SELECT oi.*, p.product_name, p.image 
                  FROM order_items oi 
-                 JOIN products p ON oi.product_id = p.product_id 
+                 JOIN products p ON oi.book_id = p.product_id 
                  WHERE oi.order_id = ?`,
                 [order.order_id]
             );
@@ -126,3 +126,6 @@ exports.orderHistory = async (req, res) => {
         res.status(500).send('เกิดข้อผิดพลาดในการดึงประวัติการสั่งซื้อ: ' + err.message);
     }
 };
+
+
+  
\ No newline at end of file