Dateiupload und Update

markberg

Erfahrenes Mitglied
Hallo,

ich möchte jemanden nach einem Eintrag in DB die Möglichkeit geben, ein Bild mit einzufügen!? Dazu habe ich ein Upload erstellt und möchte dann gleichzeitig die Änderung mit der letzten eingetragenen ID, also seiner, ein Update (Bildpfad) haben. Irgendwie klappt das bei mir aber nicht. So habe ich es versucht:

PHP:
<?
$tempname = $_FILES['bildname']['tmp_name']; 
$name = $_FILES['bildname']['name'];
$type = $_FILES['bildname']['type']; 
$size = $_FILES['bildname']['size']; 
if($type = "image/gif" && $type != "image/pjpeg") { 
    $err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden."; 
} 
if($size > "25000") { 
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Die maximale Dateigrosse beträgt 25 KB!<br><br><a href='javascript:history.go(-1)'><b>zurück</b>"; 
} 
if(empty($err)) { 
    copy("$tempname", "$name"); 
    echo "Dein Bild wurde erfolgreich hochgeladen"; 
} 
else { 
    foreach($err as $error) 
    echo "$error<br>"; 
}                   //Upload ende
//UPDATE

$sql= "UPDATE `DBxxx`.`tabelle` SET bild = .'$name'. //Name des geuploadeten Bildes
WHERE id = LAST_INSERT_ID() ";
mysql_query( $sql ) or die( mysql_error() );
 
Ich seh bei deinem Scrip kein Insert, woher soll es dann eine LAST_INSERT_ID() geben?

Ausserdem hat deine Vorgehensweise den Nachteil, dass bereits bestehende Bilder mit neuen gleichem Namens überschrieben werden.

Ich mach in meinen Uploadscripts immer erst den DB-Eintrag und dann move_uploaded_file ( string filename, string destination ), wobei
$destination = "path/file".mysql_insert_id();
 
Zuletzt bearbeitet:
Also mit dem Update stehe ich schon immer auf dem Kriegsfuß!
Über mein erstes Formular gibt es doch ein auto_incre... id!?
Somit dachte ich, funkt. auch LAST_INSERT_ID!?
Habe ich wohl falsch gedacht...
Bringt es etwas, wenn ich dies in meinem ersten From änder, oder kann ich gleich einen ganz anderen Weg einschlagen?
 
markberg hat gesagt.:
Über mein erstes Formular gibt es doch ein auto_incre... id!?
Somit dachte ich, funkt. auch LAST_INSERT_ID!?
Entweder zerrst du die ID über die Formulare mit (Session oder hidden Field) oder du erledigst den Upload in dem mit dem Insert.
 
Mit der ID hatte ich auch schon in Erwägung gezogen, hatte ja auch Insert und Upload in einem, jedoch hatt das Upload Form immer ein Fehler angezeigt, wenn jmd. kein Bild mit hochladen wollte. Hatte schon probiert, dies zu unterbinden mit wenn leer, dann trozdem insert, aber da hats mich dann irgendwann zerrissen... werd mal schauen... Danke erstmal
 
markberg hat gesagt.:
Sorry, sitze seit heute um 10 vor dem kasten!? Wie brav ' ' !?
Na ich denk mal die query hat ungefähr so ausgesehen:
Code:
INSERT INTO table (name,usw,bild,usf) VALUES (hans,usw,,usf)

Besser wäre:
Code:
INSERT INTO table (name,usw,bild,usf) VALUES ('hans','usw','','usf')
 
achso! Nein, so brav war ich! Das Upload Script verlangte sozusagen immer eine gif od. jpg Datei! Somit hat es nicht durchgearbeitet und dann den folgenden DB Eintrag verhindert! Das meinte ich... Wenn also ein jemand keine Datei sprich Bild mit hochladen wollte, gab es immer den Fehler "darf nur blabla datei hochladen..."
 
Ach so, da brauchst du ja nur das Fehlermeldungsgedöns vom Vorhandensein des $_FILES['bildname']['tmp_name'] abhängig machen.

[edit]
$_FILES['bildname']['error'] ist hier besser geeignet
[/edit]
 
Zuletzt bearbeitet:
Zurück