Profilbearbeitung funktioniert nicht
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
alter sex
auslese
bearbeiten
bild
code
fang
file
format
hintergrundbild
http
image
normale einstellungen
profil
set
sex
sol
type
url
wert code
wohnort
-
Ich will dass meine User auch ein Hintergrundbild für Ihr Profil haben, also hab ich hier was zusammengecoded. Das Problem ist, dass die Datei zwar Hochgeladen, und auch in die Datenbank eingetragen wird, aber wenn der User dann sein Profil nochmals bearbeitet (und damit der Wert $_FILES['wide_bg']['name'] leer ist) der Inhalt `bgimage` gelöscht wird...
kann mir da bitte einer helfen?
<?php ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////// VARIABLEN /////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// $db = @new mysqli ('mysql.lima-city.de', 'user', 'pass', 'db_138318_3'); $bgimage = "uploads/".$_COOKIE['user']."_".$_FILES['wide_bg']['name']; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////// NORMALE EINSTELLUNGEN ///////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// $sql1 = 'UPDATE penguins_user SET name = "'.$_POST['realname'].'", wohnort = "'.$_POST['wohnort'].'", age = "'.$_POST['alter'].'", sex = "'.$_POST['sex'].'", bgimage = "'.$_POST['bgimage'].'", icq = "'.$_POST['icq'].'", msn = "'.$_POST['msn'].'", skype = "'.$_POST['skype'].'", jabber = "'.$_POST['jabber'].'", bg_color_main = "'.$_POST['bg_color_main'].'", bg_color_main = "'.$_POST['bg_color_main'].'", bg_color_1 = "'.$_POST['bg_color_1'].'", bg_color_2 = "'.$_POST['bg_color_2'].'", bg_color_text = "'.$_POST['bg_color_text'].'", bg_color_link = "'.$_POST['bg_color_link'].'"'; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////// BILD OPTION ////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// if($_FILES['wide_bg']['name'] == '') { $msg_green = 'Dein Profil wurde erfolgreich gespeichert!'; }else{ if($_FILES['wide_bg']['size'] > 204800) { $msg = 'Dein Bild ist größer als 200kb!'; }else{ if(($_FILES['wide_bg']['type'] == 'image/png') OR ($_FILES['wide_bg']['type'] == 'image/jpg') OR ($_FILES['wide_bg']['type'] == 'image/gif')) { $msg_green = 'Dein Profil wurde erfolgreich gespeichert und das Bild hochgeladen!'; move_uploaded_file($_FILES['wide_bg']['tmp_name'], $bgimage); $sql2 = ', bgimage = "'.$bgimage.'"'; if(!$result2) { echo $db->error; }else{} }else{ $msg = 'Dein Hintergrundbild darf nur im Format JPG, PNG oder GIF sein!'; } } } $sql3 = ' WHERE user = "'.$_COOKIE['user'].'"'; $sql = $sql1.$sql2.$sql3; $result = $db->query($sql); include('account.php'); ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Fang doch einfach den Error Wert
ab. Wenn dieser ungleich 0 ist, wurde erfolgreich ein Bild hochgeladen.$_FILES['wide_bg']['error']
Wenn gar nichts hochgeladen wurde, steht dieser Wert auf 4.
Mehr dazu hier: http://www.php.net/manual/en/features.file-upload.errors.php -
Hmm. Das ist zwar gut, aber nicht der Richtige Lösungsweg.
Ich hab mir das sol vorgestellt:
Profil bearbeiten + kein Bild hochladen -> SQL-Query $sql1 und $sql3 ausführen
Profil bearbeiten + Bild hochladen -> SQL-Query $sql1, $sql2 und $sql3 ausführen
,aber das klappt nicht... Wie sollten die if() {}elseif() {}else{} -Schleifen dann aussehen?
EDIT: Ich habs jetzt so umgecodet, dass ich einfach den Wert der Tabelle "bgimage" auslese und einfach bei jeder Fehlermeldung als $sql2 einfüge... natürlich wird dann nicht mehr verglichen, ob ein File da ist, sondern, ob das eingegebene File dasselbe wie das bereits gespeicherte ist.
Jedenfalls klappt es jetzt und das Thema kann geschlossen werden
Beitrag zuletzt geändert: 18.1.2010 18:18:33 von limabone -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage