送信ボタンがクリックされた場合にExcelファイルを生成するためのコードがここにあります。このファイルにはmysqlからのデータが入力されており、もちろんmysqlクエリに基づいています。ここにあります:
<?php
require("aacfs.php");
header("Content-type: application/ms-excel");
header("Content-Disposition: attachment; filename=Reservation Summary_sortbydate.xls");
header("Pragma: no-cache");
header("Expires: 0");
$head1="Ayala Aviation Corporation";
$head2="RESERVATION SUMMARY";
$head3="For the period ___________";
$heads="$head1\n$head2\n$head3\n";
$query = "select bdate as 'Date', cliename as 'Client', grpcode as 'Group Code', bperson as 'Contact', reservno as 'Reservation No.', acode as 'Aircraft', fdate as 'Flight Date', itinerary as 'Itinerary', etd as 'ETD', eta as 'ETA', pname as 'Passengers', status as 'Status', cutoff as 'Confirmation Cut-off', adminid as 'Reserved by' from reservation order by bdate";
$result = mysql_query($query);
if($result) {
$count = mysql_num_rows($result);
for($i=0; $i<$count; $i++) {
for ($i = 0; $i < mysql_num_fields($result); $i++)
{
$schema_insert_rows.=mysql_field_name($result,$i) . "\t";
}
$schema_insert_rows.="\n";
while($row = mysql_fetch_row($result)) {
$line = '';
foreach($row as $value) {
if((!isset($value)) OR ($value == "")) {
$value = "\t";
} else {
$value = str_replace('"', '""', $value);
$value = '"'.$value.'"'."\t";
}
$line .= $value;
}
$data .= trim($line)."\n";
}
$data = str_replace("\r", "", $data);
if($data == "") {
$data = "\n(0) Records Found!\n";
}
}
print mb_convert_encoding("$heads\n$schema_insert_rows\n$data", 'UTF-16LE', 'UTF-8');
} else die(mysql_error());
?>
実行に時間がかかり、最終的にコンピュータにダウンロードされると、ファイルに「最大実行時間が60秒を超えました」というエラーメッセージが表示されます。このように制限時間を設定しようとset_time_limit(0)
しましたが、ファイルをダウンロードできるようになるまでにまだ長い時間がかかり、ダウンロードしたファイルを開くと、ファイル自体に別のエラーが再び表示されます:'許容メモリサイズ134217728バイトが使い果たされました( 133693422バイトを割り当てようとしました) '
私はこの正確なコードを持っていますが、別のphpファイルで異なるmysql_queryを実行しているので、これが機能しない理由について本当にイライラしています。先日は順調に動作しておりますが、本日再度確認したところ、このエラーが表示されています。私は何が間違っているのですか?どんな助けでもいただければ幸いです。前もって感謝します!神のご加護を!