Ankündigung

Einklappen
Keine Ankündigung bisher.

bitte um Tips für die vereifachung vom Script

Einklappen

Neue Werbung 2019

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

  • bitte um Tips für die vereifachung vom Script

    Hallo zusammen,

    ich hab mir ein Script geschrieben, das dazu dient, eine cvs Datei(Kundendaten aus einem anderen Progamm) auf den Server zu spielen, und in eine mysql Tabelle zu schreiben.

    mir kommt jedoch vor, das man das sicher etwas vereinfachen kann.
    Schaut mal bitte drüber und gebt mir Tips.

    Danke

    PHP-Code:
    <?php
    <?php
    session_start
    ();
    error_reporting(E_ALL);


        
    $pfad "/home/php_t-com/public_html/schwarz/";                                // Verzeichnispfad zur .cvs Datei auf dem Webserver
        
    $objekt "muster";                                                            // Name der Datei wie sie auf dem Webserver heissen soll
        
    $table "test_schwarz";                                                    // Table, in den die CSV-Datei übertragen werden soll(die Spalten müssen schon vorhanden sein)
        
    $terminated ";";                                                             // Trennzeichen, das in der Datei verwendet wird
        
    $message1 "Die Datei konnte nicht bereit gestellt werden.";
        
    $message2 "Keine Datei zum bereitstellen da.";
        
    $message3 "Die Datei wurde erfolgreich in die Datenbank übertragen.";
        
    $message4 "Die Datei ist nicht vorhanden.";
        
        function 
    db_connect() {
            
    $server "localhost";            // Hostname z.B. localhost
            
    $user "xxxx";                    // Benutzername (ACHTUNG DER BENUTZER BRAUCHT AUSREICHENDE RECHTE)
            
    $pass "xxxx";                // Passwort
            
    $database "xxxx";            // Datenbank
            
            
    $result mysql_connect($server,$user,$pass) or die ("Keine Verbindung möglich.");
            
    mysql_select_db($database) or die ("Datenbank existiert nicht.");
            
            
    mysql_select_db($database$result);
            
            return 
    $result;
            }    
            
            
        if (isset(
    $_POST['upload'])){
        
            if(
    $_FILES['cvs']['name']!=""){

                
    $endung substr(strrchr($_FILES['cvs']['name'], '.'), 1);
                
    $_FILES['cvs']['name'] = $objekt.".".$endung;
                
    $filename $_FILES['cvs']['name'];
                
    $file $pfad.$filename;
                
    $_SESSION['file'] = $file;
        
        
                if(
    move_uploaded_file($_FILES['cvs']['tmp_name'], $file)){
                    
    chmod ($file0664); 
            
                    echo 
    "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\" name=\"form1\">\n";
                    echo 
    "<table width=\"50%\" border=\"0\" align=\"center\" bgcolor=\"#C0C0C0\">\n";
                    echo 
    "<tr>\n";
                    echo 
    "<th>CSV in MySQL Schreiben\n";
                    echo 
    "<input name=\"send\" type=\"hidden\" value=\"1\" />\n";
                    echo 
    "</th>\n";
                    echo 
    "<th>\n";
                    echo 
    "<input type=\"submit\" name=\"submit\" value=\"Und los!\" />\n";
                    echo 
    "</th>\n";
                    echo 
    "</tr>\n";
                    echo 
    "</table>\n";
                    echo 
    "</form>\n";                    
                    }
                else {
                    echo 
    "<div align=\"center\">
    \n"
    ;
                    echo 
    $message1;
                    echo 
    "</div>\n";
                    }
                }
            else {
                echo 
    "<div align=\"center\">
    \n"
    ;
                echo 
    $message2;
                echo 
    "</div>\n";
                }
            }
        else {
            echo 
    "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\" enctype=\"multipart/form-data\" name=\"form2\">\n";
            echo 
    "<div align=\"center\">\n";
            echo 
    "<input type=\"file\" name=\"cvs\" />\n";
            echo 
    "<input name=\"upload\" type=\"hidden\" id=\"upload\" value=\"1\" />\n";
            echo 
    "<input type=\"submit\" name=\"Submit\" value=\"Senden\" />\n";
            echo 
    "</div>\n";
            echo 
    "</form>\n";
            }
                
            
        if (isset(
    $_SESSION['file']) AND isset ($_POST['send'])){
        
            
    $file $_SESSION['file'];
            
            if (
    is_writable($file)) {        
                    
                
    $res db_connect();
        
                
    // Bisherige Daten aus der Datenbank löschen
                
    $del "DELETE FROM ".$table;
                
    $delete mysql_query($del$res) or die(mysql_error());
        
                
    // CSV-Datei in die Datenbank übertragen
                
    $sql "LOAD DATA INFILE '$file' REPLACE INTO TABLE ".$table." FIELDS TERMINATED BY '$terminated'";
                
    $query mysql_query($sql$res) or die(mysql_error());
                
                
                echo 
    "<div align=\"center\">
    \n"
    ;
                echo 
    $message3;
                echo 
    "</div>\n";                
                }
            else {
                echo 
    "<div align=\"center\">
    \n"
    ;
                echo 
    message4;
                echo 
    "</div>\n";    
                }
            }
    ?>
    ?>
    Gruß JEGO

    Ein PHP Script tut, was Du schreibst, nicht was Du willst.


  • #2
    • - Ich weiss nicht, warum du unbedingt zwei Formulare abschicken willst, um eine Datei hochzuladen.
      - Einmal mysql_select_db() genügt volkommen
      - TRUNCATE ist schneller als DELETE * FROM
    All das berücksichtigt und sonst ein paar Sachen angepasst ergibt das etwa Folgendes:
    PHP-Code:
    function db_connect() {
        
    $server "localhost";      // Hostname z.B. localhost
        
    $user "xxxx";                // Benutzername (ACHTUNG DER BENUTZER BRAUCHT AUSREICHENDE RECHTE)
        
    $pass "xxxx";               // Passwort
        
    $database "xxxx";       // Datenbank
        
        
    $result mysql_connect($server,$user,$pass) or die ("Keine Verbindung möglich.");
        
    mysql_select_db($database) or die ("Datenbank existiert nicht.");
    }    

    $pfad "/home/php_t-com/public_html/schwarz/";      // Verzeichnispfad zur .cvs Datei auf dem Webserver
    $objekt "muster";                                   // Name der Datei wie sie auf dem Webserver heissen soll
    $table "test_schwarz";                          // Table, in den die CSV-Datei übertragen werden soll(die Spalten müssen schon vorhanden sein)
    $terminated ";";                                     // Trennzeichen, das in der Datei verwendet wird
    $message1 "Die Datei konnte nicht bereit gestellt werden.";
    $message2 "Keine Datei zum bereitstellen da.";
    $message3 "Die Datei wurde erfolgreich in die Datenbank übertragen.";
    $message4 "Die Datei ist nicht vorhanden.";        
    if (isset(
    $_POST['Submit'])){
        if(
    $_FILES['cvs']['name'] !=  ""){

            
    $endung substr(strrchr($_FILES['cvs']['name'], '.'), 1);
            
    $_FILES['cvs']['name'] = "$objekt.$endung";
            
    $filename $_FILES['cvs']['name'];
            
    $file "$pfad.$filename"
            if(
    move_uploaded_file($_FILES['cvs']['tmp_name'], $file)){  
                
    db_connect();    
                
    // Bisherige Daten aus der Datenbank löschen
                
    $del "TRUNCATE TABLE $table";
                
    mysql_query($del) or die(mysql_error() . "
    $del");
        
                
    // CSV-Datei in die Datenbank übertragen
                
    $sql "LOAD DATA INFILE '$file' REPLACE INTO TABLE $table FIELDS TERMINATED BY '$terminated'";
                
    $query mysql_query($sql) or die(mysql_error() . "
    $sql");
                                
                echo 
    "<div align='center'>
    \n"
    ;
                echo 
    $message3;
                echo 
    "</div>\n";                
            }
            else {
                echo 
    "<div align='center'>
    \n"
    ;
                echo 
    $message1;
                echo 
    "</div>\n";
            }
        }
        else {
            echo 
    "<div align='center'>
    \n"
    ;
            echo 
    $message2;
            echo 
    "</div>\n";
        }
    }
    else {
        echo 
    "<form action='".$_SERVER['PHP_SELF']."' method='post' enctype='multipart/form-data'>\n";
        echo 
    "<div align='center'>\n";
        echo 
    "<input type='file' name='cvs' />\n";
        echo 
    "<input type='submit' name='Submit' value='Senden' />\n";
        echo 
    "</div>\n";
        echo 
    "</form>\n";

    Gruss
    L

    Kommentar


    • #3
      Ich würde versuchen, die ganzen echo-Ausgaben mit Template zu machen.
      Damit man sauber PHP von HTML trennen kann, nur ein Vorschlag.

      Kommentar

      Lädt...
      X