csv Datei mit Kopfzeile erstellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • csv Datei mit Kopfzeile erstellen

    Hallo *,

    meine 2. Frage heut, irgendwie steh ich aufm Schlauch. Ich lese aus einer temporären tabelle, in der zuvar daten aus mehren tabellen zusammengefügt und sortiert wurden, alle Datensätze aus. Danach führe ich ein Select surch und schreibe das ergebniss in eine csv die dann gesendet wird.
    Da es nun praktisch sein kann, an erster Zeile die Bezeichnungen zu haben hab ich mir überlegt, die Temporäre Tabelle beim erstellen mit einer Zeile und den Feldbeschreibungen zu füllen. Allerdings hab ich dann nicht sehr weit über den Tellerrand hinausgedacht, das aus der Temporärtabelle auch daten per SELECET * FROM TAB WHERE abgefragt werden können. Sobald das nämlich der Fall ist, fehlt meine Zeile.
    PHP-Code:
     $q mysql_query ("SELECT * FROM `msc_$db_tmp_name
    "
    .$_SESSION['where']." ".$_SESSION['order'].""); 
    if (
    $q

    if (
    $f fopen ("adr_msc.csv"'w')) 

    while (
    $r mysql_fetch_row ($q)) 

    for (
    $i=0$i<count($r); $i++) 
    $r[$i] = '"'.str_replace ('"','\"'$r[$i]).'"'
    fputs ($fimplode(';',$r)."\r\n"); 


    fclose ($f); 
    Tja, und nun neigt sich mein Wissen dem ende entgegen. Was wäre ein konkreter Lösungsansatz um die Zeile wieder dort hin zubekommen. Mein erster guter gedanke geht ja nicht.
    Jemand nen Tip?

    Danke und Grüße Manfred

  • #2
    mysql_fetch_assoc liefert dir die Spaltennamen.

    Wenn du jetzt noch in einer variablen speicherst, ob du die Schleife das erste mal durchläufst, kannst du dann (beim ersten mal) die Spaltennamen in die Datei schreiben und danach die Werte, bei allen weiteren Durchläufen schreibst du nur die Daten
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Hallo mrhappiness,

      im Ansatz eine Gute Idee, allerdings kann einer der Die CSV erhält nicht arg viel mit den puren feldnamen was anfangen. Mir wäre es lieber wenn ich die erste Zeile von Hand reinschreiben könnte

      Manfred

      Kommentar


      • #4
        PHP-Code:
         $i2 0;
        $q mysql_query ("SELECT * FROM `
        msc_
        $db_tmp_name` ".$_SESSION['where']." ".$_SESSION['order'].""); 


        if (
        $q

        if (
        $f fopen ("adr_msc.csv"'w')) 


            
            while (
        $r mysql_fetch_row ($q)) 
            { 
            for (
        $i=0$i<count($r); $i++) 
            
            if (
        $i2 == 0)
                {
                
        $t ="Depp";
                
        fputs ($fimplode(';',$t)."\r\n"); 
            
        $i2++;    
                }
            else 
            {
                
        $r[$i] = '"'.str_replace ('"','\"'$r[$i]).'"'
                
        fputs ($fimplode(';',$r)."\r\n"); 
                } 
            }
        fclose ($f); 
        So hab ich mir das irgendwie vorgestellt. Klappt aber leider nicht so ganz.
        Ist das ergebniss in greifbarer nähe?

        Kommentar


        • #5
          Wie, du hast eine Tabelle mit allerlei Daten gefüllt und zusätzlich die Spaltennamen als Tupel darin? Das ist ja schon ... merkwürdige Idee.

          Und jetzt kommst du nicht an die Spaltennamen? Das ist noch merkwürdiger, denn die kannst du doch auch mit SELECT erhalten - mußt nur das WHERE so gestalten, dass es auf die gewünschten Daten (Spaltennamen) paßt. Das machst du entweder in einer separaten Query oder du erweiterst deine vorhandene entsprechend.

          Der Code da oben ist ziemlich umständlich und da er sowieso nicht das gewünschte macht, würde ich den an deiner Stelle einstampfen und das kurze Stück nochmal von Null an schreiben.

          Kommentar


          • #6
            Ja, das mit den Spaltennamen in die Tabelle schreiben war für wahr ne merkwürdige idee. Ich hab mich noch etwas umgesehen und zum Schluss mich für diese Variante entschieden;

            PHP-Code:
            $i2 0;
            $q mysql_query ("SELECT * FROM `msc_$db_tmp_name` ".$_SESSION['where']." ".$_SESSION['order'].""); 


            if (
            $q

            if (
            $f fopen ("adr_msc.csv"'w')) 


                
                while (
            $r mysql_fetch_row ($q)) 
                { 
                if (
            $i2 == 0)
                    {

            --
            schnipp
                        $t
            [17] ="DMV Nummer";
                        
            $t[18] ="Memo";
                        
            $t[19] ="Mitgliedsnummer";
                        
            $t[20] ="Linzenztitel";
                        
            $t[21] ="Lizenznummer";
                        
            $t[22] ="Verein";
                        
            $t[23] ="Briefanrede";
            --
            schnapp


                        fputs 
            ($fimplode(';',$t)."\r\n"); 
                        
            $i2 1;    
                    }


                for (
            $i=0$i<count($r); $i++) 
                
                    
            $r[$i] = '"'.str_replace ('"','\"'$r[$i]).'"'
                    
            fputs ($fimplode(';',$r)."\r\n"); 
                    } 
            fclose ($f); 
            So kann ich bequem per Array meine Feldbezeichnungen Festlegen und bei bedarf auch ändern!

            Dazu noch comments oder Kritik?

            Grüße Manfred

            Kommentar


            • #7
              Das Gefummel mit $i2 kannst du dir sparen, wenn du den If-Zweig mit ($i2 == 0) aus der While-Schleife auslagerst.

              Kommentar

              Lädt...
              X