csv lokal speichern und überschreiben

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

  • csv lokal speichern und überschreiben

    Hallo zusammen,

    ich habe hier ein script was noch nicht ganz das macht was es soll
    Ich möchte das die erstellte csv im Verzeichnis der ausführenden php datei gespeichert wird und das sollte die schon vorhanden sein, diese überschreibt.

    Bräuchte dazu bitte Euren Input
    Code:
    <?php
    
    require 'db_connect.php'  ;  // same folder!
    // require '../../folder/db_connect.php'  Example: https://www.youtube.com/watch?v=Vl8rc3wTmxs&feature=youtu.be
    
    //get records from database
    $query = $conn->query("SELECT * FROM `tempout` WHERE  timestamp > TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 hour));");
    
    if($query->num_rows > 0){
        $delimiter = ",";
        $filename = "tempout_export". ".csv";
        
        //create a file pointer
        $f = fopen('php://memory','csvURL:http://highchart:8888/tempout_export.csv', 'w');
        
        //set column headers
        $fields = array('timestamp', 'value0');
        fputcsv($f, $fields, $delimiter);
        
        //output each row of the data, format line as csv and write to file pointer
        while($row = $query->fetch_assoc()){
            // $status = ($row['status'] == '1')?'Active':'Inactive';
            $lineData = array($row['timestamp'], $row['value0']);
            fputcsv($f, $lineData, $delimiter);
        }
        
        //move back to beginning of file
        fseek($f, 0);
        
        //set headers to download file rather than displayed
        header('Content-Type: text/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '";');
        
        //output all remaining data on a file pointer
        fpassthru($f);
    }
    exit;
    
    ?>

  • #2
    Ja was passiert denn sonst? Das aktuelle Verzeichnis steht in __DIR__, das kannst du dir zum testen mit var_dump(__DIR__) ausgeben lassen, aber der Aufruf hier

    Code:
    $f = fopen('php://memory','csvURL:http://highchart:8888/tempout_export.csv', 'w');
    sieht falsch aus, guck dir mal die Doku an

    https://www.php.net/manual/de/function.fopen.php

    Kommentar


    • #3
      Zitat von chorn Beitrag anzeigen
      Ja was passiert denn sonst?
      Das Script lädt bei Ausführung im Browser die erstellte csv Datei herunter.
      Es soll aber eigentlich die Datei in dem gleichen Verzeichnis speichern, in dem das script ausgeführt wird.
      Wenn die csv vorhanden ist, soll sie überschrieben werden.

      der fopen Teil sieht nun so aus:
      PHP-Code:
      $f fopen('/Users/Quito/Desktop/V-Server/highchart-Mysql-PHP Scripte/htdocs''w+'); 
      Dann bekomme ich jedoch folgende Fehlermeldungen:
      HTML-Code:
      05-Mar-2020 20:32:19 Europe/Berlin] PHP Warning:  fputcsv() expects parameter 1 to be resource, boolean given in /Users/Quito/Desktop/V-Server/highchart-Mysql-PHP Scripte/htdocs/csv-export.php on line 25
      [05-Mar-2020 20:32:19 Europe/Berlin] PHP Warning:  fseek() expects parameter 1 to be resource, boolean given in /Users/Quito/Desktop/V-Server/highchart-Mysql-PHP Scripte/htdocs/csv-export.php on line 29
      [05-Mar-2020 20:32:19 Europe/Berlin] PHP Warning:  fpassthru() expects parameter 1 to be resource, boolean given in /Users/Quito/Desktop/V-Server/highchart-Mysql-PHP Scripte/htdocs/csv-export.php on line 36

      Kommentar


      • #4
        fopen() liefert wohl eine Fehlermeldung. Die solltest du dir auch ansehen.

        Kommentar

        Lädt...
        X