Sunucuda bir yere dosya kaydetmeden CSV dosyalarını doğrudan tarayıcımdan indirmeye çalışırken sorun yaşıyorum. Bir öğretici buldum (https://www.perpetual-beta.org/weblog/php-stream-file-direct.html) ama çalışmayı başaramıyorum!PHP - CSV Dosyalarını Tarayıcıya Aktarma
Bu benim ana işlevidir:
public function exportRecord($id) {
$contest = (string) $this->getContest($id);
$entries = (array) $this->getEntries($id);
$filename = sprintf('%1$s-%2$s-%3$s', str_replace(' ', '', $contest['name']), date('Ymd'), date('His'));
$output = fopen('php://output', 'w');
ob_start();
$header = array(
'First Name',
'Last Name',
'Address',
'City',
'State',
'Zip',
'Phone',
'Email',
'Item Purchased',
'Partner Name',
'Partner #',
'Date Entered',
'Subscribe'
);
fputcsv($output, $header);
foreach ($entries as $entry) {
fputcsv($output, $entry);
}
$string = ob_get_clean();
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false);
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $filename . '.csv";');
header('Content-Transfer-Encoding: binary');
exit($string);
}
Sadece benim veritabanı sorguları yapmak aşağıdaki iki işlevleri çağırıyorum ... Ben herhangi bir yardım/tavsiye takdir
private function getContest($id) {
$query = sprintf(
'SELECT name ' .
'FROM contests ' .
'WHERE id = %s;',
$id
);
$result = $this->mysql->query($query);
$response = '';
if ($result) {
while ($row = mysqli_fetch_assoc($result)) {
$response = $row;
}
} else {
echo $this->mysql->error;
}
return $response;
}
private function getEntries($id) {
$query = sprintf(
'SELECT firstName, ' .
'lastName, ' .
'CONCAT(address1, ", ", address2), ' .
'city, ' .
'state, ' .
'zip, ' .
'phone, ' .
'email, ' .
'itemPurchased, ' .
'partnerName, ' .
'partnerNum, ' .
'dateEntered, ' .
'subscribe ' .
'FROM entries ' .
'WHERE contestID = %s;',
$id
);
$result = $this->mysql->query($query);
$response = '';
if ($result) {
while ($row = mysqli_fetch_assoc($result)) {
$response[] = $row;
}
} else {
echo $this->mysql->error;
}
return $response;
}
size Vereceğim! İşte bir ekran görüntüsü, sadece sorunun ne olduğuna dair bir fikir vermek için: Teşekkür ederiz!
Tam olarak ne tür bir tarayıcı kullanıyorsunuz? Son zamanlarda bu yöntemle Safari ile ilgili sorunlar buldum. – NoobishPro
Bundan bahsetmeliydim! Afedersiniz. En yeni Chrome ve Firefox sürümlerini kullanıyorum. Ayrıca IE9'da denedim. – brandoncluff
Tamam, 2 soru daha. 1) 'error_reporting'i (E_ALL) denediniz; ini_set ('display_errors', '1'); 'herhangi bir hata olup olmadığını kontrol etmek için? (bunu en tepeye yerleştiriniz) - 2) * Herhangi bir * sonuç alır mısınız? $ String bir şey gösteriyor mu? Tam olarak ne çalışmıyor? – NoobishPro