0) { if (isset($_SESSION['carrito'][$id])) { $_SESSION['carrito'][$id]++; } else { $_SESSION['carrito'][$id] = 1; } } $params = $_GET; unset($params['add']); $redirect = 'index.php'; if (!empty($params)) { $redirect .= '?' . http_build_query($params); } header("Location: $redirect"); exit; } /* |-------------------------------------------------------------------------- | FILTROS / BÚSQUEDA / ORDEN |-------------------------------------------------------------------------- */ $buscar = isset($_GET['buscar']) ? trim($_GET['buscar']) : ''; $tipo = isset($_GET['tipo']) ? trim($_GET['tipo']) : ''; $marca = isset($_GET['marca']) ? trim($_GET['marca']) : ''; $orden = isset($_GET['orden']) ? trim($_GET['orden']) : 'recientes'; $where = ["activo = 1"]; $params = []; $types = ''; if ($buscar !== '') { $where[] = "(descripcion LIKE ? OR formula LIKE ? OR marca LIKE ?)"; $like = '%' . $buscar . '%'; $params[] = $like; $params[] = $like; $params[] = $like; $types .= 'sss'; } if ($tipo !== '') { $where[] = "tipo_producto = ?"; $params[] = $tipo; $types .= 's'; } if ($marca !== '') { $where[] = "marca = ?"; $params[] = $marca; $types .= 's'; } $orderBy = "id DESC"; switch ($orden) { case 'precio_menor': $orderBy = "precio ASC"; break; case 'precio_mayor': $orderBy = "precio DESC"; break; case 'nombre_az': $orderBy = "descripcion ASC"; break; case 'nombre_za': $orderBy = "descripcion DESC"; break; case 'recientes': default: $orderBy = "id DESC"; break; } $whereSql = implode(' AND ', $where); /* |-------------------------------------------------------------------------- | CATÁLOGO |-------------------------------------------------------------------------- */ $sql = "SELECT id, descripcion, formula, precio, tipo_producto, marca FROM productos WHERE $whereSql ORDER BY $orderBy LIMIT 100"; $stmt = $conn->prepare($sql); if (!$stmt) { die("Error al preparar consulta principal: " . $conn->error); } if (!empty($params)) { $stmt->bind_param($types, ...$params); } $stmt->execute(); $result = $stmt->get_result(); /* |-------------------------------------------------------------------------- | FILTROS DISPONIBLES |-------------------------------------------------------------------------- */ $tipos = []; $marcas = []; $resTipos = $conn->query(" SELECT DISTINCT tipo_producto FROM productos WHERE activo = 1 AND tipo_producto IS NOT NULL AND tipo_producto <> '' ORDER BY tipo_producto ASC "); if ($resTipos) { while ($rowTipo = $resTipos->fetch_assoc()) { $tipos[] = $rowTipo['tipo_producto']; } } $resMarcas = $conn->query(" SELECT DISTINCT marca FROM productos WHERE activo = 1 AND marca IS NOT NULL AND marca <> '' ORDER BY marca ASC LIMIT 100 "); if ($resMarcas) { while ($rowMarca = $resMarcas->fetch_assoc()) { $marcas[] = $rowMarca['marca']; } } $totalCarrito = array_sum($_SESSION['carrito']); /* |-------------------------------------------------------------------------- | FUNCIONES DE APOYO |-------------------------------------------------------------------------- */ function h($value) { return htmlspecialchars((string)$value, ENT_QUOTES, 'UTF-8'); } function productEmoji($tipoProducto) { $tipo = mb_strtolower(trim((string)$tipoProducto)); if (strpos($tipo, 'gen') !== false) return '🧪'; if (strpos($tipo, 'material') !== false) return '🩺'; if (strpos($tipo, 'cura') !== false) return '🩹'; if (strpos($tipo, 'hig') !== false) return '🧴'; if (strpos($tipo, 'hospi') !== false) return '🏥'; if (strpos($tipo, 'suple') !== false) return '🌿'; return '💊'; } ?> Pharma Dio Distribución | Catálogo
Catálogo farmacéutico Compra por categorías, marca o producto

Catálogo farmacéutico directo a producto

Diseño pensado para que el usuario entre a buscar, filtrar y ver productos desde arriba, no para leer información de empresa.

Encuentra por categoría, marca o presentación

Base conectada a MySQL para manejar catálogo real, filtros funcionales y carrito por sesión.

Grid de catálogo Filtros Búsqueda Carrito

Productos

Vista principal del catálogo con filtros laterales y grid directo a producto.

🧾 Resultados cargados
Buscar: Tipo: Marca:
num_rows > 0): ?> fetch_assoc()): ?>

Sin resultados

No encontramos productos con los filtros actuales. Prueba quitando marca, tipo o cambiando el texto de búsqueda.

Ver todo el catálogo