Hochgeladenes Bild ersetzen

ropueh

Mitglied
Hallo, ich habe einen Terminkalender mit Flyerupload. Das ganze soll auch editierbar sein, Flyer sollen nachgetragen oder verändert werden können... der neue Upload mit aktualisierung der DB klappt aber nicht und ich weiß nicht, warum immer
Notice: Undefined index: bild in /var/www/web445/html/v5/admin/termin_edit.php on line 27 bekomme ?! Wo ist der Fehler?

das Formular

PHP:
echo"
<form action=\"termin_edit.php\" method=\"post\">
<input type=\"hidden\" name=\"id\" value=\"$id\">
<input value=\"$datum\" type=\"text\" name=\"datum\" size=\"11\"> um <input value=\"$start\" type=\"text\" name=\"start\" size=\"11\"> Uhr
<br>
<b><input value=\"$titel\" type=\"text\" name=\"titel\" size=\"60\"></b><br>
<select size=\"1\" name=\"kategorie\">
	<option>Konzert</option>
	<option>TanzBar</option>
</select>
<br>
<textarea name=\"beschreibung\" rows=\"5\" cols=\"50\">$beschreibung</textarea>
<br>
<img src=\"$flyer\" width=\"100\" height=\"144\">
<input type=\"file\" name=\"bild\" value=\"\">
<br>
<br>
<input type=\"submit\" name=\"submit\" value=\"ändern\">
</form>";

Und die Verarbeitung
PHP:
if (isset($id) && isset($titel) && isset($datum) && isset($start) && isset($kategorie) && isset($beschreibung)){ 

		$uploaddir = "/xxx/xxxx/pix/flyer/";
		$flyerdir = "http://www.xxx.de/pix/flyer";

	// neuer oder anderer Flyer
	if ($bild != ""){
		if (copy($HTTP_POST_FILES['bild']['tmp_name'], $uploaddir.$HTTP_POST_FILES['bild']['name'])){		
			$flyerurl = "".$flyerdir."/".$_FILES['bild']['name']."";
			mysql_query("UPDATE termine SET titel='$titel', datum='$datum', start='$start', kategorie='$kategorie', beschreibung='$beschreibung', flyer='$flyerurl' WHERE id='$id'");
		}
	}
	
	// Flyer wird nicht verändert
	else{ 		
		mysql_query("UPDATE termine SET titel='$titel', datum='$datum', start='$start', kategorie='$kategorie', beschreibung='$beschreibung' WHERE id='$id'");
		echo "Daten geändert, Flyer bleibt";
	}
}
else {
echo "feeehleeerrr";
}

line 27: if ($bild != ""){
Danke im Voraus
 
Hi,

ersetz mal

Code:
<form action=\"termin_edit.php\" method=\"post\">

durch
Code:
<form action=\"termin_edit.php\" method=\"post\" enctype=\"multipart/form-data\">

line 27: if ($bild != ""){

Also, wenn register_globals auf off steht, hast du hier auch noch ein Problem. Du musst, wie wod2008 schon erwähnte, $_FILES['bild'] abfragen.

Das mit der Form-Ergänzung musst du aber trotzdem noch machen.
 
Oh super... das klappt schonmal. Vielen Dank.

Wähle ich nun jedoch kein neues Bild aus, ist $_FILE['bild'] scheinbar nicht leer, denn er gibt mir Warning: copy() [function.copy]: Unable to access in /var/www/web445/html/v5/admin/termin_edit.php on line 27
 
Code:
array(5) { ["name"]=>  string(0) "" ["type"]=>  string(0) "" ["tmp_name"]=>  string(0) "" ["error"]=>  int(4) ["size"]=>  int(0) }
 
Eigentlich wollte ich, das du das Problem selbst löst. Seis drum:

Prüf doch mal, ob der Name der hochgeladenen Datei nicht leer ist, oder noch besser, ob error gleich 0 ist:

PHP:
if( $_FILES['bild']['error'] == 0 )
{

Das wäre dann deine Zeile 27.
 
Zurück