Frage zum Export einer SQL-Tabelle in csv/Excel

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

  • Frage zum Export einer SQL-Tabelle in csv/Excel

    Hallo,

    ich habe ein Script dass mir Daten aus einer Datenbank in Tabellenform anzeigt. Je nach Auswahl/Optionen kann ich die Anzeige eingrenzen und mir nur einen Teil der vorhandenen Daten anzeigen lassen (in diesem Fall "nur offene Punkte" => 3 Einträge) - so wie im angehängten Bild zu sehen.


    Nun hab ich mittels folgendem Script die Möglichkeit eine mySQL-Tabelle in Excel / csv zu exportieren:

    PHP-Code:
    <?php

    $DatabaseHost 
    "localhost"
    $DatabaseUser "user"
    $DatabasePassword "pass"
    $Database "database"
    $Table "eintraege";

    header('Content-Type: text/x-csv');
    header('Expires: ' gmdate('D, d M Y H:i:s') . ' GMT');
    header('Content-Disposition: attachment; filename=download.csv');
    header('Pragma: no-cache');

    $DatabasePointer mysql_connect($DatabaseHost$DatabaseUser$DatabasePassword);
    mysql_select_db($Database$DatabasePointer);

    $ResultPointer mysql_query("SELECT lfd_nr, kat, rev, aufn_dat, von, beanst, korr, bem, verantw, se_dat, fort, a_dat FROM $Table");

    for(
    $i 0$Export ""$i mysql_num_rows($ResultPointer); $i++)
    {
        
    $Daten mysql_fetch_object($ResultPointer);

        
    $Spalte[] = str_replace("\"""\"\""$Daten->lfd_nr);
        
    $Spalte[] = str_replace("\"""\"\""$Daten->kat);
        
    $Spalte[] = str_replace("\"""\"\""$Daten->rev);
        
    $Spalte[] = str_replace("\"""\"\""$Daten->aufn_dat);
        
    $Spalte[] = str_replace("\"""\"\""$Daten->von);
        
    $Spalte[] = str_replace("\"""\"\""$Daten->beanst);    
        
    $Spalte[] = str_replace("\"""\"\""$Daten->bem);    
        
    $Spalte[] = str_replace("\"""\"\""$Daten->verantw);
        
    $Spalte[] = str_replace("\"""\"\""$Daten->se_dat);
        
    $Spalte[] = str_replace("\"""\"\""$Daten->fort);
        
    $Spalte[] = str_replace("\"""\"\""$Daten->a_dat);

        for(
    $j 0$j count($Spalte); $j++)
        {
            
    $Export .= "\"" $Spalte[$j] . "\"";

            if(
    $j != count($Spalte)-1)
            {
                
    $Export .= ";";
            }
        }
        
    $Export .= "\r\n";
        
    $Spalte "";
    }

    echo
    $Export;

    ?>
    Allerdings exportiert er hierbei immer die gesamte SQL-Tabelle.
    Wie muss der Code umgeschrieben sein, damit nur die ausgewählten/angezeigten Einträge exportiert werden?
    Angehängte Dateien

  • #2
    Du mußt dir anschauen, wie dein Frontend die mySQL-Abfrage zusammenbaut, und diese in dein Exportskript einsetzen.

    Kommentar


    • #3
      btw. köntest Du deinen code um einiges eindampfen.
      zB den ganzen kram mit
      $Spalte[] = str_replace("\"", "\"\"", $Daten->lfd_nr);
      ...
      Beantworte nie Threads mit mehr als 15 followups...
      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

      Kommentar


      • #4
        Original geschrieben von pekka
        Du mußt dir anschauen, wie dein Frontend die mySQL-Abfrage zusammenbaut, und diese in dein Exportskript einsetzen.
        Ähm... ganz normal über echo Befehle wird die Auswahl angezeigt... aber ich will ja nur dass diese angezeigte Auswahl exportiert wird. Oder muss ich dazu wieder alles komplett in das Export-Script schreiben, was vorher schon das Frontend gemacht hat, nämlich die Auflistung nach bestimmten Suchkriterien!?!?


        Original geschrieben von MelloPie
        btw. köntest Du deinen code um einiges eindampfen.
        zB den ganzen kram mit
        $Spalte[] = str_replace("\"", "\"\"", $Daten->lfd_nr);
        ...
        Dann funktioniert das Script nicht mehr.

        Kommentar


        • #5
          ich habe nicht gesagt löschen, sondern eindampfen -> kleiner machen schlanker...
          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar


          • #6
            Original geschrieben von MelloPie
            ich habe nicht gesagt löschen, sondern eindampfen -> kleiner machen schlanker...
            Achso ... habe "einstampfen" gelesen ... mea culpa.

            öhm... nö mach ich nicht - Ganz einfacher Grund:
            Ich hab davon keine Ahnung und es würde mir keine Verbesserung bringen :-)

            Darum beschränke ich mich momentan nur auf die Lösung des o.g. Problems
            "Wie kann ich anstatt der kompletten DB nur die aktuell ausgewählten und angezeigten Datensätze exportieren?"

            Kommentar


            • #7
              Original geschrieben von pekka
              Du mußt dir anschauen, wie dein Frontend die mySQL-Abfrage (Also das, was in mysql_query() ausgeführt wird) zusammenbaut, und diese in dein Exportskript einsetzen.

              Kommentar


              • #8
                Original geschrieben von pekka
                [...](Also das, was in mysql_query() ausgeführt wird)[...]
                Die einigermaßen aussagekräftige Zeilen mit mysql_query() sind die folgenden:

                PHP-Code:
                $res mysql_query($sql) or die ("Fehler. Fehlermeldung: ".mysql_error()); 
                und
                PHP-Code:
                $res2 mysql_query($sql2) or die ("Fehler. Fehlermeldung: ".mysql_error()); 
                denn $sql und $sql2 besagen folgendes:

                PHP-Code:
                $sql "SELECT * FROM eintraege $where "
                und
                PHP-Code:
                $sql2 "SELECT MAX(his_nr) FROM eintraege where lfd_nr=$id "
                Schliesse ich richtige daraus, dass ich diese beiden "SELECT-Abfragen" irgendwie in das Export-Script einbauen muss?

                Kommentar


                • #9
                  Ja. Du solltest sie dir alle im Klartext ausgeben lassen, um rauszufinden, welche die richtige für dein Anliegen ist.

                  Kommentar


                  • #10
                    Hab nun meherere Versuche gestartet den Ursprungscode

                    PHP-Code:
                    $ResultPointer mysql_query("SELECT lfd_nr, kat, rev, aufn_dat, von, beanst, korr, bem, verantw, se_dat, fort, a_dat FROM $Table"); 
                    abzuändern, z.b. in:

                    PHP-Code:
                    $ResultPointer mysql_query("SELECT MAX(his_nr) lfd_nr, kat, rev, aufn_dat, von, beanst, korr, bem, verantw, se_dat, fort, a_dat FROM $Table where lfd_nr=$id"); 
                    oder
                    PHP-Code:
                    $ResultPointer mysql_query("SELECT lfd_nr, kat, rev, aufn_dat, von, beanst, korr, bem, verantw, se_dat, fort, a_dat FROM $Table $where"); 

                    Aber keine Änderung hat etwas bewirkt ... wenn ich mir die Variablen mit echo ausgeben lasse, kommen (natürlich) exakt die o.g. Zeilen die mir auf dem Bildschirm die richtige Ausgabe bringen ... aber in den Export-Code gepackt bringen sie mir entweder wieder die komplette Ausgabe der DB oder ein leeres Blatt ... :-/

                    Kommentar


                    • #11
                      ok, mit dem hinzufügen noch mehrerer bereits eingegebener Variablen und übernehmen bereits erstellter Werte hat es sich dann letztendlich doch umsetzen lassen

                      Kommentar

                      Lädt...
                      X