Bilder update

wildstar

Mitglied
Hallo,
vielleicht kann mir hier jemand helfen. Habe schon sehr viel im Internet und auch hier bereits nachgeschaut. Leider keine transparente Anhaltspunkt gefunden.

Ich habe ein Formular indem zusätzlich ein Bild von den jeweiligen User in die Datenbank hochgeladen wird.
Die Bilddatei wird auf der gleichen Ebene in einen Ordner gespeichert. Der Name der Datei wird aus der hochgeladenen Datei herausgefiltert und in einen Varchar definierten Feld in der Datenbank gespeichert.
Das alles klappt soweit.


Das Problem liegt in einen weiteren Formular -> UserEdit.php
Hier kann ich als Admin all die Daten anzeigen lassen und abändern.
Die Daten lassen sich soweit auch abändern. Nur mit dem Bild habe ich schwierigkeiten.

Dateiüberprüfung
In diesem script wird das Bild auf seine Eigenschaften (größe, dateiformat usw.) überprüft.

PHP:
//		BILD-FELD (kein Pflichtfeld)
			$breite = 140;	// Maximalbreite der Grafiken in px.
			if(isset($_FILES['Datei']) && $_FILES['Datei']['size'] > 0)
			{
				$tempname = $_FILES['Datei']['tmp_name'];
				$dateiname= $_FILES['Datei']['name'];
				$dateigroesse = $_FILES['Datei']['size'];
				$dateityp = GetImageSize($tempname);
				if($dateityp[2] == 1 || $dateityp[2] == 2) // Gif oder JPG?
				{
					$endung = ($dateityp['2'] == 1 ? "gif" : "jpg");
					$neuname = time() . ".$endung";
					$bildbreite = $dateityp[0];
					if($bildbreite <= $breite)	// Bild zu breit?
					{					
						if(move_uploaded_file($tempname, "img/" . $neuname))
						{
							chmod("img/" . $neuname, 0666);
							echo "Die Datei wurde erfolgreich hochgeladen!";
						}
						else
						{
							$fehler.="Der Bilduploud hat leider nicht geklappt!<br>";
						}
					}
					else
					{
						$fehler.="Die datei ist leider zu breit!<br>";
					}				
				}
				else
				{
					$fehler.="Es handelt sich nicht um eine gültige jpg oder gif-Datei!<br>";
				}
			}	// ENDE: if(isset($_FILES['datei']) && $_FILES['datei']['size'] > 0)
			else
			{
				echo "<br><font color='red'>Die Datei ".$_FILES['Datei']." ist nicht da.</font>"; 
			}		
//	------------------ ENDE: //	BILD-FELD ------------------



Der SQL Befehl:

PHP:
//	UPDATE Ausführen
	$sql_update = "UPDATE 
				$tab_users 
			SET 
				Vorname = '".mysql_real_escape_string($_POST['Vorname'], $cnx_user)."',
				Nachname = '".mysql_real_escape_string($_POST['Nachname'], $cnx_user)."',
				Strasse = '".mysql_real_escape_string($_POST['Strasse'], $cnx_user)."',
				Plz = '".mysql_real_escape_string($_POST['Plz'], $cnx_user)."',
				Ort = '".mysql_real_escape_string($_POST['Ort'], $cnx_user)."',
				Tel = '".mysql_real_escape_string($_POST['Tel'], $cnx_user)."',
				Handy = '".mysql_real_escape_string($_POST['Handy'], $cnx_user)."',
				Email = '".mysql_real_escape_string($_POST['Email'], $cnx_user)."',
				Geb = '".mysql_real_escape_string($_POST['Geb'], $cnx_user)."',
				Fahrzeug = '".mysql_real_escape_string($_POST['Fahrzeug'], $cnx_user)."',
				Hubraum = '".mysql_real_escape_string($_POST['Hubraum'], $cnx_user)."',
				Erstzulassung = '".mysql_real_escape_string($_POST['Erstzulassung'], $cnx_user)."', 
				Bild = '".$neuname."', 
				Nickname = '".mysql_real_escape_string($_POST['Nickname'], $cnx_user)."',
				Admin = '".mysql_real_escape_string($_POST['Admin'], $cnx_user)."',
				Username = '".mysql_real_escape_string($_POST['Username'], $cnx_user)."',
				Kennwort = '".mysql_real_escape_string($_POST['Kennwort'], $cnx_user)."' 
			WHERE 
				id = '".mysql_real_escape_string($_POST['IDedit'], $cnx_user)."'";


Ausschnitt aus meinen AnzeigeScript

PHP:
					echo "<form action='".$_SERVER['PHP_SELF']."?suchbuchstabe=".$_REQUEST['suchbuchstabe']."' method='post'>";
					echo "<input type='hidden' name='sent' value='2'>";
					echo "<input type='hidden' name='IDedit' value='".$row['ID']."'>";



 // Auslesen der anderen Daten (Vorname usw.)



