query('SELECT * FROM categories'); $stmt->execute(); $categories = $stmt->fetchAll(PDO::FETCH_ASSOC); // Get the current category from the GET request, if none exists set the default selected category to: all $category = isset($_GET['category']) ? $_GET['category'] : $main_category; $category_sql = ''; if ($category != $main_category) { $category_sql = 'JOIN products_categories pc ON pc.category_id = :category_id AND pc.product_id = p.id JOIN categories c ON c.id = pc.category_id'; } // Get the sort from GET request, will occur if the user changes an item in the select box $default_product_sort = default_product_sort; $sort = isset($_GET['sort']) ? $_GET['sort'] : $default_product_sort; // The amounts of products to show on each page $num_products_on_each_page = 25; // The current page, in the URL this will appear as index.php?page=products&p=1, index.php?page=products&p=2, etc... $current_page = isset($_GET['p']) && is_numeric($_GET['p']) ? (int)$_GET['p'] : 1; // Select products ordered by the date added if ($sort == 'sort1') { // sort1 = Alphabetical A-Z $stmt = $pdo->prepare('SELECT p.*, (SELECT m.full_path FROM products_media pm JOIN media m ON m.id = pm.media_id WHERE pm.product_id = p.id ORDER BY pm.position ASC LIMIT 1) AS img FROM products p ' . $category_sql . ' WHERE p.status = 1 ORDER BY p.name ASC LIMIT :page,:num_products'); } elseif ($sort == 'sort2') { // sort2 = Alphabetical Z-A $stmt = $pdo->prepare('SELECT p.*, (SELECT m.full_path FROM products_media pm JOIN media m ON m.id = pm.media_id WHERE pm.product_id = p.id ORDER BY pm.position ASC LIMIT 1) AS img FROM products p ' . $category_sql . ' WHERE p.status = 1 ORDER BY p.name DESC LIMIT :page,:num_products'); } elseif ($sort == 'sort3') { // sort3 = Newest $stmt = $pdo->prepare('SELECT p.*, (SELECT m.full_path FROM products_media pm JOIN media m ON m.id = pm.media_id WHERE pm.product_id = p.id ORDER BY pm.position ASC LIMIT 1) AS img FROM products p ' . $category_sql . ' WHERE p.status = 1 ORDER BY p.date_added DESC LIMIT :page,:num_products'); } elseif ($sort == 'sort4') { // sort4 = Oldest $stmt = $pdo->prepare('SELECT p.*, (SELECT m.full_path FROM products_media pm JOIN media m ON m.id = pm.media_id WHERE pm.product_id = p.id ORDER BY pm.position ASC LIMIT 1) AS img FROM products p ' . $category_sql . ' WHERE p.status = 1 ORDER BY p.date_added ASC LIMIT :page,:num_products'); } elseif ($sort == 'sort5') { // sort5 = Highest Price $stmt = $pdo->prepare('SELECT p.*, (SELECT m.full_path FROM products_media pm JOIN media m ON m.id = pm.media_id WHERE pm.product_id = p.id ORDER BY pm.position ASC LIMIT 1) AS img FROM products p ' . $category_sql . ' WHERE p.status = 1 ORDER BY p.price DESC LIMIT :page,:num_products'); } elseif ($sort == 'sort6') { // sort6 = Lowest Price $stmt = $pdo->prepare('SELECT p.*, (SELECT m.full_path FROM products_media pm JOIN media m ON m.id = pm.media_id WHERE pm.product_id = p.id ORDER BY pm.position ASC LIMIT 1) AS img FROM products p ' . $category_sql . ' WHERE p.status = 1 ORDER BY p.price ASC LIMIT :page,:num_products'); } else { // No sort was specified, get the products with no sorting $stmt = $pdo->prepare('SELECT p.*, (SELECT m.full_path FROM products_media pm JOIN media m ON m.id = pm.media_id WHERE pm.product_id = p.id ORDER BY pm.position ASC LIMIT 1) AS img FROM products p ' . $category_sql . ' WHERE p.status = 1 LIMIT :page,:num_products'); } // bindValue will allow us to use integer in the SQL statement, we need to use for LIMIT if ($category != $main_category) { $stmt->bindValue(':category_id', $category, PDO::PARAM_INT); } $stmt->bindValue(':page', ($current_page - 1) * $num_products_on_each_page, PDO::PARAM_INT); $stmt->bindValue(':num_products', $num_products_on_each_page, PDO::PARAM_INT); $stmt->execute(); // Fetch the products from the database and return the result as an Array $products = $stmt->fetchAll(PDO::FETCH_ASSOC); // Get the total number of products $stmt = $pdo->prepare('SELECT COUNT(*) FROM products p ' . $category_sql . ' WHERE p.status = 1'); if ($category != $main_category) { $stmt->bindValue(':category_id', $category, PDO::PARAM_INT); } $stmt->execute(); $total_products = $stmt->fetchColumn(); //get all media $stmt = $pdo->query('SELECT id, full_path FROM media'); $stmt->execute(); $media = $stmt->fetchAll(PDO::FETCH_ASSOC); ?> =template_header_top($products_text)?>
'.show_offer_product_text.'
'; } ?>> =$stock_status?>
=$product['name']?> =currency_code?>=number_format($product['price'],2)?> 0): ?> =currency_code?>=number_format($product['rrp'],2)?>