#1 19. Juni 2013 Inhalt aus Array in String umwandeln Tag zusammen, Also folgendes Szenario; Ich importiere id und name aus einer MSSQL Datenbank, die inhalte sollen dann strukturiert in eine CSV Datei geschrieben werden Beispiel: id;name 1;hans 2;gerd mein Problem liegt darin, dass ich keine Vorstellung davon habe wie ich den Array in nen String zerlegen soll. habe irgendwo die Funktion serialize($array) aufgefasst, jedoch liefert diese mir ganz merkwürdige Werte. Beispiel: a:4:{i:0;"s:2:""1" ";i:1;s:5:Hans"; ";i:2;s:2:2"; ";i:3;s:5:Gerd"; ";}"; Mein Code schaut wie folgt aus PHP: if(isset( $_POST [ 'submit' ])){ $br = "\r" ; $array = array(); $stmt -> execute (); while ( $row = $stmt -> fetch ()){ array_push ( $array , $row [ 'id' ]. $br ); array_push ( $array , $row [ 'name' ]. $br ); } $csv = serialize ( $array ); $fp = fopen ( "export/export.csv" , "w" ); fwrite ( $fp , $csv ); fclose ( $fp ); } Ich hoffe jemand mir kann da jemand weiterhelfen + Multi-Zitat Zitieren
#2 19. Juni 2013 Zuletzt bearbeitet: 19. Juni 2013 AW: Inhalt aus Array in String umwandeln ooooookay habe das problem zu 98,63% gelöst. hier der Code PHP: if(isset( $_POST [ 'submit' ])){ $br = "\r" ; $arrayid = array(); array_push ( $arrayid , "id" , "user" ); $stmt -> execute (); while ( $row = $stmt -> fetch ()) { array_push ( $arrayid , $br . $row [ 'id' ]); array_push ( $arrayid , $row [ 'name' ]); } $json = json_encode ( $arrayid ); $csv = str_replace ( ',' , ';' , str_replace (array( '[' , ']' , '"' ), '' , str_replace (array( "{" , "}" , ":" ), array( "array(" , "}" , "=>" ), $json ))); $fp = fopen ( "export/export.csv" , "w" ); fwrite ( $fp , $csv ); fclose ( $fp ); echo "<br />CSV generiert!" ;} über echo $csv erhalte ich den wert "id;user;\r1;Hans;\r2;Gerd;\r3;Willi" ist auch korrekt, ABER das blöde ding will nicht vernünftig in die CSV datei speichern, er gibt den Zeilenumbruch als Wert aus. Wenn ich den String einfach kopiere und schlicht in den quellcode einfüge.. $csv = "id;user;\r1;Hans;\r2;Gerd;\r3;Willi" dann macht die Sau das :lol: Wie kann ich den jetzt $csv beibringen: "du bist jetz ein String, obwohl du ja schon einer bist". hab ich da jetz nen neuen PHP bug entdeckt? MFG + Multi-Zitat Zitieren
#3 19. Juni 2013 AW: Inhalt aus Array in String umwandeln Was hindert dich daran fputcsv zu nutzen? PHP: $fp = fopen ( 'file.csv' , 'w' ); foreach ( $arrayid as $fields ) { fputcsv ( $fp , $fields );} fclose ( $fp ); 1 Person gefällt das. + Multi-Zitat Zitieren
#4 19. Juni 2013 AW: Inhalt aus Array in String umwandeln Das was du da generiest ist keine CSV.. Eine CSV (Comma Separated Value) Datei besteht wie der Name schon sagt aus Zeilen mittels mit Kommata (oder anderes Trennzeichen, wie TAB (\t) oder Semikolon) getrennten Werten. Du musst folglich einfach nur folgendes machen: PHP: if(isset( $_POST [ 'submit' ])){ $br = "\r" ; $arrayid = array(); array_push ( $arrayid , "id" , "user" ); $fp = fopen ( "export/export.csv" , "w" ); $stmt -> execute (); while ( $row = $stmt -> fetch ()) { fwrite ( $fp , $row [ 'id' ]. "," . $row [ 'name' ]); } fclose ( $fp ); echo "<br />CSV generiert!" ;} PHP hält für diese Thematik auch eine ganze nette Funktion vor.. fputcsv() Du musst lediglich das fwrite() gegen das hier tauschen: PHP: fputcsv ( $fp , $row ); Damit werden alle Werte die in mit dem SELECT-Statement aus der DB gelesen werden in der gleichen Reihenfolge in die Datei geschrieben... //EDIT: wieder zu langsam ... 1 Person gefällt das. + Multi-Zitat Zitieren
#5 19. Juni 2013 AW: Inhalt aus Array in String umwandeln wieso einfach, wenns auch schwer geht :lol: danke leute + Multi-Zitat Zitieren