//	BILD upload
	echo "<tr>";
	echo "<td><div class='txt'>Bild:</div></td>";
	echo "<td colspan='2'>";
	echo "<input type='file' class='textfeld' name='Datei'>
			<input type='text' class='textfeld' name='Datei1' value='".$row['Bild']."'></td>";
	echo "</tr>";

Das Script zeigt den Ausschnitt aus meinen Anzeige-Formular
Ich habe zur Kontrolle ein weiteres <input...text...... -feldname='Datei1' gemacht, um zu kontrollieren, welchen Namen das Bild hat.

Klicke ich auf die Schaltfläche Durchsuchen von "<input type='file' class='textfeld' name='Datei'> , wird mir der Pfad zum Bild im Eingabefeld angezeigt.

Klicke ich dann Anschließend auf Updaten, wird der bereits abgespeicherte Dateiname in der Datenbank gelöscht.



Ich hoffe ich habe es soweit klar geschrieben und
bedanke mich schon mal vorab.
 
Zuletzt bearbeitet:
Also der Name wird aus der DB gelöscht? Ich mein, du überschreibst ihn ja eigentlich mit einem neuen Wert...
PHP:
// ...
Bild = '".$neuname."'
// ...
 
Das Problem geht ja schon an, dass er mir bei dem oberen Script. if (isset($_FILES...)) nicht mal reinkommt.

Es wird dann schon gleich der else Teil :

echo "<br><font color='red'>Die Datei ".$_FILES['Datei']." ist nicht da.</font>";

ausgegeben. Das heißt, ich komm nicht mal zur Daten überprüfung.
 
Dir fehlt ein
HTML:
enctype="multipart/form-data"
in deinem Formular-Tag (<form>). Füg das noch ein, dann sollte es gehen.
 
mAu hat gesagt.:
Dir fehlt ein
HTML:
enctype="multipart/form-data"
in deinem Formular-Tag (<form>). Füg das noch ein, dann sollte es gehen.
Ich bedanke mich sehr herzlich bei Dir. Es klappt.
Du kannst Dir jetzt gar nicht Vorstellen, wie sehr ich mich freue. Ich wäre schon fast Verrückt geworden. Danke nochmals:p
 
Wenn du die Frage noch als "Erledigt" markierst, wär ich dir sehr dankbar :)
(Links unten oder links oben auf "Erledigt" klicken.)
 
mAu hat gesagt.:
Wenn du die Frage noch als "Erledigt" markierst, wär ich dir sehr dankbar :)
(Links unten oder links oben auf "Erledigt" klicken.)

Jetzt hab ich doch noch ne Frage.
Hab das Bild nun drin und kann es abändern.
Wenn ich das bild nicht abändern möchte, sondern nur die Daten, dann ist es so wie Du am Anfang schon geschrieben,, dass das Bild gelöscht wird.
Eben deshalb, weil neuname überschrieben wird.

Beim Absenden von den Daten, ist in prinzip kein bild zum Upload vorhanden (Weil ja kein neues hochgeladen wird) und schickt ein leeres Array an die Datenbank. Was tut man in so einen Folgefall
 
Ich denke so müsste es funktionieren...
PHP:
//    UPDATE Ausführen
    $sql_update = "UPDATE 
                $tab_users 
            SET 
                Vorname = '".mysql_real_escape_string($_POST['Vorname'], $cnx_user)."',
                Nachname = '".mysql_real_escape_string($_POST['Nachname'], $cnx_user)."',
                Strasse = '".mysql_real_escape_string($_POST['Strasse'], $cnx_user)."',
                Plz = '".mysql_real_escape_string($_POST['Plz'], $cnx_user)."',
                Ort = '".mysql_real_escape_string($_POST['Ort'], $cnx_user)."',
                Tel = '".mysql_real_escape_string($_POST['Tel'], $cnx_user)."',
                Handy = '".mysql_real_escape_string($_POST['Handy'], $cnx_user)."',
                Email = '".mysql_real_escape_string($_POST['Email'], $cnx_user)."',
                Geb = '".mysql_real_escape_string($_POST['Geb'], $cnx_user)."',
                Fahrzeug = '".mysql_real_escape_string($_POST['Fahrzeug'], $cnx_user)."',
                Hubraum = '".mysql_real_escape_string($_POST['Hubraum'], $cnx_user)."',
                Erstzulassung = '".mysql_real_escape_string($_POST['Erstzulassung'], $cnx_user)."', 
                ".(($_FILES['Datei']['size'] > 0) ? "Bild = '".$neuname."'," : '')." 
                Nickname = '".mysql_real_escape_string($_POST['Nickname'], $cnx_user)."',
                Admin = '".mysql_real_escape_string($_POST['Admin'], $cnx_user)."',
                Username = '".mysql_real_escape_string($_POST['Username'], $cnx_user)."',
                Kennwort = '".mysql_real_escape_string($_POST['Kennwort'], $cnx_user)."' 
            WHERE 
                id = '".mysql_real_escape_string($_POST['IDedit'], $cnx_user)."'";
 
Zuletzt bearbeitet:
Zurück