-2

したがって、データベースからデータを読み取るこのコードがあり、[開く/名前を付けて保存]ウィンドウが表示されますが、表示されません。問題がどこにあるのか考えてみませんか?結果をエコーし​​ますが、ダウンロードウィンドウは表示されません。

    <?php/*
mb_http_output('UTF-8');
mb_http_input('UTF-8');
mb_language('uni');
mb_regex_encoding('UTF-8');
ob_start('mb_output_handler');
header('Content-type: text/html; charset=utf-8');*/
?>
<?php


$conn = mysql_connect('localhost', 'xxxx', 'xxxx') or die(mysql_error());
mysql_select_db('nooruse', $conn) or die(mysql_error($conn));

$query = sprintf('SELECT osakond as Osakond, soetusaasta, it_number, tooteruhm, mudeli_nimetus, sn, riigivara_nr, inventaari_nr, maja, ruum, vastutaja, markus FROM norse5_proov');
$result = mysql_query($query, $conn) or die(mysql_error($conn));

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

$row = mysql_fetch_assoc($result);
if ($row) {
    echocsv(array_keys($row));
}

while ($row) {
    echocsv($row);
    $row = mysql_fetch_assoc($result);
}

function echocsv($fields)
{   
    echo $query ,"<br>";
    $separator = '';
    foreach ($fields as $field) {
        if (preg_match('/\\r|\\n|,|"/', $field)) {
            $field = '"' . str_replace('"', '""', $field) . '"';
        }
        echo $separator . $field;
        $separator = ',';
    }
    echo "\r\n";
}
?>

前もって感謝します!

4

4 に答える 4

1

経由でヘッダーを送信する前に、出力を許可することはできませんheader()。これには、最初の前の空白とと<?phpの間の改行が含まれます。?><?php

于 2013-03-13T12:24:45.480 に答える
1

以下のようなヘッダーを使用しています。それを試してみてください

header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header('Content-disposition: filename='.$filename.'.csv');
print $csv_output;
于 2013-03-13T12:27:12.810 に答える
0

次のヘッダーを使用してみてください。

header("Content-Description: Download File");
header("Content-Disposition: attachment; filename=whatever.csv");
header("Content-Type: text/plain");
header("Content-Length: ".strlen($output));

ここで$output

エコーされた出力のキャプチャ変数です。

于 2013-03-13T12:32:00.790 に答える
0

このヘッダーを使用して、

header('Content-type: application/force-download');

それが動作します。

于 2013-03-13T12:25:07.900 に答える