login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Komma's in CSV (Opgelost)

Offline levideridder - 28/08/2012 12:55
Avatar van levideridderLid Hallo,

Ik probeer al een tijdje mijn SQL-resultaten (met een paar PHP-wijzigingen) te exporteren naar CSV via PHP. Het exporteren op zich lukt. Alleen heb ik last van volgende tekens aan het begin van elke regel in mijn CSV-bestand: ","

Dit is mijn code:
  1. <?php
  2.  
  3. $list = array();
  4.  
  5. while ($sa = mysql_fetch_array($selectall)) {
  6. $prijs = $sa["prijs"]*1.21;
  7.  
  8.  
  9. $Array = implode("", array("Prefix ". $sa["id"], $sa["voornaam"], $sa["achternaam"], $prijs, $afstand ." meter") . "\n");
  10.  
  11. $list[] = $Array;
  12. }
  13.  
  14.  
  15. $fp = fopen('export.csv', 'w');
  16. fputcsv($fp, $list);
  17. fclose($fp);
  18. ?>


Dit is het CSV-bestand:

"Prefix 5,Jan,De Leye,1249.23,45 meter
","Prefix 6,Koen,Vermeersch,154.23,22 meter
","Prefix 7,Paul,Vermeersch,154.23,22 meter
","Prefix 8,Manou,Le Mieu,154.23,22 meter
","Prefix 9,Levi,De Ridder,154.23,22 meter


Dit zou het moeten worden:

Prefix 5,Jan,De Leye,1249.23,45 meter
Prefix 6,Koen,Vermeersch,154.23,22 meter
Prefix 7,Paul,Vermeersch,154.23,22 meter
Prefix 8,Manou,Le Mieu,154.23,22 meter
Prefix 9,Levi,De Ridder,154.23,22 meter


In de hoop dat iemand mij hiermee kan helpen, alvast bedankt.

Grt Levi

11 antwoorden

Gesponsorde links
Offline Martijn - 28/08/2012 14:09 (laatste wijziging 28/08/2012 14:09)
Avatar van Martijn Crew PHP Ik zie dat je "\n" er nog staat?

edit: Waar krijgt $afstand trouwens een waarde? Kan ik niet vinden
Offline levideridder - 28/08/2012 14:14
Avatar van levideridder Lid \n staat er als linebreak in het CSV-bestand. Als ik dat weghaal, plakken alle rijen tegen elkaar.
Al mijn variabelen heb ik niet mee gekopiëerd, maar deze wordt in mijn script welk gedefinieerd.
Offline Martijn - 28/08/2012 15:14
Avatar van Martijn Crew PHP Op regel 9 doe je een implode die niet moet. En daarna kun je als het goed is de \n alsnog weghalen.

Als je naar het voorbeeld op php.net kijkt, zie je een array met elke waarde een array. Wat jij doet met je implode is een array met als elke waarde een string
Offline levideridder - 28/08/2012 17:32 (laatste wijziging 28/08/2012 17:32)
Avatar van levideridder Lid Ik vroeg me inderdaad al af of die implode nodig was. Ik heb hem dus weggehaald. Dus $Array = array(.... Vervolgens heb ik ook \n weggehaald.

export.csv ziet er nu als volgt uit:
Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,...
Offline Martijn2008 - 28/08/2012 19:57 (laatste wijziging 28/08/2012 20:32)
Avatar van Martijn2008 PHP beginner Zie voorbeeld Example #1 eens en vergelijk dat met jouw code.

Deze code:

  1. fputcsv($fp, $list);


zou waarschijnlijk moeten worden veranderd in:

  1. foreach ($list as $fields) {
  2. fputcsv($fp, $fields);
  3. }


Hopelijk is dat de oplossing, succes!
Offline Gerard - 28/08/2012 23:06
Avatar van Gerard Ouwe rakker De fputcsv functie is inderdaad om één lijn weg te schrijven naar een CSV bestand.
Ruw geschetst zou jouw code er dan dus ongeveer als volgt uit moeten zien:
  1. <?php
  2.  
  3. $afstand = 100;
  4. $filePointer = fopen('export.csv', 'w');
  5.  
  6. while ($sa = mysql_fetch_assoc($selectall))
  7. {
  8. $sa = array_map('stripslashes', $sa);
  9.  
  10. fputcsv($filePointer, array('Prefix ' . $sa['id'], $sa['voornaam'], $sa['achternaam'], ($sa['prijs'] * 1.21), $afstand . ' meter'));
  11. }
  12.  
  13. fclose($filePointer);
Offline levideridder - 29/08/2012 09:30
Avatar van levideridder Lid Martijn,

Ik heb jouw code nu gebruikt. Nu krijg ik dit te zien:

"Prefix 5,Jan,De Leye,1249.23,45 meter"
"Prefix 6,Koen,Vermeersch,154.23,22 meter"
"Prefix 7,Paul,Vermeersch,154.23,22 meter"
"Prefix 8,Manou,Le Mieu,154.23,22 meter"
"Prefix 9,Levi,De Ridder,154.23,22 meter"

Laat een CSV-bestand toe om vooraan en achteraan de regel een " te laten of moet het er op deze manier uitzien?

Prefix 5,Jan,De Leye,1249.23,45 meter
Prefix 6,Koen,Vermeersch,154.23,22 meter
Prefix 7,Paul,Vermeersch,154.23,22 meter
Prefix 8,Manou,Le Mieu,154.23,22 meter
Prefix 9,Levi,De Ridder,154.23,22 meter
Offline Martijn - 29/08/2012 12:01
Avatar van Martijn Crew PHP Die quotes moeten er niet staan nee. Het kan wel, (al moet je ze escapen dan geloof ik) maar nu is de eerste waarde ["prefix5] en de laate [22 meter"], het zit dus in de waarde zelf. Maar ik gok dat je dat helemaal niet wilt, dus nee, dat hoort niet
Offline levideridder - 31/08/2012 16:20
Avatar van levideridder Lid Gerard, ook jouw code werkt. De quotes aan het begin en eind van de regel blijven ook met jouw code staan...


"Prefix 5,Jan,De Leye,1249.23,45 meter"
"Prefix 6,Koen,Vermeersch,154.23,22 meter"
"Prefix 7,Paul,Vermeersch,154.23,22 meter"
"Prefix 8,Manou,Le Mieu,154.23,22 meter"
"Prefix 9,Levi,De Ridder,154.23,22 meter"
Offline Martijn2008 - 31/08/2012 16:43
Avatar van Martijn2008 PHP beginner Ok, dus het probleem is opgelost?
Offline levideridder - 03/09/2012 18:18
Avatar van levideridder Lid Mochten de quotes nog weg zijn was het probleem opgelost.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.22s