Introduccion
Un dashboard personalizado puede transformar por completo la forma en que gestionas tu tienda PrestaShop. A diferencia de los módulos estándar o del back-office, un panel externo en PHP puede mostrar justo las métricas que necesitas, conectarse directamente a la base de datos y actualizarse en tiempo real.
En este artículo aprenderás a crear un dashboard desde cero con PHP y MySQL que muestra estadísticas clave de tu tienda: ventas, pedidos, productos con más movimiento, y más. Todo con código reutilizable, consultas optimizadas e imágenes de ejemplo.
Índice
Introducción 1. ¿Por qué crear un dashboard personalizado? 2. Requisitos previos y conexión con la base de datos 3. Diseño básico del dashboard 4. Consultas SQL clave para estadísticas 5. Integración en PHP con panel visual 6. Seguridad y control de acceso 7. Comparativa con módulos de PrestaShop Conclusión- ¿Por qué crear un dashboard personalizado?
Ventajas | Descripción |
🔍 Métricas a medida | Solo ves lo que realmente importa para tu negocio |
📡 Datos en tiempo real | Sin retrasos de caché ni agregaciones lentas |
🔐 Control total | Puedes integrar métricas de ERP o externas |
💰 Sin costes adicionales | No dependes de módulos pagos o suscripciones |
Un dashboard externo puede ser una página segura alojada en tu servidor o una app interna conectada por VPN.
- Requisitos previos y conexión con la base de datos
- Acceso al servidor donde se aloja PrestaShop
- Conocimiento de la estructura de la base de datos
- PHP 7.4+ y MySQL 5.7+ recomendados
Ejemplo de conexión
$mysqli = new mysqli('localhost', 'usuario', 'clave', 'basededatos');
if ($mysqli->connect_error) {
die('Error de conexión: ' . $mysqli->connect_error);
}
- Lógica de actualización: qué campos modificar
Campo | Tabla | Método PHP sugerido |
Precio | ps_product / ps_product_attribute | setPrice() y setRegularPrice() |
Stock | ps_stock_available | StockAvailable::setQuantity() |
Se puede trabajar tanto con productos simples como combinaciones, pero en este ejemplo usaremos productos base identificados por referencia.
Estructura HTML sugerida
<div class=»dashboard»>
<div class=»card»>Total Ventas Hoy: <span id=»ventas_hoy»></span></div>
<div class=»card»>Pedidos Hoy: <span id=»pedidos_hoy»></span></div>
</div>
Puedes usar frameworks como Bootstrap o Tailwind para darle diseño profesional.
- Consultas SQL clave para estadísticas
Total de ventas hoy
SELECT SUM(total_paid) AS ventas
FROM ps_orders
WHERE DATE(date_add) = CURDATE();
Total de pedidos hoy
SELECT COUNT(*) AS pedidos
FROM ps_orders
WHERE DATE(date_add) = CURDATE();
Top 5 productos más vendidos
SELECT pl.name, SUM(od.product_quantity) AS cantidad
FROM ps_order_detail od
JOIN ps_product_lang pl ON od.product_id = pl.id_product
GROUP BY od.product_id
ORDER BY cantidad DESC
LIMIT 5;
Productos con stock bajo
SELECT p.reference, sa.quantity
FROM ps_stock_available sa
JOIN ps_product p ON p.id_product = sa.id_product
WHERE sa.quantity < 5;
<?php
require(dirname(__FILE__).'/config/config.inc.php');
require(dirname(__FILE__).'/init.php');
$file = fopen('precios.csv', 'r');
$first = true;
while (($line = fgetcsv($file, 1000, ",")) !== FALSE) {
if ($first) { $first = false; continue; }
list($ref, $price, $qty) = $line;
$id = (int)Product::getIdByReference($ref);
if (!$id) continue;
$product = new Product($id);
$product->setPrice($price);
$product->setRegularPrice($price);
$product->save();
StockAvailable::setQuantity($id, 0, (int)$qty);
}
fclose($file);
echo "Actualización completa.";
?>
- Integración en PHP con panel visual
Código PHP ejemplo
$sql = "SELECT SUM(total_paid) AS ventas FROM ps_orders WHERE DATE(date_add) = CURDATE()"; $result = $mysqli->query($sql); $ventas = $result->fetch_assoc()['ventas'];
Y lo inyectas en HTML:
<div class="card">
Total Ventas Hoy: <?php echo number_format($ventas, 2); ?> €
</div>
Puedes usar JavaScript o AJAX para recargarlo cada 30 segundos si lo necesitas en tiempo real.
- Seguridad y control de acceso
No olvides proteger el dashboard con autenticación:
session_start();
if (!isset($_SESSION['user'])) {
header('Location: login.php'); exit();
}
Opcionalmente, limita IPs desde el servidor o usa .htaccess para restringir accesos externos.
- Comparativa con módulos de PrestaShop
Solución | Ventajas | Desventajas |
Dashboard PHP propio | Gratis, flexible, personalizable | Requiere desarrollo |
Módulos del back-office | Listo para usar, integrado | Menos flexible, menor rendimiento |
Soluciones de terceros (Power BI, Metabase) | Visualmente avanzadas | Coste y curva de aprendizaje |
Conclusión
Construir un dashboard en PHP conectado a tu tienda PrestaShop es una forma directa y eficaz de tener el control de tus métricas clave. A diferencia de los módulos o herramientas externas, puedes decidir qué mostrar, cómo visualizarlo y con qué frecuencia actualizarlo.
Ideal para equipos internos, gestores de eCommerce o agencias que necesitan informes a medida sin depender del back-office.