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:
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!
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!