Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] CSV-Datei erstellen und Daten reinschreiben

Einklappen

Neue Werbung 2019

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

  • [Erledigt] CSV-Datei erstellen und Daten reinschreiben

    Hi.
    Kurz vorweg - ich habe das letzte Mal vor Jahren ein wenig mit PHP gearbeitet (privat) und habe damit beruflich EIGENTLICH auch nichts zu tun, aber jetzt muss es mal sein.
    Wir haben ein Intranet wo auf einer Seite aus einer Datenbank ein paar Daten zu jedem Mitarbeiter angezeigt werden.
    Ich habe nun einen weiteren Button in die entsprechende PHP-Datei eingebaut um diese Daten wenn sie aus der DB ausgelesen und angezeigt werden gleichzeitig in eine CSV-Datei ausgeben zu lassen.

    Was ich bisher habe:
    - Datei öffnen und speichern:
    Code:
    if (isset($_POST['csv'])){
        $datei = @ fopen('test.csv', 'a');
        if ($datei == false){
          echo "Fehler beim öffnen der CSV-Datei!";
        }
      }
    Code:
    fclose($datei);
    - CSV-Datei schreiben:
    Code:
    fputcsv($datei, $daten);
    Was mir fehlt:
    - Wird die CSV-Datei wenn sie nicht vorhanden istv automatisch erstellt? Scheint mir nicht so.
    - Die CSV-Datei habe ich manuell auf dem Server erstellt. Am besten fände ich es aber wenn sie bei demjenigen der aktuell im Intranet surft auf dem Desktop entsteht bzw. derjenige einen Pfad auswählen könnte. Geht sowas ohne weiteres?
    - Wieso werden die Daten nicht in die CSV-Datei geschrieben?

    Hier nochmal ein zusammenhängendes Stück Code:
    Code:
      if (isset($_POST['csv'])){
        $datei = @ fopen('test.csv', 'a');
        if ($datei == false){
          echo "Fehler beim öffnen der CSV-Datei!";
        }
      }
    
      while($daten = $db->fetch_array($qid))
      {
        ShowMemberLine($daten,$i,$client_folder,"T",$vars_post['search_nachname'],$vars_post['search_vorname'],$vars_post['search_kuerzel'], $client_phone[$vars_get['client']], $client_address[$vars_get['client']]);
        if(isset($_POST['csv']) && $datei) {
          fputcsv($datei, $daten);
        }
        $i++;
      }
      $db->free_result($qid);
      if($datei) {
        fclose($datei);
      }
    Ich hoffe es wird klar was ich machen will und mir kann jemand helfen. Ich habe wie gesagt ewig nicht mit PHP gearbeitet - ich hoffe das ich dennoch alle Fragen beantworten kann die anfallen.
    Danke.

    EDIT: Okay, habe schon rausgefunden das die Datei beim Modus "w" automatisch erstellt werden sollte.

  • #2
    Das simpelste wäre vermutlich ein bat-Skript, was beim hochfahren des PC's automatisch ausgeführt wird und die Datei auf den Desktop kopiert.
    Falls die CSV-Datei immer aktuell ist, würde ein ein einfaches kopieren ausreichen. anderenfalls müsste man sich zunächst durch einen Aufruf des PHP-Skriptes vergewissern, dass die Datei aktualisiert wird.
    [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
    [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

    Kommentar


    • #3
      Das ganze soll aber nur per Knopfdruck im Intranet ausgeführt werden. Nicht jeder Mitarbeiter will ja jedesmal wenn er ins Intranet geht eine Datei bei sich auf dem PC löschen.

      Kommentar


      • #4
        Zitat von DiaryOfDreams Beitrag anzeigen
        - Wird die CSV-Datei wenn sie nicht vorhanden istv automatisch erstellt? Scheint mir nicht so.
        Bei fopen musste den zweiten Parameter angeben, der regelt, ob die datei neu angelegt werden soll. Ausschnitt aus dem php-manual:
        'r'
        Open for reading only; place the file pointer at the beginning of the file.

        'r+'
        Open for reading and writing; place the file pointer at the beginning of the file.

        'w'

        Open for writing only; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.

        'w+'

        Open for reading and writing; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.

        'a'

        Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.

        'a+'

        Open for reading and writing; place the file pointer at the end of the file. If the file does not exist, attempt to create it.

        'x'

        Create and open for writing only; place the file pointer at the beginning of the file. If the file already exists, the fopen() call will fail by returning FALSE and generating an error of level E_WARNING. If the file does not exist, attempt to create it. This is equivalent to specifying O_EXCL|O_CREAT flags for the underlying open(2) system call. 'x+' Create and open for reading and writing; place the file pointer at the beginning of the file. If the file already exists, the fopen() call will fail by returning FALSE and generating an error of level E_WARNING. If the file does not exist, attempt to create it. This is equivalent to specifying O_EXCL|O_CREAT flags for the underlying open(2) system call.

        Da das Skript auf dem Server ausgeführt wird, kannst du bei dem Benutzer keine Dateien lokal auf dem System(Desktop) ablegen. Wenn dies möglich wäre, könnte man ja auch Usern im Netz Schadprogramme unterjubeln...
        "My software never has bugs, it just develops random features."
        "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

        Kommentar


        • #5
          CSV Datei auf dem Server erstellen und anschließend zum Download anbieten.

          Momentan kriegst du als Ergebnis eine leere Datei? Auf den ersten Blick sieht es eigentlich richtig aus.

          Kommentar


          • #6
            Zitat von DiaryOfDreams Beitrag anzeigen
            Das ganze soll aber nur per Knopfdruck im Intranet ausgeführt werden. Nicht jeder Mitarbeiter will ja jedesmal wenn er ins Intranet geht eine Datei bei sich auf dem PC löschen.
            Dann müsste man es eben so regeln, dass jeder Mitarbeiter eine Verknüpfung auf den Desktop erhält, die auf das Bat-Skript verweist. Klickt man dann darauf, bekommt man die aktuelle CSV-Datei auf den Desktop.
            [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
            [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

            Kommentar


            • #7
              @mquadrat: Die Idee hört sich gut an. Das werde ich mal so versuchen.
              Aber bislang wird leider weder eine Datei angelegt noch die (von Hand erstellte Datei beschrieben). Die Datei ist jetzt auf dem Server in dem selben Verzeichnis wie die aktuelle php-Datei. Oder muss ich den kompletten Pfad mit angeben? Ich denke nicht, oder?

              EDIT: OKay, die Dateien wurden doch erstellt und gefüllt - nur woanders als ich dachte.

              Kommentar

              Lädt...
              X