[PHP] Inhalt aus Array in String umwandeln

Dieses Thema im Forum "Webentwicklung" wurde erstellt von June, 19. Juni 2013 .

  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
     
  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
     
  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.
  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.
  5. 19. Juni 2013
    AW: Inhalt aus Array in String umwandeln

    wieso einfach, wenns auch schwer geht :lol:

    danke leute
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.