Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Datei / File Upload mit Datenbankeintrag

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Datei / File Upload mit Datenbankeintrag

    Hallo,

    mit folgendem Uploadscript wird die ausgewählte Datei umbenannt und in den Order files hochgeladen dazu erfolgt der Datenbankeintrag mit Kommentar, Suppliername,Dateiname, Datum.

    Ohne die Änderung zum hinzufügen des Textfeldes (suppliername) funktionierte das Script
    Allerdings jetzt nicht mehr mit dem beigefügte erforderlichen Feld (Suppliername) finde den Fehler nicht.
    Die Datei wird hochgeladen allerdings erfolgt kein DB Eintrag.

    Hoffe mir kann jemand helfen.

    Gruß und vorab schon vielen Dank für euere Hilfe.

    PHP-Code:
    <?php  
    error_reporting
    (E_ALL); 
    require_once(
    'verbindung.php');  
         
    // Maximale Dateigröße in MB  
    $maxfilesize 2;  

    // Datei-Feldname im Formular  
    $fieldname 'bild';  

    // Wo soll die Datei hingeladen werden (Ordner)?  
    $uploaddir 'files';  

    // erlaubte Endungen 
      
    $allowedfiletype = array('png','GIF','gif','jpg','jpeg','JPG','JPEG','txt','pdf','PDF',"xls","XLS");   

    /*####################################################################*/ 

    // Variablen
    $suppliername  '';
    $dateiname     ''
    $endung        ''
    $orgname       ''
    $allesok     '';  
    $fehler     '';  
    $komm        ''
    $bildrs     "noch keines geladen"
    $table        'picture'

    // Variablen absichern 
    function quote_smart($value

    // Ueberfluessige Maskierungen entfernen
       
    if (get_magic_quotes_gpc()) { 
           
    $value stripslashes($value); 
       } 
    // In Anfuehrungszeichen setzen, sofern keine Zahl 
    // oder ein numerischer String vorliegt 
       
    if (!is_numeric($value)) { 
           
    $value "'" mysql_real_escape_string($value) . "'"
       } 
       return 
    $value


    // Wenn id übergeben wird, dann laden des Datensatzes 

    $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : ''
    if(!empty(
    $id)) { 
     
    $asql=mysql_query("SELECT kommentar,suppliername,dateiname FROM $table WHERE id=$id") or die(mysql_error());  
     
    $komm  mysql_result($asql,0,'kommentar'); 
     
    $bildrs $uploaddir."/".mysql_result($asql,0,'dateiname'); 


    $ausgabe "Maximale Größe: $maxfilesize MB<br />Erlaubte Endungen: <b>"
    if(
    count($allowedfiletype) > 1){  
      
    $last array_pop($allowedfiletype);  
    $ausgabe .= implode(', '$allowedfiletype);  
    $ausgabe .= ' und '.$last;  
    }elseif(
    count($allowedfiletype) == 1$ausgabe .= $allowedfiletype[0];  
    $ausgabe .= "</b>"

    // Funktion zum Eintrag in die Tabelle "picture"  

    function uploaddb($kommentar,$suppliername,$dateiname,$table,$id,$file){  
        
        if(!empty(
    $id)) { 
         
         if (
    file_exists($file)) { 
                      
    unlink($file);  
                    }  
                     
        
    $sql sprintf("update $table set kommentar=%s, suppliername=%s, dateiname='$dateiname', datum=now() 
                where id=
    $id",$kommentar) or die ("SQL-Fehler = ".mysql_error()); 
                 
                } else {     
                 
         
    $sql sprintf("insert into $table (kommentar,suppliername,dateiname,datum)   
                Values (%s,%s,'
    $dateiname',now())",$kommentar,$suppliername) or die ("SQL-Fehler = ".mysql_error()); 
                    }           
                
        
    $rs mysql_query($sql);  
          if(
    $rs){  
            return 
    "<br/>Daten sind gespeichert<br/>";  
             
            } else {  
           return 
    "<br/>Speicherung nicht möglich<br/>";  
            }          
    }  

    // Fehlerüberprüfung  
    // Splitten des Dateinamens Überprüfung der Endung 
    // Abfrage, ob Formular abgeschickt und splitten des Dateinamens 

    if(isset($_POST['send'])){  
    $allesok 1;  
     
    $darray explode('.'str_replace('/''.'$_FILES[$fieldname]['name'])); 
     if (
    count($darray) == 2) { 
      
       
    $orgname trim($darray[0])."_".time(); 
       
    $endung  trim(strtolower($darray[1])); 
     } 

    // Feldüberprüfung  
      
     
    if($_FILES[$fieldname]['error'] == 1){$allesok=0;   
          
    $fehler='Datei überschreitet die Uploadgröße in der php.ini ('.ini_get('upload_max_filesize').')!';  
        }  
         elseif(
    $_FILES[$fieldname]['error'] == 3) {$allesok=0;  
           
    $fehler 'Datei nur teilweise hochgeladen!';  
                   }  
        elseif(
    $_FILES[$fieldname]['error'] != 0) {$allesok=0;  
             
    $fehler ='Keine Datei ausgewählt!';  
                      }  
        elseif(!
    in_array($endung$allowedfiletype)) {$allesok=0;            
          
    $fehler 'Endung nicht erlaubt!';  
                  }  
        elseif(
    filesize($_FILES[$fieldname]['tmp_name'])/1024/1024 >= $maxfilesize) {$allesok=0;  
          
    $fehler 'Datei zu groß!';  
              }  
    }  
    ?>  
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <html><title>Upload</title> 
    </head>
    <body>  
    <?php  
        
    // wenn alles ok dann Upload des Bildes  
       
    if($allesok){ 

    // Dateiname prüfen und Zeichen ersetzen 
      
    $neuname ''
     for (
    $i=0$i<strlen($orgname); $i++) { 
      
       
    $zz substr($orgname$i1); 
       if (!
    preg_match("/^[A-Za-z0-9-_]+$/i"$zz)) $zz '_'
      
       
    $neuname.= $zz


    // Monage des Dateinamens 
      
    $dateiname $neuname.'.'.$endung

    // Upload 
      
        
    move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploaddir.'/'.$dateiname);  
        
    $dirname dirname($_SERVER['PHP_SELF']);  
        
    $fileurl 'http://'.$_SERVER['SERVER_NAME'].(substr($dirname01) == '\\' substr($dirname1):$dirname).'/'.$uploaddir.'/';  
        
    $href $fileurl.urlencode($dateiname);  
        
    $anzeigen $fileurl.$dateiname;  
          
    // Formularwerte in der Datenbank speichern und Meldung ausgeben.   

    echo uploaddb(quote_smart($_POST['kommentar']),$suppliername,$dateiname,"picture",$id,$bildrs);  
    echo 
    "<b>Datei wurde erfolgreich hochgeladen</b><br />  
            <a href=\""
    .$href."\">$anzeigen</a><br>";  
    }else{  

    // Ausgabe des Formulars 

    ?>  
    <div style="color:red;"><?php echo $fehler?></div>  

    <?php print $ausgabe;?> 
      <br /> 
      <h1>Formular</h1> 

    <form action="<?php echo $_SERVER['PHP_SELF']?>" enctype="multipart/form-data" method="post">  
      <p>
      <input name="<?php echo $fieldname?>" type="file" size="40" />   
      <input type="hidden" name="send" value="send" /><br/> 
        
        Kommentar<br />  
      <textarea name="kommentar" cols="50" rows="10" id="kommentar"><?php echo $komm;?></textarea>  
      <input type="hidden" name="id" value="<?php echo $id;?>" />  
      </p>
      <p>
        <input type="text" name="suppliername" id="suppliername" />
        <br /> 
        Bild: <? echo $bildrs;?><br> 
        <input type="submit" name="submit" value="Hochladen" />
      </p>
    </form>  
    <?php  
    }  
    ?>  
     <br/><a href="uebersicht.php">Anzeige der &Uuml;bersicht </a><br /> 
    </body></html>

  • #2
    sql = sprintf("update $table set kommentar=%s, suppliername=%s, dateiname='$dateiname', datum=now()
    where id=$id",$kommentar) or die ("SQL-Fehler = ".mysql_error());

    wirft das einen Fehler?

    Kommentar


    • #3
      Hallo,

      das komische ist er wirft keinen Fehler aus, jedoch was richtig ist es muss in diesem Bereich liegen, denn nach dem Script bringt er den folgende Fehler:
      Speicherung nicht möglich.


      } else {
      return "<br/>Speicherung nicht möglich<br/>";
      }
      }

      Kommentar


      • #4
        zweimal %s aber nur einmal eine variable

        Kommentar


        • #5
          Hatte ich gesehen und schon korrigiert.

          Danke für den Hinweis funkt aber trotzdem nicht.

          Kommentar


          • #6
            PHP-Code:
                 $sql sprintf("insert into $table (kommentar,suppliername,dateiname,datum)   
                        Values (%s,%s,'
            $dateiname',now())",$kommentar,$suppliername) or die ("SQL-Fehler = ".mysql_error()); 
                            } 
            Das ist auch totaler Unsinn. sprintf erzeugt ja keine DB Operation, ergo gibts da auch keinen DB-Fehler abzufangen. Bei mysql_query() wäre das schon etwas anderes.

            %s erzeugt auch nicht automatisch Hochkommata, wie es mit prepared statements der Fall ist.
            [COLOR="#F5F5FF"]--[/COLOR]
            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
            [COLOR="#F5F5FF"]
            --[/COLOR]

            Kommentar


            • #7
              Okay, bringt mich aber keinen Schritt weiter
              Gibts für diesen Aufbau eine Lösung um dieses Feld zu integrieren oder nicht ?

              Kommentar


              • #8
                Okay, bringt mich aber keinen Schritt weiter
                Dann würde ich da mal drüber nachdenken.

                http://www.php.de/php-einsteiger/489...rundlagen.html
                [COLOR="#F5F5FF"]--[/COLOR]
                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                [COLOR="#F5F5FF"]
                --[/COLOR]

                Kommentar


                • #9
                  Bin kein Kleinkind um darüber nach zu denken.

                  Man kann normal kommunizieren und ich habe mich an dieses Forum gewendet um Hilfe zu erfahren aber nicht um dumme Sprüche zu erhalten.
                  Als Anfänger suchen viele nach schon vorhandenen Scripten um diese evtl. zu verwenden und umzubauen auf seine eigenen Bedürfnisse (warum soll man das Rad neu erfinden). Dieses Script erfüllte diese Eigenschaften allerdings mit dem Nachteil, dass ich noch ein Textfeld zusätzlich benötige und mit dem "umstricken" hier Probleme habe.

                  Kommentar


                  • #10
                    Man kann normal kommunizieren und ich habe mich an dieses Forum gewendet um Hilfe zu erfahren aber nicht um dumme Sprüche zu erhalten.
                    Ja, das ist richtig.
                    Allerdings war das sicher nicht abwertend gemeint! Hier im Forum helfen wir Dir auf den richtigen Weg.
                    Du mußt aber im Gegenzug zeigen, daß Du zumindest versuchst umzusetzen, was wir hier posten.

                    Wenn Du auf einen Post mit hilfreichen Tipps so antwortest:
                    Okay, bringt mich aber keinen Schritt weiter
                    müssen wir davon ausgehen, daß Du Dich nicht damit befasst hast.
                    Denn die Antworten und was Dich weiter bringt steht in dem Zusammenhang in der Doku oder bei Google.

                    Hier wird nicht erwartet, daß jeder gleich alles kann, aber jeder sollte selbst in der Lage sein, Grundlagen zu pauken.
                    Die werden hier nicht jedem einzelnen vermittelt.

                    Sei also nicht böse, wenn es mal Antworten gibt, wie "Lerne Grundlagen".
                    Die helfen Dir zu lernen!
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #11
                      Hab das Problem nun selber lösen können anbei die scripte falls es jemand interessieren sollte.

                      Eingabe-Seite:

                      PHP-Code:
                      <form action="index.php" method="post" enctype="multipart/form-data">

                      <
                      input name="komm" type="text" /></br>
                      <
                      input name="supp" type="text" /></br>
                      <
                      input name="datei" type="file" /></br>
                       <
                      input type="submit" name="submit" value="Hochladen" />

                      </
                      form>

                      <!
                      DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                      <
                      html xmlns="http://www.w3.org/1999/xhtml">
                      <
                      head>
                      <
                      meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                      <
                      title>Unbenanntes Dokument</title>
                      </
                      head>

                      <
                      body>
                      </
                      body>
                      </
                      html
                      Datei Upload mit Datenbankeintrag (in meinem Fall um doppelte Dateinamen zu vermeiden wird die Datei mit einem MD5 hashcode versehen/umbenannt)

                      PHP-Code:
                      <?php

                      // Receiving variables
                      @$pfw_ip$_SERVER['REMOTE_ADDR'];
                      @
                      $komm addslashes($_POST['komm']);
                      @
                      $supp addslashes($_POST['supp']);
                      @
                      $datei_Name $_FILES['datei']['name'];
                      @
                      $datei_Size $_FILES['datei']['size'];
                      @
                      $datei_Temp $_FILES['datei']['tmp_name'];
                      @
                      $datei_Mime_Type $_FILES['datei']['type'];
                      @
                      $Absenden addslashes($_POST['Absenden']);


                         
                      # Name der hochgeladenen Datei:
                         # Dateinamen an allen Stellen trennen, wo ein . ist:
                         
                      $getrennt explode ('.',$datei_Name);
                         
                         
                      $getrennt array_reverse ($getrennt);
                         
                      # Endung ermitteln:
                         
                      $endung $getrennt[0];

                         
                      # MD5-Summe des Timestamps:
                         
                      $md5 md5 (time ());
                         
                      # Dateiname:
                         
                      $datei_Name_neu $md5.'.'.$endung;


                      function 
                      RecursiveMkdir($path)
                       {
                         if (!
                      file_exists($path)) 
                         { 
                            
                      RecursiveMkdir(dirname($path));
                            
                      mkdir($path0777);
                          }
                        }


                      // Validation
                      if( $datei_Size == 0)
                      {
                      header("Location: index.php");
                      exit;
                      }
                      if( 
                      $datei_Size >2048000)
                      {
                      //delete file 
                      unlink($datei_Temp);
                      header("Location: index.php");
                      exit;
                      }
                      if( 
                      $datei_Mime_Type != "application/pdf" )
                      {
                      unlink($datei_Temp);
                      header("Location: index.php");
                      exit;
                      }
                      $uploadFile "files/".$datei_Name_neu ;
                      if (!
                      is_dir(dirname($uploadFile)))
                        {
                          @
                      RecursiveMkdir(dirname($uploadFile)); 
                        }
                      else
                        {
                        @
                      chmod(dirname($uploadFile), 0777);
                        }
                      @
                      move_uploaded_file$datei_Temp $uploadFile); 
                      chmod($uploadFile0644);
                      $datei_URL "L:\Server\xampp\xampp\htdocs\labelmanagement\files/".$datei_Name_neu ;

                      //saving record to MySQL database


                      @$pfw_strQuery "INSERT INTO `picture`(`kommentar`,`suppliername`,`dateiname`)VALUES (\"$komm\",\"$supp\",\"$datei_Name_neu\")" ;
                      @
                      $pfw_host "localhost";
                      @
                      $pfw_user "root";
                      @
                      $pfw_pw "Your Password";
                      @
                      $pfw_db "labelmanagement1";
                      $pfw_link mysql_connect($pfw_host$pfw_user$pfw_pw);
                      if (!
                      $pfw_link) {
                       die(
                      'Could not connect: ' mysql_error());
                      }
                      $pfw_db_selected mysql_select_db($pfw_db$pfw_link);
                      if (!
                      $pfw_db_selected) {
                      die (
                      'Can not use $pfw_db : ' mysql_error());
                      }

                      //insert new record
                      $pfw_result mysql_query($pfw_strQuery);
                      if (!
                      $pfw_result) {
                       die(
                      'Invalid query: ' mysql_error());
                      }
                      mysql_close($pfw_link);

                      header("Location: index.php");

                      ?>

                      Kommentar


                      • #12
                        Zitat von frank1973 Beitrag anzeigen
                        Okay, bringt mich aber keinen Schritt weiter
                        Das ist schon mal eine Aussage die keinen Sinn macht!
                        Das ist nämlich ein Fehler, also bringt es dich schon mal weiter. *kopfschüttel*
                        "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

                        Kommentar

                        Lädt...
                        X