PHP - Übergabe von Variablen

  • #1
J

JuliusCaesar

Bekanntes Mitglied
Themenersteller
Dabei seit
19.05.2001
Beiträge
193
Reaktionspunkte
0
Ort
Bingen am Rhein
Hi Leute,
ich wollte gerade ein Beispiel aus einem Buch testen und habe dafür zwei Dateien geschrieben.

listing1-5.php:
Code:
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN [url]http://www.w3.org/TR/html4/loose.dtd>[/url]
<html>
<head>
<title>Lohnberechnung</title>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
</head>

<body>
<form action=listing1-6.php method=post>
Name:<br>
<select name=name[]>
<option>Alex</option>
<option>Frank</option>
<option>Katrin</option>
<option>Steffen</option>
<option>Denis</option>
</select><br>

Anzahl Stunden:<br>
<input type=text name=stunden><br>

Lohn pro Stunde:<br>
<input type=text name=lohn><br>

Arbeitgeber:<br>
<select name=arbeitgeber[]>
<option>McBurger</option>
<option>Kleiner Wok</option>
<option>Mr. Pommes</option>
<option>Brötchen de Luxe</option>
<option>Pizza & More</option>
</select><br><p>
<input type=submit name=go value=Berechnen>
</form>
</body>
</html>
listing1-6.php:
Code:
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN [url]http://www.w3.org/TR/html4/loose.dtd>[/url]
<html>
<head>
<title>Ergebnis der Lohnberechnung</title>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
</head>

<body>
<?php
foreach($name as $person)
{echo Hallo $person,<br><p>;
}
echo du hast $stunden Stunden bei ;
foreach($arbeitgeber as $wo_denn)
{echo $wo_denn gearbeitet.<br><p>;
}
$summe = $stunden * $lohn;
echo Dabei hast du $summe ? verdient.;
?>
</body>
</html>

Wenn ich aber auf Berechnen klicke, kommt folgende Meldung:
Warning: Invalid argument supplied for foreach() in E:\Jana2\html\PHP-Lernen\listing1-6.php on line 10 Notice: Undefined index: stunden in E:\Jana2\html\PHP-Lernen\listing1-6.php on line 13 du hast Stunden bei Warning: Invalid argument supplied for foreach() in E:\Jana2\html\PHP-Lernen\listing1-6.php on line 14 Notice: Undefined index: stunden in E:\Jana2\html\PHP-Lernen\listing1-6.php on line 17 Notice: Undefined index: lohn in E:\Jana2\html\PHP-Lernen\listing1-6.php on line 17 Dabei hast du 0 ? verdient.

Kann mir einer sagen, woran das liegt? Ich benutze IE 6 mit SP2, JanaServer2 und PHP 5.01

Ändere ich listing1-6.php in:
Code:
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN [url]http://www.w3.org/TR/html4/loose.dtd>[/url]
<html>
<head>
<title>Ergebnis der Lohnberechnung</title>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
</head>

<body>
<?php
foreach($_POST[name] as $person)
{echo Hallo {$person},<br><p>;
}
echo du hast {$_POST[stunden]} Stunden bei ;
foreach($_POST[arbeitgeber] as $wo_denn)
{echo {$wo_denn} gearbeitet.<br><p>;
}
$summe = $_POST[stunden] * $_POST[lohn];
echo Dabei hast du $summe ? verdient.;
?>
</body>
</html>
ab - der Vorschlag stammt von einem anderen Forum, aber die melden sich nimmer :( - bekomme ich die Meldung trotzdem.
 
  • #2
Hi

Der zweite Vorschlag sieht eigentlich richtig aus, wenn du die Übung aber genau so umsetzten möchtest ändere in deiner php.ini mal register_globals = on
Danach den Apache neustarten.

Gruß, Michael
 
  • #3
Gilt das mit der php.ini auch für den zweiten Vorschlag?
Denn der funktioniert ja auch nit. :(

Ich hab zwar keinen Apache, sondern JanaServer 2, aber ich werd das jetzt trotzdem mal ändern. ;)
 
  • #4
Hab das jetzt geändert, aber der Effekt ist bei beiden Lösungsvorschlägen der Datei listing1-6.php gleich Null.
Ich bekomme weiterhin die Meldung. :'(

Liegt das an meinem JanaServer? Aber die ganzen PHP-Foren (WBB-Board oder so ähnlich), die ich zu Testzwecken installiert hatte, die sind ja auch gelaufen. ???
 
  • #5
Das Problem liegt wohl am JanaServer 2. :(
Ich habe jetzt den Apache installiert und siehe da, es funktioniert. 8)

Trotzdem danke für die Hilfe.
 
  • #6
PCDReitz schrieb:
Hi

Der zweite Vorschlag sieht eigentlich richtig aus, wenn du die Übung aber genau so umsetzten möchtest ändere in deiner php.ini mal register_globals = on
Danach den Apache neustarten.

Gruß, Michael

Pfui Reitzi, :D

wie kann man nur dazu raten mit Register Globals On zu arbeiten??? Sowas tut man nicht, man zeigt lieber wie das ganze mit Register Globals off funktioniert! ;)
 
  • #7
