') as stock_por_ciudad FROM productos p LEFT JOIN stock_por_ciudad spc ON p.id = spc.producto_id LEFT JOIN ciudades c ON spc.ciudad_id = c.id"; $params = []; // Apply search filter if (!empty($search_term)) { $sql_count .= " WHERE nombre LIKE :search"; $sql .= " WHERE p.nombre LIKE :search"; $params[':search'] = '%' . $search_term . '%'; } // Get total number of products (filtered or not) $total_stmt = $pdo->prepare($sql_count); $total_stmt->execute($params); $total_products = $total_stmt->fetchColumn(); $total_pages = ceil($total_products / $products_per_page); // Add grouping, ordering and pagination to the main query $sql .= " GROUP BY p.id ORDER BY p.id DESC LIMIT :limit OFFSET :offset"; $stmt = $pdo->prepare($sql); // Bind search param if it exists if (!empty($search_term)) { $stmt->bindValue(':search', $params[':search'], PDO::PARAM_STR); } $stmt->bindValue(':limit', $products_per_page, PDO::PARAM_INT); $stmt->bindValue(':offset', $offset, PDO::PARAM_INT); $stmt->execute(); $products = $stmt->fetchAll(PDO::FETCH_ASSOC); ?>