Tout d'abord, connectez-vous à la base de données MySQL et à la requête. Supposons qu'il existe déjà un tableau dans la base de données appelée utilisateurs , y compris des champs tels que l'ID , le nom et l'e-mail .
<?php
// Paramètres de connexion de la base de données
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// Créer une connexion
$conn = new mysqli($servername, $username, $password, $dbname);
// Vérifiez la connexion
if ($conn->connect_error) {
die("Échec de la connexion: " . $conn->connect_error);
}
// Données de requête
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);
?>
Ensuite, nous utilisons PHP pour exporter les résultats de la requête en tant que fichier CSV. Les données de l'objet MySQLI_RESULT sont extraites ligne par ligne et écrites dans le fichier CSV.
<?php
// Si le résultat de la requête existe
if ($result->num_rows > 0) {
// Définir le nom du fichier
$filename = "users_data_" . date("Ymd_His") . ".csv";
// Définissez l'en-tête de réponse,Dites au navigateur de télécharger le fichier
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $filename . '"');
// Ouvrez le flux de sortie
$output = fopen('php://output', 'w');
// Écrivez à l'en-tête
$header = ['ID', 'Name', 'Email'];
fputcsv($output, $header);
// Écrire des lignes de données
while ($row = $result->fetch_assoc()) {
fputcsv($output, $row);
}
// Éteindre le flux de sortie
fclose($output);
}
?>
Bien qu'il soit un peu plus compliqué de générer directement des fichiers Excel, il peut être réalisé via la bibliothèque tierce Phpexcel ou PHPSPreadSheet . Ces deux bibliothèques fournissent des fonctionnalités riches pour exporter les résultats de la requête dans des fichiers au format .xls ou .xlsx .
Voici un exemple de base de l'exportation Excel. Tout d'abord, vous devez installer PHPSPreadSheet :
composer require phpoffice/phpspreadsheet
Utilisez ensuite le code suivant dans PHP pour exporter les données:
<?php
// Présenté PhpSpreadsheet Bibliothèque de classe
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
// Créer un nouvel objet de feuille de calcul
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Réglage de l'en-tête de table
$sheet->setCellValue('A1', 'ID');
$sheet->setCellValue('B1', 'Name');
$sheet->setCellValue('C1', 'Email');
// Remplir les données
$rowNum = 2;
while ($row = $result->fetch_assoc()) {
$sheet->setCellValue('A' . $rowNum, $row['id']);
$sheet->setCellValue('B' . $rowNum, $row['name']);
$sheet->setCellValue('C' . $rowNum, $row['email']);
$rowNum++;
}
// Définir le nom du fichier
$filename = "users_data_" . date("Ymd_His") . ".xlsx";
// Définissez l'en-tête de réponse,Dites au navigateur de télécharger le fichier
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');
// créer Writer Objet
$writer = new Xlsx($spreadsheet);
// Fichier de sortie
$writer->save('php://output');
?>
Si vous souhaitez que la table de données soit présentée à l'utilisateur pour l'impression, vous pouvez publier les résultats de la requête sous forme de tables HTML. Les utilisateurs peuvent imprimer directement à l'aide de la fonction d'impression du navigateur.
<?php
// Si le résultat de la requête existe
if ($result->num_rows > 0) {
echo '<table border="1">';
echo '<thead>';
echo '<tr><th>ID</th><th>Name</th><th>Email</th></tr>';
echo '</thead>';
echo '<tbody>';
// Ligne de données de sortie
while ($row = $result->fetch_assoc()) {
echo '<tr>';
echo '<td>' . $row['id'] . '</td>';
echo '<td>' . $row['name'] . '</td>';
echo '<td>' . $row['email'] . '</td>';
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
// Ajouter le bouton d'impression
echo '<br><button onclick="window.print()">Imprimer le formulaire</button>';
}
?>
De cette façon, l'utilisateur peut cliquer sur le bouton d'impression pour imprimer le contenu de la page dans un formulaire de table.