2015-02-23 41 views
0

爲什麼當我嘗試MySQL表導出爲CSV與header('Content-Disposition:attachment; filename="'.$filename.'"');它沒有得到正確地完成:出口MySQL表爲CSV具有自定義標題

  • 它創建CSV文件
  • 但是它確實是在文件的開頭,在頁面代碼是
  • 和代碼之後是表的內容

這是代碼巫婆出口它:

$this->view->table = $model->info('name'); 

$is_csv = $this->_getParam('csv'); 

if ($this->_request->isPost() && $is_csv) { 
    $fichier = 'file.csv'; 

    header('Content-type: text/plain'); 
    header('Content-Disposition: attachment; filename="'.$fichier.'"'); 

    $fp = fopen('php://output', 'w+'); 
    $data = $model->fetchAll(); 

    foreach ($data as $fields) { 
     fputcsv($fp, $fields->toArray()); 
    } 

    fclose($fp); 
} 

在這裏,我與按鈕調用此:

<form method="post"> 
    <input type="hidden" name="table" value="<?php echo $this->table ?>" /> 
    <button type="submit" class="btn" name="csv" value="csv"> 
     <?php echo Core_Locale::translate('CSV')?> 
    </button> 
</form> 
+0

這聽起來像你仍然得到這個包在你的佈局。您應該直接從控制器執行所有這些操作,禁用佈局和視圖。你使用ZF2還是ZF1? – prodigitalson 2015-02-23 18:01:33

回答

0

在你的應用程序把這個代碼了,然後應用程序中創建視圖。
我有同樣的問題,但我解決它這樣..

  • 我把代碼和平功能/塊,並把它放在一個回聲或呈現HTML
  • 放出口;在函數結尾/塊


    if(isset($_POST['submit'])) { 
     $csv = new Csv(); 
     $filename = $csv->generateFileDate(); 

     if($filename !== false) { 
      $data = file_get_contents($csv->folder .'reports/'. $filename); 
      header('Content-Type: application/csv; charset=utf-8'); 
      header('Content-Disposition: attachement;filename="'.$filename.'";'); 
      echo $data; 
      exit; 
     } 
    } 

    ?> 

    <!doctype html> 
    <html lang="us"> 
    <head> ......... 

希望這對您有所幫助

+0

謝謝!如果在和如果退出真的做了工作:) – 2015-02-24 07:43:30