Страница не загружается с принудительной загрузкой CSV - PullRequest
0 голосов
/ 06 июня 2019

У меня есть страница, на которой очень просто. Есть кнопка, которая при нажатии заставляет CSV загрузить. Эта часть работала за исключением одной вещи. Файл загружается сразу после загрузки страницы.

Чтобы устранить это, я добавил оператор isset. Кроме того, страница не загружается. На странице есть очень старые ошибки, которые точно не должны отображаться. Я даже создал новый файл и добавил код. Страница даже не загружается. Файл просто загружается, а затем все останавливается.

Кто-нибудь видит, что может быть причиной этого?

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$file_name = "subscriber_list.csv";
$file = fopen("subscriber_list.csv","w");

try {
    $servername = 'localhost';
    $usernameCon = '';
    $passwordCon = '';
    $con = new PDO('mysql:host='.$servername.';dbname=', $usernameCon, $passwordCon);

    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql_subscribers = "
        SELECT first_name, last_name, phone, email, new_mowers, used_mowers, date_subscribed
        FROM test_notif
        ORDER BY date_subscribed
    ";
    $subscriber_stmt = $con->prepare($sql_subscribers);
    $subscriber_stmt->execute();
    $subscriber_rows = $subscriber_stmt->fetchAll(PDO::FETCH_ASSOC);

    if (isset($_POST['submitbutton'])) {
        foreach ($subscriber_rows as $subscriber_row) {
            //fputcsv($file,explode(',',$subscriber_row));
            fputcsv($file, $subscriber_row);
        }
    }

    header('Content-type: application/octet-stream');
    header("Content-Disposition: attachment; filename='.$file_name.'");

    fclose($file);
    readfile($file_name);
    exit;
}
catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}

?>
<body>
    <form action="" name="csvForm" method="POST">
        <input type="submit" value="Download File" name="submitbutton">
    </form>
</body>
</html>

1 Ответ

2 голосов
/ 06 июня 2019

Вы можете попробовать

<?php
if (isset($_POST['submitbutton'])) {
    error_reporting(E_ALL);
    ini_set('display_errors', 1);

    $file_name = "subscriber_list.csv";
    $file = fopen("subscriber_list.csv","w");
    try {
        $servername = 'localhost';
        $usernameCon = '';
        $passwordCon = '';
        $con = new PDO('mysql:host='.$servername.';dbname=', $usernameCon, $passwordCon);

        $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql_subscribers = " SELECT first_name, last_name, phone, email, new_mowers, used_mowers, date_subscribed
              FROM test_notif
              ORDER BY date_subscribed ";
        $subscriber_stmt = $con->prepare($sql_subscribers);
        $subscriber_stmt->execute();
        $subscriber_rows = $subscriber_stmt->fetchAll(PDO::FETCH_ASSOC);

        foreach ($subscriber_rows as $subscriber_row) {
            //fputcsv($file,explode(',',$subscriber_row));
            fputcsv($file, $subscriber_row);
        }

        header('Content-type: application/octet-stream');
        header("Content-Disposition: attachment; filename='.$file_name.'");

        fclose($file);
        readfile($file_name);
    }
     catch(PDOException $e) {
        echo "Connection failed: " . $e->getMessage();
    }
}
?>
<body>
    <form action="" name="csvForm" method="POST">
        <input type="submit" value="Download File" name="submitbutton">
    </form>
</body>
</html>
...