2011-12-02 39 views
0

從數據庫中使用以下代碼用戶下載信息(採用csv格式)。但是,雖然獲得輸出大量的行是空白的,即在我的csv會有兩行。但是,在第一行2個空白行之後獲得csv將被打印。PHP頭文件,生成輸出時csv可下載錯誤(未知的新行字符添加輸出),zend

public generatecsvAction() 
{ 
    $answermodel=new Model_DbTable_Answers(); 
    header("Content-type: application/octet-stream"); 
    //header('Content-Type: text/csv; charset=utf-8'); // tried this too but still same output 
    header("Content-Disposition: attachment; filename=exportevent.csv"); 
    header("Pragma: no-cache"); 
    header("Expires: 0"); 
    echo "First_Name,Last_Name,Roll_No1,User_name,col1,col2,col3..... \n"; // checked without this \n 
    foreach($testarray as $i) 
    { 
    $ans = $answermodel->getanswers1($a,$i); 
    if(count($ans)==10) // if user answered all the qustions , 
    { 
     //echo "1,"; 
     foreach($ans as $value) 
     { 
     $res=$answermsamodel->findansweroption($value); 
     $res=$res.","; 
     $s=$s.$res; 
     } 
     echo $s; 
     break; 
    } 
    } 
} 
+0

爲了Zend的最佳實踐,所有的輸出應該從視圖而不是控制器完成。您的控制器中的輸出將顯示在任何視圖內容之後,其中可能包含空格或其他內容等。 – drew010

+0

您確實不應該在控制器中使用頭函數,您應該使用響應對象或設置上下文。 – prodigitalson

回答

0

最可能的是,$answermsamodel->findansweroption($value)返回一個帶有換行符的值。

+0

haminsh,正如你所說的那樣,它發現在從控制器到模型換行符的數據訪問請求追加之後,在訪問數據使用模型之前回顯「abc」將打印correctley。但在使用$ answermsamodel-> findansweroption($ value)進行數據訪問後會附加一個換行符(但該函數只返回一個值,如a,b等)。任何想法, –

+0

替代解決方案,因爲字符串's'不包含任何換行符,可能會在另一個操作中打印它 –