Liaisons vides dans le file csv

J'ai besoin d'un peu d'aide, j'exporte une table vers un file csv, et cela m'a ajouté 8 lignes vides. Pourquoi ? Peut-être que quelqu'un peut m'aider un peu.

file export.ctp

<?php foreach ($data as $row): foreach ($row['Kontaktid'] as &$cell): // Escape double quotation marks $cell = '"' . preg_replace('/"/','""',$cell) . '"'; endforeach; echo implode(',', $row['Kontaktid']) . "\n"; endforeach; ?> 

Et cela fait cela

entrez la description de l'image ici

Mais je ne veux pas ces lignes vides, quand j'impose ce file à mysql, puis il a ajouté ces lignes vides aussi.

Merci pour ton aide !

Si j'écris var dump, j'obtiens ceci. entrez la description de l'image ici

Il suffit de vérifier, votre ligne n'est pas vide:

 <?php foreach ($data as $row): if (!isset($row['Kontaktid']) || !$row['Kontaktid']) continue; // <-add this line foreach ($row['Kontaktid'] as &$cell): // Escape double quotation marks $cell = '"' . preg_replace('/"/','""',$cell) . '"'; endforeach; echo implode(',', $row['Kontaktid']) . "\n"; endforeach; 

Peut être un problème n'est pas dans ce code.
Vérifiez deux fois, que vous n'avez aucune trace de fil d'eau dans tous les sens.
Peut être quelque chose comme:

  <?php //php code ?> ↓ ↓ ↓ 

Tout le contenu hors de votre bloc <?php ?> Est équivalent silencieux de l' echo "...";
Donc, ces effets de ligne sont imprimés comme echo "\n\n\n\n";

La bonne pratique est de supprimer le dernier ?> Du tout

Essaye ça:

 $fh = fopen('./file1.csv', 'wt'); foreach ($data as $row) { if (! empty($row['Kontaktid'])) { fputcsv($fh, $row['Kontaktid']); } } fclose($fh); 

Remplacez './file1.csv' par votre nom de file et votre path. Si vous devez décharger le contenu CSV à l'écran, remplacez la première ligne par $fh = STDOUT;

Utilisation de votre code:

 <?php foreach ($data as $row): $isRowEmpty = false; foreach ($row['Kontaktid'] as &$cell): // we assume the row is empty if the first cell is empty if(empty($cell)) { $isRowEmpty = true; break; } else { // Escape double quotation marks $cell = '"' . preg_replace('/"/','""',$cell) . '"'; } endforeach; if(!$isRowEmpty) { echo implode(',', $row['Kontaktid']) . "\n"; } endforeach; ?> 

J'espère que cela t'aides!

Ajoute ça:

 if (isset($row['Kontaktid']) && strlen($row['Kontaktid']) && !empty($row['Kontaktid'])) 

avant:

 echo implode(',', $row['Kontaktid']) . "\n";