:'(Genau!!

REGISTER_GLOBALS gehören AUS.

Wenn du in den Select-Boxen eh kein MULTIPLE zulassen willst, dan lass bei dem namen die [] weg.
Damit sparst du dir auch die foreach-Schleifen. (Unnötig wie ein Kropf)
Ausserdem solltest du erstmal im PHP-Script abfragen ob überhaupt der SUBMIT-Button gedrückt wurde.
Damit es einfacher wird habe ich es dir mal in einem Script zusammengefasst.
Allerdings solltest du deine Daten auch überprüfen ob sie auch richtig eingegeben wurden.

Code:
<?
if($_POST['go']) {
    $summe = $_POST['stunden'] * $_POST['lohn'];
    echo <p>Hallo . $_POST['name'] .</p>
           .<p>du hast . $_POST['stunden'] . Stunden bei . $_POST['arbeitgeber']. gearbeitet.</p>
           .<p>Dabei hast du . $summe . € verdient.</p><br>;
}
?>

<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN [url]http://www.w3.org/TR/html4/loose.dtd>[/url]
<html>
<head>
<title>Lohnberechnung</title>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
</head>

<body>
<form action= method=post>
Name:<br>
<select name=name>
   <option>Alex</option>
   <option>Frank</option>
   <option>Katrin</option>
   <option>Steffen</option>
   <option>Denis</option>
</select><br>

Anzahl Stunden:<br>
<input type=text name=stunden><br>

Lohn pro Stunde:<br>
<input type=text name=lohn><br>

Arbeitgeber:<br>
<select name=arbeitgeber>
   <option>McBurger</option>
   <option>Kleiner Wok</option>
   <option>Mr. Pommes</option>
   <option>Brötchen de Luxe</option>
   <option>Pizza & More</option>
</select><br><p>
<input type=submit name=go value=Berechnen>
</form>
</body>
</html>
 
  • #8
Wenn du dann schon mit Verbesserungen anfängst dann denk mal drüber nach ob du nicht mit $_REQUEST anstatt mit $_POST arbeiten solltest. Damit brauchst du dir nämlich keinen Kopf drüber machen wie die Daten übergeben werden (ob mit POST/GET oder COOKIE).
 
  • #9
8)OK,

Auf einer Seite will ich dir Recht geben.
Einfacher ist es natürlich wen du nur mit $_REQUEST schaffst, aber da ich das Beruflich mache, kommst du manchmal nicht umhin es zu differenzieren.
Denk einfach mal darüber nach, wen du z.B ein Login-Script schreibst und du willst nicht, dass die Userdaten per URL weitergegeben werden.
Da ist ein $_POST Abfrage schon sinnvoller. Daher habe ich es mir nun mal so angewöhnt.

Aber wie gesagt im Prinzip ist die Lösung per $_REQUEST die einfachere.

Konfuzius sagte schon:
Alle Wege die zum Ziel führen sind richtig.

Gruss

;DConny
 
  • #10
Danke für die Lösungen leute.

Dann war es ja doch gut, dass ich vergessen hatte, zu erwähnen, dass sich das Problem eigentlich erledigt hatte.
Die ganze Sache war ein Problem des JanaServer 2. Als ich den Apache installiert hatte, ging das Script einwandfrei. ;)
 
Thema:

PHP - Übergabe von Variablen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben