Objectif :
Exporter des données déjà enregistrées dans une table de ma BDD MySql vers un fichier Excel en cliquant sur un bouton dans une page HTML.
Le tout en PHP.
Petit résumé en image :
Mon code
Le code pour le bouton.
J’appelle un fichier csv*.php dans lequel je vais mettre mon script pour générer mon fichier Excel..
<a href="csv.php">
<button type="button" class="btn btn-info">Exporter xls</button></a>
Euh oui, c’est du Bootstrap 🙂
Le script pour générer mon fichier Excel
<?php
include ('../inc/inc_connexion.php');
$select = $pdo->prepare('
SELECT *
FROM clients_gites
');
$select->setFetchMode(PDO::FETCH_ASSOC);
$select->execute();
$newReservations = $select->fetchAll();
$excel = "";
$excel .= "Id\tNom\tPrénom\tAdresse\tCode postal\tVille\tPays\tMail\tTéléphone\n";
foreach($newReservations as $row) {
$excel .= "$row[id_client]\t$row[nom_client]\t$row[prenom_client]\t$row[adresse_client]\t$row[cp_client]\t$row[ville_client]\t$row[pays_client]\t$row[mail_client]\t$row[tel_client]\n";
}
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=liste-clients.xls");
print $excel;
exit;
?>
Quelques explications :
- Je vais chercher mes paramètres de connexion (ici en PDO)
- Je prépare ma requête vers ma table et je l’exécute. (ici, je récupère tous les champs).
- Je constitue ma première ligne de mon tableau Excel.
- J’utilise la fonction PHP header.
- header(« Content-type: application/vnd.ms-excel »); Je veux un fichier Excel.
- header(« Content-disposition: attachment; filename=liste-clients.xls »); Qui sera appelé liste-client.xls