Ankündigung

Einklappen
Keine Ankündigung bisher.

Mit PHP Textdateien in MySQL Uploaden

Einklappen

Neue Werbung 2019

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

  • Mit PHP Textdateien in MySQL Uploaden

    Halli hallo zusammen,


    ich versuche vergeblich seit Tagen folgenden Script zu schreiben:

    Ich bekomme monatlich eine Textdatei (Tab getrennt) mit immer den selben Spalten aber verschiedene Werte.

    Was ich brauche ist ein Script das anhand eines Upload Buttons mir direkt die Daten dann in die angegebene MySQL Tabelle hochlädt.

    Wie kann ich da am besten vorgehen ?


    LG Casa47

  • #2
    Wie man eine Datei vom Client ins Server lädt ist in PHP ziemlich gut dokumentiert. Falls du keine Seite mit URL aufrufen willst, dann Mit Button ... onClick='JavaScript(AjaxUrl.);' kannst du im Server mit AjaxURL dann mit ziemlich einfache Funktion diese Datei mit while() {} und da drin mit entspr. SQL-Anweisung die Daten INSERT-en

    Kommentar


    • #3
      Wenn du es seit Tagen versuchst, wo liegt Dein konkretes Problem? Beim Upload? Beim Verarbeiten der Daten? Oder beim Insert?

      Kommentar


      • #4
        Hi casa47,

        zum Testen habe ich im Verzeichnis "textfiles" zwei Dateien erstellt, die Daten Tab getrennt enthalten:

        datei1.txt

        Code:
        Klaus Wagner 05.12.1961
        Sybille Horst 12.02.1987
        datei2.txt

        Code:
        Werner Herzog 21.03.1934
        Ulrike Meyer 17.09.1967
        Das folgende Script:

        - speichert die Dateinamen in einem Array, diese werden in einem Select ausgegeben
        - Wählt man eine Datei aus, wird der Inhalt zur Kontrolle in einem Textarea ausgegeben
        - Drückt man den Senden-Button, wird der Dateiinhalt an ein Script gesendet
        -- Da wird die Abfrage "zusammengeschraubt" und es erfolgt eine Rückmeldeung

        Alle JS-Funktionalität kann man hier nachlesen --> http://wiki.selfhtml.org/wiki/Schnell-Index/JavaScript

        Für PHP --> http://php.net/manual/de/

        Das Script

        PHP-Code:
        <?php
        $files 
        glob("textfiles/*.txt");
        ?>
        <!DOCTYPE HTML>
        <html>
        <head>
        <title>Untitled</title>
        <script type="text/javascript">
        <!--
        document.addEventListener('DOMContentLoaded', init);
        function init(){
         document.querySelector('#sel_file').addEventListener('change', function(){
         document.querySelector('#btn').removeAttribute('disabled');
         var file = this.options[this.selectedIndex].text;
         var request = new XMLHttpRequest();
          request.open("GET", file);
          //request.setRequestHeader("X-Test","test1");
          //request.setRequestHeader("X-Test","test2");
          request.addEventListener('load', function(event){
           if (request.status >= 200 && request.status < 300) {
            document.querySelector('#view_file').value = request.responseText
           }else{
                alert(request.statusText, request.responseText);
            }
          });
          request.send();
         this.selectedIndex = 0;
         });
         document.querySelector('#btn').addEventListener('click', function(){
         document.querySelector('#view_file').removeAttribute('disabled');
         var request = new XMLHttpRequest();
         var form = document.querySelector('#form');
         var data = new FormData(form);
         request.open("POST", "__csv_datei_per_button_script.php");
          request.addEventListener('load', function(event){
          if (request.status >= 200 && request.status < 300){
            alert(request.responseText);
          window.location.href = "__csv_datei_per_button.php";
           }else{
                 alert(request.statusText, request.responseText);
                }
          });
          request.send(data);
         });
        }
        //-->
        </script>
        </head>
        <body>
        <form id="form">
        <!-- Textarea ist disabled um Ändern der Daten zu vermeiden -->
        <textarea cols="40" rows="10" id="view_file" name="view_file" disabled></textarea>
        </form>
        <p><select name="sel_file" id="sel_file">
        <option>Dateiauswahl</option>
        <?php
        $i 
        0;
        while(
        $file $files[$i++]){
         echo 
        '<option>'.$file.'</option>';
        }
        ?>
        </select>
        <!-- Button ist disabled um ein Senden einer leeren Textarea zu vermeiden -->
        <button name="btn" id="btn" disabled>Senden</button></p>
        </body>
        </html>
        Das verarbeitende Script

        PHP-Code:
        <?php
        session_start
        ();
        ini_set('error_reporting'E_ALL);
        /* Die einzelnen Textzeilen anhamd des Zeilenende in einem Array speichern*/
        $data explode("\n"$_POST["view_file"]);
        /* Das Array enthält die Aeeaykeys zur Erstellung eines assoziativen Arrays */
        $heads = array("Vorname""Nachname""Geburtstag");
        /* Der erste Teil der Abfrage */
        $query "insert into tabellen(vorname, nachname, geburtstag) values";
        /* Das oben erstellte Array mittels foreach durchlaufen */
        foreach($data as $value){
        /*
        * Bei jedem Durchlauf wird eine Zeile von $data mittels Tab (Das Trennzeichen in der Textdatei)
        * von explode als Array zurückgegeben
        * array_combine macht aus $heads und diesem Array ein assoziatives
        */
         
        $datas array_combine($headsexplode("\t",$value));
         
        /* Den Value-Teil der Abfrage an $query anhängen */
         
        $query.=" ('".$datas['Vorname']."','".$datas['Nachname']."','".$datas['Geburtstag']."'),";
        }
        /* Das letzte Komma entfernen  */
        $query substr($query0, -1);
        /* Datenbankabfrage ausführen
        * CODE
        * CODE
        */

        /* Die Ausgabe erfolgt zur Kontrolle im aufrufendem Script */
        echo $query;
        ?>
        Gruß

        Kommentar

        Lädt...
        X