Merkwürdiges Problem mit Dateiupload

Moritz123

Erfahrenes Mitglied
Merwürdiges Problem mit Dateiupload

Hallo!

ich nutze eine von mir geschriebene Bildgalerie auf PHP/MySQL-Basis. Dazu habe ich mir ein AdminScript geschrieben, dass sowohl die Datenbankeinträge, als auch die Fileuploads erledigt. Dieses wollte ich heute um eine Edit-Funktion erweitern, die es mir ermöglichen soll, jeden Parameter eines Datensatzes zu ändern - also auch Bilder. Genau hier liegt mein Problem:
Verschiebe ich das Bild in eine andere Kategorie und ändere die Grafiken des DS nicht, so werden diese trotzdem gelöscht, obwohl ich das mit einer IF-Abrage abfange.
Vielleicht ein bisschen Code zur Verdeutlichung:
PHP:
$file1 = Name des File-Feldes 1
$file2 = Name des File-Feldes 2
if ($file1 == "")
		{	$thumb_delete = "<font color=gray>nicht geändert</font>";
			$thumb_upload = "<font color=gray>nicht geändert</font>";
		}
	else {
	
		/* Thumb löschen */
		$abfrage = "SELECT thumb FROM galerie WHERE id='$id'";
		$ausgabe = mysql_query($abfrage);
		$num = mysql_numrows($ausgabe);
		if ($num > 0) {while ($row = mysql_fetch_object($ausgabe)){$datei = $pfad.$row->thumb;}}
		mysql_free_result($ausgabe); 
		if(@unlink($datei)){$tumb_delete = "<font color=green>Erfolg!</font>";}
		else {$thumb_delete = "<b><font color=\"red\">Fehlgeschlagen!</b> <a href=\"#\" onMouseOver=\"tooltip('<font face=Tahoma size=1><b><u><img border=0 src=images/ga_info.gif border=0> Info</u></b><p>Warum ist das Löschen fehlgeschlagen?<br> Dies kann mehrere Gründe haben: Am wahrscheinlichsten ist, dass das das Bild bereits gelöscht wurde.<br>Abhilfe: keine Weiteren Schritte notwendig.')\"><img src=images/ga_info.gif border=0></a>";	
		
		/* Thumb-Upload */
		$name1 = $_FILES['file1']['name'];
		$tempname1 = $_FILES['file1']['tmp_name'];
		$type1 = $_FILES['file1']['type'];
		$size1 = $_FILES['file1']['size'];
		if (@copy ($tempname1,$pfad.$name1)){$thumb_upload="<font color=green><b>Erfolg!</b>";}
		else{$thumb_upload="<b><font color=\"red\">Fehlgeschlagen!</b> <a href=\"#\" onMouseOver=\"tooltip('<font face=Tahoma size=1><b><u><img border=0 src=images/ga_info.gif border=0> Info</u></b><p>Warum ist der Upload fehlgeschlagen?<br> Dies kann mehrere Gründe haben: Am wahrscheinlichsten ist, dass das hochzuladende Bild zu groß war.<br>Abhilfe: Bild manuell in folgendes Verzeichnis $pfad per FTP hochladen.<br>Möglich ist auch, dass innerhalb des Dateinamens ein üngültiges Zeichen(Sonderzeichen) steht.<br>Abhilfe: Dateinamen anpassen.')\"><img src=images/ga_info.gif border=0></a>";}
	}
	
	
	if ($file2 == "")
		{	$bild_delete = "<font color=gray>nicht geändert</font>";
			$bild_upload = "<font color=gray>nicht geändert</font>";
		}
	else {	
			
		/* Bild löschen */
		$abfrage = "SELECT bild FROM galerie WHERE id='$id'";
		$ausgabe = mysql_query($abfrage);
		$num = mysql_numrows($ausgabe);
		if ($num > 0) {while ($row = mysql_fetch_object($ausgabe)){$datei = $pfad.$row->bild;}}
		mysql_free_result($ausgabe); 
		if(@unlink($datei)){$bild_delete = "<font color=green>Erfolg!</font>";}
		else { $bild_delete = "<b><font color=\"red\">Fehlgeschlagen!</b> <a href=\"#\" onMouseOver=\"tooltip('<font face=Tahoma size=1><b><u><img border=0 src=images/ga_info.gif border=0> Info</u></b><p>Warum ist das Löschen fehlgeschlagen?<br> Dies kann mehrere Gründe haben: Am wahrscheinlichsten ist, dass das das Bild bereits gelöscht wurde.<br>Abhilfe: keine Weiteren Schritte notwendig.')\"><img src=images/ga_info.gif border=0></a>"; }	
		
		/* Bild-Upload */
		$name2 = $_FILES['file2']['name'];
		$tempname2 = $_FILES['file2']['tmp_name'];
		$type2 = $_FILES['file2']['type'];
		$size2 = $_FILES['file2']['size'];
		if (@copy ($tempname2,$pfad.$name2)){$bild_upload="<font color=green><b>Erfolg!</b>";}
		else{$bild_upload="<b><font color=\"red\">Fehlgeschlagen!</b> <a href=\"#\"onMouseOver=\"tooltip('<font face=Tahoma size=1><b><u><img border=0 src=images/ga_info.gif border=0> Info</u></b><p>Warum ist der Upload fehlgeschlagen?<br> Dies kann mehrere Gründe haben: Am wahrscheinlichsten ist, dass das hochzuladende Bild zu groß war.<br>Abhilfe: Bild manuell in folgendes Verzeichnis $pfad per FTP hochladen.<br>Möglich ist auch, dass innerhalb Dateinamens ein üngültiges Zeichen(Sonderzeichen) steht.<br>Abhilfe: Dateinamen anpassen.')\"><img src=images/ga_info.gif border=0></a>";}	
	}

Ich kann mir nicht erklären, warum der Code innhalb des else{} ausgeführt wird _obwohl_ $file1 & $file2 leer sind. Könnte es sein, das ich ein file-Feld nicht so ansprechen kann?

Vielen Dank im Vorraus!
 
Dein Fehler ist, dass Du auf "", also auf leer, prüfst. Selbst wenn in einer File-Box keine Datei ausgewählt wurde, so übergibt sie meines Wissens trotzdem einen Wert ... den ich jetzt aber leider nicht mehr weiß. *schäm*

Lass Dir einfach mal den Inhalt der $file1-Variable ausgeben, wenn Du keine Datei auswählst ... dann weisst Du auf welchen Wert Du prüfen musst.
 
Hallo!

vielen Dank für die Antwort - manchmal steht man echt auf dem Schlauch!
Das Zauberwort heißt "none". Dieses habe ich jetzt eingesetzt, aber erhalte nun nach dem abschicken des Forms eine leere Seite, was ich mir auch nicht erklären kann.
 
Zuletzt bearbeitet:
Das mit dem linken sollte kein Problem sein, da ich ja dadran nix geändert hab und vorher die seite einwandfrei geöffnet wurde. Deswegen kann ich mir das auch nicht erklären...
 
Zurück