Problem mit foreach

Cemil

Erfahrenes Mitglied
Hallo,
versuche gerade ein Bild hochzuladen, aber erhalte danach folgende Fehlermeldung:

Warning: Invalid argument supplied for foreach() in D:\xampp\htdocs\beispiele\filestoreTest.php on line 29

Sobald ich die If-Anweisung weglasse klappt es, aber das ist nicht der Sinn der Sache.

Hat irgendjemand eine Idee?

PHP:
if ($company == true && $name == true && $address == true && $city == true && $tel == true && $email == true)
		{
  		if(empty($uploadfile_err)) {
    		copy("$uploadfile_tempname", "$uploadfile_path"."$uploadfile_name");
    		echo "<p>Die Datei $uploadfile_name wurde erfolgreich hochgeladen!</p>";
		}
    	}
		else {
    		foreach($_POST['uploadfile_err'] as $uploadfile_error) {
      	}
    		echo "<p>Übergeben wurde " . $_POST['uploadfile_err'] . " als Wert</p>";
		}
Grüsse
 
ich bin nicht sicher, aber ich glaube deine Variable: $_POST['uploadfile_err'] ist kein Array oder?

--> Manuel sagt: "Diese ermöglicht es, auf einfache Weise ein Array zu durchlaufen. foreach funktioniert nur in Verbindung mit Arrays. Wenn Sie versuchen foreach mit Variablen eines anderen Datentyps oder nicht initialisierten Variablen zu benutzen, gibt PHP einen Fehler aus. "

sonst poste noch dein Script, welches dieses aufruft hier
 
Hallo,
vielen Dank für eure Antworten.

Ich habe mir das ganze unter php.net angeschaut, aber so ganz nachvollziehen konnte ich es nicht, deshalb hier mal der Code:

PHP:
// Bilddatei
    	if(empty($uploadfile)) {
    		echo "<p>Bitte wählen Sie eine Bilddatei aus (nur gif, jpg, jpeg oder png).</p>";
		}
  	  else {
		$uploadfile_tempname = $_FILES['uploadfile']['tmp_name'];
		$uploadfile_name = $_FILES['uploadfile']['name'];
		$uploadfile_type = $_FILES['uploadfile']['type'];
		$uploadfile_size = $_FILES['uploadfile']['size'];
		if($uploadfile_type != "image/gif" && $uploadfile_type != "image/pjpeg" && $uploadfile_type != "image/x-png") {
   		$uploadfile_err[] = "<p>Bitte wählen Sie eine gültige Bilddatei aus.</p>";
		}
		if($uploadfile_size > "100000") {
    		$uploadfile_err[] = "<p>Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 100 KB!</p>";
		}
  		if ($company == true && $name == true && $address == true && $city == true && $tel == true && $email == true)
		{
  		if(empty($uploadfile_err)) {
    		copy("$uploadfile_tempname", "$uploadfile_path"."$uploadfile_name");
    		echo "<p>Die Datei $uploadfile_name wurde erfolgreich hochgeladen!</p>";
		}
    	}
		else {
    		foreach($_POST['uploadfile_err'] as $uploadfile_error) {
      	}
    		echo "<p>Übergeben wurde " . $_POST['uploadfile_err'] . " als Wert</p>";
		}
    		//echo "<b>Die Bilddatei $uploadfile_name konnte nicht gesendet werden!</b>" . mysql_error();
		}

Grüsse
 
Hallo nochmals,
ich hab's:

PHP:
// Bilddatei
    	if(empty($uploadfile)) {
    		echo "<p>Bitte wählen Sie eine Bilddatei aus (nur gif, jpg, jpeg oder png).</p>";
		}
  		else {
		$uploadfile_tempname = $_FILES['uploadfile']['tmp_name'];
		$uploadfile_name = $_FILES['uploadfile']['name'];
		$uploadfile_type = $_FILES['uploadfile']['type'];
		$uploadfile_size = $_FILES['uploadfile']['size'];
		if($uploadfile_type != "image/gif" && $uploadfile_type != "image/pjpeg" && $uploadfile_type != "image/x-png") {
   		echo "<p>Bitte wählen Sie eine gültige Bilddatei aus.</p>";
		}
		if($uploadfile_size > "100000") {
    		echo "<p>Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 100 KB!</p>";
		}
  		if ($company == true && $name == true && $address == true && $city == true && $tel == true && $email == true)
		{
  		/*if(empty($uploadfile_err)) {
    		copy("$uploadfile_tempname", "$uploadfile_path"."$uploadfile_name");*/
    		echo "<b>Die Bilddatei $uploadfile_name wurde erfolgreich gesendet!</b>";
		}
		else {
    		/*foreach($_POST['uploadfile_err'] as $uploadfile_error)
    		echo "<p>Übergeben wurde " . $_POST['uploadfile_err'] . " als Wert</p>";*/
    		echo "<b>Die Bilddatei $uploadfile_name konnte nicht gesendet werden!</b>" . mysql_error();
		}
		}

Trotzdem vielen Dank für eure Hilfe.

Grüsse

Cemil
 
Hab doch noch einen Fehler entdeckt. Ein bisschen merkwürdig. Wenn ich z.B. eine .psd Datei hochlade, wird angezeigt das die Datei erfolgreich hochgeladen wurde, aber in der Datenbank wird nichts eingetragen, das ist schon mal gut so, aber warum wird keine Fehlermeldung ausgegeben, das die Datei nicht gesendet werden kann? Am Code hat sich seitdem letzten Beitrag nichts geändert.

Grüsse
 
Dein Script lässt auch nur JPG, GIF und PNG Dateien mit
einer max. Größe von 100kb zu.

Blöderweise hast du die Fehlermeldungen für "erfolgreich
hochgeladen" nicht mit der Funktion für den Upload selbst
gekoppelt - d.h. selbst wenn die Datei fehlerhaft usw. ist
und nicht hochgeladen wird zeigt dein Script trotzdem eine
positive Erfolgsmeldung an.
 
Zuletzt bearbeitet:
Zurück