2015-02-23 37 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