2014-02-07 44 views
0

本準則的末尾添加當前頁面的htmlcode正常工作:PHP從數據庫創建csv。該數據庫不會被保存,但它在文件

$csvType = $_FILES['csvtype']['tmp_name']['csv-sparkasse']; 

function handleCsv($em, $csvType){ 
    $handle = fopen($csvType, "r"); 
      $i = 0; 
      while (($fileop = fgetcsv($handle, 1000, ";")) !== false) { 
       $entity = new Sparkasse(); 
       $entity->setAuftragskonto($fileop[0]); 
       $entity->setBuchungstag($fileop[1]); 
       $entity->setValutadatum($fileop[2]); 
       $entity->setBuchungstext($fileop[3]); 
       $entity->setVerwendungszweck($fileop[4]); 
       $entity->setZahlungspflichtiger($fileop[5]); 
       $entity->setKontonummer($fileop[6]); 
       $entity->setBlz($fileop[7]); 
       $entity->setBetrag($fileop[8]); 
       $entity->setWaehrung($fileop[9]); 
       $entity->setInfo($fileop[10]); 

       if ($i > 0) { 
        $em->persist($entity); 
       } 
       $i++; 
      } 

      $em->flush(); 

      /* Update Table Sparkasse and create csv */ 
      $connection = $em->getConnection(); 
      $sql = $connection->prepare("UPDATE Sparkasse,Rechnung SET     Sparkasse.Rechnungsnr = Rechnung.Belegnr 
       WHERE Sparkasse.Betrag = Rechnung.Gesamt AND 
       (Sparkasse.Verwendungszweck LIKE CONCAT('%',Rechnung.Belegnr,'%') OR 
       UPPER(Sparkasse.Zahlungspflichtiger) LIKE UPPER(Rechnung.Name) OR 
       UPPER(Sparkasse.Zahlungspflichtiger) = UPPER(Rechnung.Firma) OR 
       Sparkasse.Verwendungszweck LIKE CONCAT('%',Rechnung.Kundennr,'%'))"); 
      $sql->execute(); 

      $query = $em->createQuery("SELECT s FROM AdminBundle:Sparkasse s"); 
      $tableSparkasse = $query->getArrayResult(); 
      $this->createCsv($tableSparkasse, 'sparkasse.csv'); 
} 

這裏是問題。在瀏覽器上下載了csv文件,表格是正確的。但是在文件末尾,您可以看到當前頁面的php代碼。

function createCsv($rows, $filename) { 
    header('Content-Type: text/csv; charset=utf-8'); 
    header('Content-Disposition: attachment; filename=' . $filename); 

    $fp = fopen('php://output', 'w'); 

    foreach ($rows as $fields) { 
     fputcsv($fp, $fields, ';', '"'); 
    } 

    fclose($fp); 
} 

在這裏,您可以看到該文件:https://dl.dropboxusercontent.com/u/6242507/sparkasse.csv

+0

發送CSV文件下載的頁面發送文件後發出一些HTML。發送文件後頁面應該立即停止。 – 2014-02-07 01:12:39

+0

這與symfony沒有任何關係嗎?或者你是在symfony控制器操作中創建它的? –

+0

while while add if(is_numeric($ fileop [0])){....} – kraysak

回答

0

感謝您的回答。第一個答案給了我正確的想法。死後fclose();我測試一個死亡;它工作正常。

在我的控制,我的行動回報形式:

return $this->render('AdminBundle:Default:index.html.twig', array(
    'form' => $form->createView(), 
)); 

我取而代之:

return 0; 

它工作正常。但我不明白爲什麼php在文件末尾寫回合後返回

fclose(); 
相關問題