par

Comment puis-je exporter une table MySQL au format Excel en PHP, via un bouton ou un lien hypertexte HTML ?

1 Réponse

+1 validé
par

Pour exporter une table MySQL au format Excel, CSV par exemple, vous devez effectuer votre requête MySQL, puis charger le résultat dans une page PHP dont le header est du type Content-type: text/x-csv;

Il vous suffit de créer un lien hypertexte vers un fichier PHP :

<a href="export.php" target="_blank">Exporter au format CSV</a>

Voici le code source du fichier PHP :

<?php 
error_reporting(E_ALL);
ini_set("display_errors", 1);
$csv = '';
$csv_nom = 'fichier.csv';
$mysqli = mysqli_connect("localhost", "utilisateur", "mot de passe", "nom de la base");
$result = mysqli_query($mysqli, "SELECT * FROM TABLE");
$champ = mysqli_num_fields($result);
for($i = 0; $i < $champ; $i++) 
{
  $csv.= mysqli_fetch_field_direct($result, $i)->name.';';
}
$csv.= '
';
while($row = mysqli_fetch_array($result)) 
{
  for($i = 0; $i < $champ; $i++) 
  {
    $csv.= '"'.$row[mysqli_fetch_field_direct($result, $i)->name].'";';
  }
  $csv.= '
  ';
}
header("Content-type: text/x-csv; charset=utf-8");
header("Content-Disposition: attachment; filename=".$csv_nom."");
echo $csv;
mysqli_close($mysqli);
?>

Lecture Recommandée

Edward Snowden - Mémoires vives

"Je m'appelle Edward Joseph Snowden. Avant, je travaillais pour le gouvernement mais aujourd'hui je suis au service de tous. Il m'a fallu près de trente ans pour saisir la différence et quand j'ai compris, ça m'a valu quelques ennuis au bureau."

L'homme qui a tout risqué pour dénoncer la surveillance globale, ou l'extraordinaire histoire d'un garçon brillant qui a grandi "en ligne", d'un homme devenu espion, puis lanceur d'alerte, et, en exil, la consciencce de l'internet.

Mémoires vives est un témoignage exceptionnel, également disponible en numérique.

Sujets Connexes

Offre Sponsorisée

Ailleurs sur le Web

Questions liées

Merci pour votre visite sur 1FORMATIK.com

Un petit clic sur la pub est toujours apprécié, c'est elle qui finance le site

Bon surf

...