@luxurypluxury

Экспорт таблицы данных в csv, что делаю не так?

Вот код php скрипта который должен делать csv таблицу и экспортировать ее пользователю, но он ничего не скачивает:
<?php require_once '../../functions/connect.php'; ?>

<?php
$query = $pdo->prepare("SELECT * FROM contacts ORDER BY id ASC");
$query->execute();

if ($query->num_rows > 0) {
    $delimeter = ",";
    $filename = "export-" . date('d-m-Y') . ".csv";

    $f = fopen('php://memory', 'w');

    $fields = array('ID', 'NAME', 'LASTNAME', 'EMAIL', 'NACHRICHT', 'DATE', 'STATUS');
    fputcsv($f, $fields, $delimeter);

    while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
        $status = ($row['status'] == 1) ? 'Done' : 'Open';
        $lineData = array($row['id'], $row['name'], $row['lastname'], $row['email'], $row['nachricht'], $row['date'], $status);
        fputcsv($f, $lineData, $delimeter);
    }

    fseek($f, 0);

    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename="' . $filename . '";');


    fpassthru($f);
}
exit;

Вызываю вот так:
<a href="./functions/exportTable.php">Export</a>
  • Вопрос задан
  • 45 просмотров
Пригласить эксперта
Ответы на вопрос 1
@maksam07
<?php
// Настройки подключения к базе данных
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database_name";

// Создание подключения к базе данных
$conn = new mysqli($servername, $username, $password, $dbname);

// Проверка соединения
if ($conn->connect_error) {
  die("Ошибка подключения: " . $conn->connect_error);
}

// Запрос SQL для выборки данных
$sql = "SELECT * FROM your_table_name";
$result = $conn->query($sql);

// Установка заголовков для экспорта CSV-файла
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=data_export.csv');

// Открытие файла
$fp = fopen('php://output', 'w');

// Получение и запись данных в файл
if ($result->num_rows > 0) {
  // Запись заголовков столбцов (если необходимо)
  $row = $result->fetch_assoc();
  fputcsv($fp, array_keys($row));
  
  // Запись данных
  fputcsv($fp, $row);
  while($row = $result->fetch_assoc()) {
    fputcsv($fp, $row);
  }
} else {
  echo "0 results";
}

// Закрытие файла и соединения с базой данных
fclose($fp);
$conn->close();
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы