Skip to content

Instantly share code, notes, and snippets.

@jesussuarz
Created October 23, 2025 09:10
Show Gist options
  • Save jesussuarz/1a4b031e313565c1b9b491ac191bf607 to your computer and use it in GitHub Desktop.
Save jesussuarz/1a4b031e313565c1b9b491ac191bf607 to your computer and use it in GitHub Desktop.
<?php
/**
* Exportar todos los correos de clientes desde PrestaShop 8.1
* Autor: soporteserver.com
* Uso: subir al directorio raíz de la tienda y abrir en el navegador.
*/
$parametersFile = __DIR__ . '/app/config/parameters.php';
if (!file_exists($parametersFile)) {
die('No se encontró el archivo app/config/parameters.php');
}
$params = include $parametersFile;
$db = $params['parameters'];
$host = $db['database_host'];
$name = $db['database_name'];
$user = $db['database_user'];
$pass = $db['database_password'];
$prefix = $db['database_prefix'];
try {
$pdo = new PDO("mysql:host=$host;dbname=$name;charset=utf8mb4", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Establecer codificación UTF-8 para evitar problemas con acentos
$pdo->exec("SET NAMES 'utf8mb4'");
// Consulta: obtener nombre, apellido y correo de clientes activos
$sql = "SELECT
c.id_customer,
c.firstname,
c.lastname,
c.email
FROM {$prefix}customer c
WHERE c.deleted = 0
ORDER BY c.date_add DESC";
$stmt = $pdo->query($sql);
$clientes = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (empty($clientes)) {
die('No se encontraron clientes para exportar.');
}
// Nombre del archivo de salida
$filename = __DIR__ . '/clientes_export_' . date('Ymd_His') . '.csv';
// Abrir archivo en modo escritura
$file = fopen($filename, 'w');
if (!$file) {
die('No se pudo crear el archivo CSV.');
}
// Escribir cabecera en UTF-8 con BOM para Excel
fprintf($file, chr(0xEF).chr(0xBB).chr(0xBF));
// Cabecera de columnas
fputcsv($file, ['ID', 'Nombre', 'Apellido', 'Correo'], ',');
// Escribir filas
foreach ($clientes as $cliente) {
fputcsv($file, [
$cliente['id_customer'],
$cliente['firstname'],
$cliente['lastname'],
$cliente['email']
], ',');
}
fclose($file);
echo "<h3>✅ Exportación completada</h3>";
echo "Se han exportado <b>" . count($clientes) . "</b> clientes.<br>";
echo "Archivo generado: <b>" . basename($filename) . "</b><br><br>";
echo "Ubicación del archivo: <code>{$filename}</code><br>";
echo "Los datos están codificados en UTF-8 para evitar problemas con acentos.";
} catch (PDOException $e) {
die("Error en la base de datos: " . $e->getMessage());
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment