PHP Warning: Invalid argument supplied for foreach()

DichterNebel

Cadet 4th Year
Registriert
Apr. 2009
Beiträge
66
Hi,

ich stehe noch am Anfang meiner Programmier-Karriere und habe folgendes Problem:

Aus einen Html Dokument sollen die Werte an ein PHP Script übermittel und "ausgelesen" werden.

HTML:
<Form Action="Lohn.php" METHOD= "Post">  
  
  Name: <br />
  <SELECT NAME ="name[]">  <!-- name[] = Array -->
  <Option> </OPTION>  <!-- damit Auswahl erstmal leer angezeigt wird -->
  <Option> Person1</Option>
  <Option> Person2 </Option>
  </Select>
  <br />
  
  Anzahl der Stunden <br />
  <Input Type = "Text" Name = "stunden"> <br />
  
  Lohn pro Stunde <br />
  <Input Type = "Text" Name = "lohn"> <br />
  
  Arbeitgeber: <br />
  <SELECT Name ="arbeitgeber[]">
  <Option> </OPTION> <!-- damit Auswahl erstmal leer angezeigt wird -->
  <Option> Arbeit1 </Option>
  <Option> Arbeit2  </Option>
  </Select>
  <br />
  <br /> 
  
  <Input Type = "Submit" Name = "GO" VALUE = "berechnen">

PHP:
<?php

$name        = $_Post['name'];
$stunden     = $_Post['stunden'];
$lohn        = $_Post['lohn'];
$arbeitgeber = $_Post['arbeitgeber'];

foreach ($name as $person) {
echo "Hallo $person";
} 

echo "du hast $stunden Stunden bei";

foreach ($arbeigeber as $wo_den) {
echo "bei $wo_den gearbeitet";
}

?>

Der PHP-Code ist noch nicht ganz fertig und die Formatierung ist auch unvollständig aber
es müsste doch trotzdem funktionieren.
Ich bekomme allerdings immer folgende Fehlermeldung :
Warning: Invalid argument supplied for foreach() in C:\xampp\xampp\htdocs\Lohn.php on line 8

Kann mir jemand sagen wo´s hängt ?
 
Schreib mal </SELECT> in line 8 statt </Select>

echo "Hallo $person"; - müsste glaube ich auch echo "Hallo "$person; heißen, bin mir aber nichts icher, hab schon wochen nichtsmehr gemacht :D
 
Warum behandelst du einen String wie einen Array?
In $name ist nur ein Wert vorhanden...
 
S.D.W schrieb:
Reicht es nicht so aus? ;)
PHP:
<?php
 $name = $_Post['name']; 
 $stunden = $_Post['stunden'];
 $lohn = $_Post['lohn'];
 $arbeitgeber = $_Post['arbeitgeber'];

 echo "Hallo ".$name." du hast ".$stunden." Stunden bei bei ".$arbeitgeber." gearbeitet";
?>
 
Zuletzt bearbeitet: (Ich hab mal einen echo draus gemacht..)
1.
HTML:
<Form Action="Lohn.php" METHOD= "Post">
zu
HTML:
<Form Action="Lohn.php" METHOD="Post">

2.
PHP:
$_Post
zu
PHP:
$_POST
per definition
 
Warning: Invalid argument supplied for foreach() in C:\xampp\xampp\htdocs\Lohn.php on line 8

Das bedeutet, das foreach ein Array mit Inhalten erwartet, aber nicht bekommt.

Probier mal ein
Code:
echo '<pre>';
print_r($name);
echo '</pre>';

um zu schauen, ob die Daten so ankommen, wie du es erwartest.
Siehe bitte auch php: foreach.
 
the_xtc schrieb:
1.

2.
PHP:
$_Post
zu
PHP:
$_POST
per definition

das war´es.
Danke an alle für die schnelle hilfe.

[
Ergänzung ()

oder doch nicht. jetzt kommt die gleiche Fehlermeldung für die das 2. foreach in line 14.
 
Zuletzt bearbeitet:
da fehlt ein t bei arbeitgeber in der foreach.

du brauchst die select nicht als array zu übermitteln, da du eh nur einen wert übermitteln kannst
 
danke für das t. ;)
Also brauch ich Arrays nur, wenn ich in einer variable mehrere Werte übermitteln will ?
 
genau! zB wenn du mehrere checkboxen zur auswahl hast, dann kannst du alle markierten objekte in einer array-variable übermitteln. aber bei selects, radiobuttons und normale text-inputs (welche nur einen wert übermitteln) brauchst du keine klammern an den namen des objekts anzuhängen
 
Zurück
Oben