Exporter des données au format CSV est une tâche courante pour de nombreux développeurs web, particulièrement lorsqu’il s’agit de transférer ou de sauvegarder des données. Dans ce tutoriel, nous allons vous détailler comment exporter une table d’une base de données MySQL en PHP en utilisant l’extension MySQLI et en générant un fichier CSV.
Étape 1 : Connexion à la Base de Données
La première étape consiste à établir une connexion à la base de données MySQL en utilisant MySQLI. Voici comment vous pouvez le faire :
$servername = "localhost";
$username = "nom_utilisateur";
$password = "mot_de_passe";
$dbname = "nom_base_de_donnees";
// Créer une connexion
$conn = new mysqli($servername, $username, $password, $dbname);
// Vérifier la connexion
if ($conn->connect_error) {
die("Connexion échouée: " . $conn->connect_error);
}
Dans ce code :
$servername
: Nom du serveur de base de données, généralement localhost.$username
: Nom d’utilisateur pour se connecter à la base de données.$password
: Mot de passe de l’utilisateur.$dbname
: Nom de la base de données.$conn
: Crée une nouvelle connexion MySQLi.$conn->connect_error
: Vérifie si la connexion a échoué et affiche un message d’erreur.
Étape 2 : Sélection des Données
Ensuite, nous devons sélectionner les données que nous souhaitons exporter. Dans cet exemple, nous allons exporter toutes les données d’une table nommée utilisateurs
.
// Sélectionner les données de la table
$sql = "SELECT * FROM utilisateurs";
$result = $conn->query($sql);
Dans ce code :
$sql
: Requête SQL pour sélectionner toutes les données de la table utilisateurs.$result
: Exécute la requête SQL et stocke le résultat.
Étape 3 : Génération du Fichier CSV
Une fois les données récupérées, nous devons créer et écrire dans le fichier CSV.
if ($result->num_rows > 0) {
$delimiter = ",";
$filename = "utilisateurs_" . date('Y-m-d') . ".csv";
// Créer un fichier CSV
$f = fopen('php://memory', 'w');
// Définir les entêtes du fichier CSV
$fields = array('ID', 'Nom', 'Email', 'Date_inscription');
fputcsv($f, $fields, $delimiter);
// Boucler à travers les enregistrements et les écrire dans le fichier CSV
while($row = $result->fetch_assoc()) {
$lineData = array($row['id'], $row['nom'], $row['email'], $row['date_inscription']);
fputcsv($f, $lineData, $delimiter);
}
// Déplacer le curseur au début du fichier
fseek($f, 0);
// Définir les entêtes pour le téléchargement du fichier CSV
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $filename . '";');
// Sortir le contenu du fichier
fpassthru($f);
} else {
echo "Aucun enregistrement trouvé.";
}
// Fermer la connexion
$conn->close();
Explications de ce code
Vérification s’il y a des enregistrements retournés par la requête SQL :
if ($result->num_rows > 0) {
Définition des paramètres CSV :
$delimiter = ",";
$filename = "utilisateurs_" . date('Y-m-d') . ".csv";
$delimiter
: Définir le caractère de délimitation, ici une virgule.- $filename : Définir le nom du fichier CSV, avec la date courante.
Création du fichier CSV :
$f = fopen('php://memory', 'w');
php://memory
: Utilise un flux mémoire pour créer le fichier CSV.
Définition des en-têtes :
$fields = array('ID', 'Nom', 'Email', 'Date_inscription');
fputcsv($f, $fields, $delimiter);
$fields
: Tableau contenant les noms des colonnes.fputcsv
: Écrit les en-têtes dans le fichier CSV.
Boucle à travers les enregistrements :
while($row = $result->fetch_assoc()) {
$lineData = array($row['id'], $row['nom'], $row['email'], $row['date_inscription']);
fputcsv($f, $lineData, $delimiter);
}
fetch_assoc()
: Récupère chaque ligne de résultat sous forme de tableau associatif.$lineData
: Tableau contenant les données de chaque ligne.fputcsv
: Écrit chaque ligne de données dans le fichier CSV.
Préparation du téléchargement :
fseek($f, 0);
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $filename . '";');
fpassthru($f);
fseek($f, 0)
: Déplace le curseur au début du fichier.header('Content-Type: text/csv')
: Définit le type de contenu comme CSV.header('Content-Disposition: attachment; filename="' . $filename . '";')
: Indique que le fichier doit être téléchargé avec le nom défini.fpassthru($f)
: Affiche le contenu du fichier et termine le script.
Fermeture de la connexion :
$conn->close();
Exporter une table de base de données MySQL au format CSV en PHP est une tâche relativement simple avec l’extension MySQLI. Ce tutoriel vous a guidé à travers les étapes essentielles pour établir une connexion à la base de données, sélectionner des données et générer un fichier CSV téléchargeable. Avec cette méthode, vous pouvez facilement transférer ou sauvegarder les données de votre base de données MySQL.
Fondateur de l’agence Créa-troyes.
Intervenant en Freelance.
Contactez-moi