php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.04.2010, 19:05  
Neuer Benutzer
 
Registriert seit: 03.02.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
frank1973 befindet sich auf einem aufstrebenden Ast
Standard [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>
frank1973 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.04.2010, 19:24  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

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?
HPR1974 ist offline  
Alt 19.04.2010, 19:30  
Neuer Benutzer
 
Registriert seit: 03.02.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
frank1973 befindet sich auf einem aufstrebenden Ast
Standard

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/>";
}
}
frank1973 ist offline  
Alt 19.04.2010, 19:32  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

zweimal %s aber nur einmal eine variable
HPR1974 ist offline  
Alt 19.04.2010, 19:35  
Neuer Benutzer
 
Registriert seit: 03.02.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
frank1973 befindet sich auf einem aufstrebenden Ast
Standard

Hatte ich gesehen und schon korrigiert.

Danke für den Hinweis funkt aber trotzdem nicht.
frank1973 ist offline  
Alt 19.04.2010, 19:53  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.991
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
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.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 19.04.2010, 20:05  
Neuer Benutzer
 
Registriert seit: 03.02.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
frank1973 befindet sich auf einem aufstrebenden Ast
Standard

Okay, bringt mich aber keinen Schritt weiter
Gibts für diesen Aufbau eine Lösung um dieses Feld zu integrieren oder nicht ?
frank1973 ist offline  
Alt 19.04.2010, 20:52  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.991
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
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
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 20.04.2010, 07:06  
Neuer Benutzer
 
Registriert seit: 03.02.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
frank1973 befindet sich auf einem aufstrebenden Ast
Standard

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.
frank1973 ist offline  
Alt 20.04.2010, 07:20  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Zitat:
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:
Zitat:
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!
Arne Drews ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Datei upload - Apache Konfiguration? phplerix PHP Tipps 2010 4 03.02.2010 13:33
[Erledigt] zum upload einer Datei ein txt-file erstellen dieter26 PHP Tipps 2009 15 16.01.2010 15:18
File Upload in mehrere Verzeichnisse strgg PHP Tipps 2009 16 18.12.2009 13:03
[Erledigt] Safe Mode - wie mache ich einen File Upload Adam789 PHP Tipps 2009 10 03.11.2009 21:42
Datei Upload mit Statusanzeige Flokle PHP Tipps 2009 5 29.09.2009 17:49
Datei upload mit rename lithium PHP Tipps 2008 6 12.10.2008 03:06
[Erledigt] File Upload: Unter anderem Namen speichern yourdaydream PHP Tipps 2008 9 09.10.2008 08:32
datei upload problem thecracked PHP Tipps 2008 5 11.07.2008 06:23
Datei Upload mit curl? R.E.M. PHP Tipps 2006 1 18.09.2006 20:44
probleme mit rechten => datei upload ph!l PHP Tipps 2005-2 5 29.09.2005 10:12
File Upload - Verzeichnis der Source Datei bekommen yoshy PHP Tipps 2005-2 2 06.09.2005 01:33
Datei nach Upload umbennen PHP Tipps 2005-2 6 03.08.2005 16:05
Problem mit File Upload PHP Tipps 2004-2 2 19.11.2004 13:41
datei upload => datei anzeigen PHP Tipps 2004 16 05.08.2004 02:02
[Erledigt] altes neues problem von datei upload!!! PHP Tipps 2004 3 28.06.2004 19:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php upload datenbank, http://www.php.de/php-einsteiger/67093-erledigt-datei-file-upload-mit-datenbankeintrag.html, php bild upload in datenbank, php upload absichern, php datei upload datenbank, file upload php datenbank, php datei in datenbank hochladen, php datenbank file upload, upload mit datenbankeintrag, upload artikel datenbank php, datei upload in datenbank speichern, image upload php datenbank, php bild hochladen und anzeigen, php file upload datenbank, php bild upload datenbank, php upload mit datenbankeintrag, php upload in datenbank, php datei hochladen speichern, datei in verzeichnis hochladen php name in datenbank, php datei upload in db

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:37 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum