csv Export einer Tabelle

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

  • csv Export einer Tabelle

    Hallo zusammen,


    ich habe mir mit Hilfe des www diese Abfrage gebaut:
    Code:
    SELECT *
            FROM tabvalve_ext_angebotartikelstuecklisteext
            INTO OUTFILE '../ftp/specs/Specification_".$_SESSION['SpecID'].".csv' 
            FIELDS TERMINATED BY ';' 
            OPTIONALLY ENCLOSED BY '"'
            ESCAPED BY '\\' 
            LINES TERMINATED BY '\n'
            WHERE idtabvalveSpec = :0
            ORDER BY OP, BOM
    die allerdings den Fehler
    Code:
    Parse error:  syntax error, unexpected '' '
    verursacht. Da ich nicht sooo fit bit im Programmieren frag ich an der Stelle was ich hier letztendlich falsch gemacht habe?

    Danke für Eure Hilfe!
    Gruß
    Stefan

  • #2
    Bitte den kompletten PHP-Code für den Query posten. Sonst müssen wir raten.

    Gruß
    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Code:
              INTO OUTFILE '../ftp/specs/Specification_".$_SESSION['SpecID'].".csv' 
      ...
              OPTIONALLY ENCLOSED BY '"'
      fällt dir was auf?

      Kommentar


      • #4
        Ich habe es jetzt inzwischen so gelöst:
        Code:
        private function exportSpecSheet(){
            $db = new mysqli(DBHOST, DBBENUTZER, DBPASSWORT, DBNAME);
            header( 'Content-Type: application/csv' );
            header( "Content-Disposition:   attachment;filename=Specification_".$_SESSION["SpecID"].".csv");
            $fp = fopen('ftp/specs/Specification_'.$_SESSION["SpecID"].'.csv', 'a');
            $sql = "SELECT *
                FROM tabvalve
                WHERE idtabvalveSpec = ".$_SESSION["SpecID"]."
                ORDER BY OP, BOM 
                ";
            $result = mysqli_query($db, $sql) or die( mysqli_error($db) );
            $row = mysqli_fetch_array($result);
            if($row) {
                fputcsv($fp, array_keys($row));
                mysqli_data_seek($result, 0);
            }
            while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
                fputcsv($fp, $row);
            }
            fclose($fp);
            readfile($fp);
        }
        Jetzt ist es aber so dass die Daten auf dem Rechner abgelegt werden, das heruntergeladene csv aber lediglich den Quellcode enthält. Das File wird also immer korrekt angelegt und befüllt, aber letztendlich nicht heruntergeladen.

        Was mache ich denn noch falsch?

        Kommentar


        • #5
          Ich bekomme leider nach wie vor nur den Quellcode der Seite als csv zum Download bereitgestellt, lediglich der Export in ein csv-File funktioniert.

          Aber was muss ich machen damit mir das korrekt exportierte csv-File zum herunterladen angeboten wird?

          Könnt Ihr mir hier bitte noch einmal helfen?

          Code:
          private function exportSpecSheet(){
              $db = new mysqli(DBHOST, DBBENUTZER, DBPASSWORT, DBNAME);
              header( 'Content-Type: application/csv' );
              header( "Content-Disposition: attachment;filename=Specification_".$_SESSION["SpecID"].".csv");
              $fp = fopen('ftp/specs/Specification_'.$_SESSION["SpecID"].'.csv', 'a');
              $sql = "SELECT OP, BOM, SerienNrKpl, Baugruppe, Artikelnr, einzelMenge, gesMenge, Kommentar
                  FROM tabvalve_ext_angebotartikelstuecklisteext
                  WHERE IndexKompExt = ".$_SESSION["SpecID"]."
                  ORDER BY OP, BOM 
                  ";
              $result = mysqli_query($db, $sql) or die( mysqli_error($db) );
              $row = mysqli_fetch_array($result);
              if($row) {
                  fputcsv($fp, array_keys($row));
                  // reset pointer back to beginning
                  mysqli_data_seek($result, 0);
              }
              while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
                  fputcsv($fp, $row);
              }
              fclose($fp);
              readfile($fp);
          }

          @chorn
          Gerade mit solchen Dingen bin ich leider nicht so sehr vertraut. Was passt denn nicht?

          Kommentar


          • #6
            mal so was ähnliches ausprobiert?
            PHP-Code:
            header('Content-type: application/force-download');
            ...
            $file file_get_contents('ftp/specs/Specification_'.$_SESSION["SpecID"].'.csv');
            echo 
            $file
            Ist manchmal etwas tricky.

            Gruß
            Peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              Es klappt einfach nicht!
              Ich zähle schon über 200 Downloads, aber es ist schon immer so dass das File zwar ordentlich auf dem Server mit dem richtigen Inhalt abgelegt wird, aber der Download enthält immer nur den Quellcode.
              Kann es sein dass der Verweis einfach nicht passt, dass er das File zum Herunterladen dann nicht mehr findet? Fehlt da ein Strich oder ein Hochkomma? Ist da ein Zeichen zu viel oder zu wenig?


              Wenn der Code nach dem "fclose" aufhört (ohne "readfile") passiert genau das gleiche. Aber fclose stößt doch keinen Download an! Oder doch?
              Ich blicke hier leider nicht durch..

              Kommentar


              • #8
                Probier erst mal etwas ganz Einfaches:
                PHP-Code:
                <?php
                  $open
                fopen('php://file''w');
                  
                fputcsv($open, array('Bla','Blubb''Blubber'));
                  
                fclose($open);
                ?>
                Was passiert dann?

                Gruß
                Peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  Mit genau diesem Code kann er das File nicht anlegen. Aber ich nehme an ich sollte die Zeile auch anpassen..

                  Wenn ich diesen Code nehme:
                  Code:
                    $open= fopen("ftp/specs/Specification_".$_SESSION["SpecID"].".csv", 'a');
                    fputcsv($open, array('Bla','Blubb', 'Blubber'));
                    fclose($open);
                  Wird das csv mit dem Text des Arrays angelegt. Es wird dann aber kein Filer heruntergeladen.

                  So solls wohl auch sein. Oder?


                  Was müsste ich dann an meinem Code ändern?

                  Kommentar

                  Lädt...
                  X