PHP Formular, Hilfe!

Neue Frage »

Auf diesen Beitrag antworten »
Jane. PHP Formular, Hilfe!

Hallo zusammen,

ich habe ein Problem bei der Erstellung eines Formulars mit PHP. Eigentlich habe ich alles gemacht, aber ich bekomme einfach keine Ausgabe! Ich brauche dringend Hilfe.

Die Aufgabenstellung lautet wie folgt:

Eine Omnibusgesellschaft berechnet für Fahrscheine 28 Cent pro Kilometer. Der Fahrgast gibt auf der Internetseite des Unternehmens die Fahrtstrecke in km an und wählt zwischen drei Tarifklassen:
Normaltarif, Schüler, Kind.
Für Schüler gibt es 25% und für Kinder 30% Ermäßigung.

Weitere Informationen:
- Datenfeld Strecke soll geprüft werden, ob dieses numerisch ist.
- Bei einer Strecke von >= 20 km beträgt der kmPreis 25 Cent.
- Bei Auswahl des Tarifs Schüler soll zusätzlich der variable Text: "25% Ermäßigung" erscheinen.
- Bei Auswahl des Tarifs Kind soll zusätzlich der variable Text: "30% Ermäßigung" erscheinen.

Es sollen folgende Ausgaben erfolgen:
- eingegebene Fahrtstrecke
- kmPreis
- berechneter Fahrpreis
- Variabler Text



Mein "selbstgeschriebenes" Programm sind bis jetzt noch so aus:
<html>
<head>
<title>Fahrpreis</title>
</head>

<body>

<form>


<p><input type="radio" name="tarif" value="normal" /> Normaltarif</p>
<p><input type="radio" name="tarif" value="schueler" /> Schülertarif</p>
<p><input type="radio" name="tarif" value="kind"/> Kindertarif</p>
Bitte geben Sie die Streckenlänge an: <br>
<p><input name="strecke" size="10" maxlength="15" value="" />
<?php echo $_POST['strecke'];?> in km</p>
<p><input type="submit" value="Senden" /></p>
</form action="" method="post">

<?php
$preisn=0.28;
$preisr=0.25;
$preiss=0.28*0.75;
$preisk=0.28*0.7;

if (is_numeric($_POST['strecke']))
{
$gesamtpreis=$preis*$_POST['strecke'];

if (($_POST['tarif']=='normal') and ($_POST['strecke']<20))
{
$gesamtpreis=$preisn*$_POST['strecke'];
}

elseif (($_POST['tarif']=='normal') and ($_POST['strecke']>=20))
{
$gesamtpreis=$preisr*$_POST['strecke'];
}

elseif ($_POST['tarif']=='schueler')
{
$gesamtpreis=$preiss*$_POST['strecke'];
$text='25% Ermäßigung';
}

elseif ($_POST['tarif']=='kind')
{
$gesamtpreis=$preisk*$_POST['strecke'];
$text='30% Ermäßigung';

}

else {echo 'Bitte wählen Sie Ihren Tarif aus.';}
}

$kmpreis=($gesamtpreis)/($_POST['strecke']);

echo '<p>Bei einer Fahrtstrecke von '.$_POST['strecke'].' km ergibt sich bei einem
Kilometerpreis von '.$kmpreis.' der Gesamtpreis von '.$gesamtpreis.'</p>';

echo "Sie erhalten $text";


?>

</body>
</html>

Mir ist klar, dass mein variabler Text nicht variabel ist aber das ist glaub ich noch mein kleinstes Problem. Was hab ich falsch gemacht? unglücklich
 
Auf diesen Beitrag antworten »
Karlito

Hallo Jane,

dein Fehler ist, dass du die Attribute von Form falsch gesetzt hast. Die müssen in das öffnende Tag und nicht in das schließenden. Alles andere habe ich mir noch nicht angeschaut. Gern kannst Du hier noch mal fragen stellen, wenn es noch weitere Probleme gibt.

Hier noch mal dein Quelltext (der Fehler befindet sich in Zeile 18):
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
<html>
<head>
<title>Fahrpreis</title>
</head>

<body>

<form>


<p><input type="radio" name="tarif" value="normal" /> Normaltarif</p>
<p><input type="radio" name="tarif" value="schueler" /> Schülertarif</p>
<p><input type="radio" name="tarif" value="kind"/> Kindertarif</p>
Bitte geben Sie die Streckenlänge an: <br>
<p><input name="strecke" size="10" maxlength="15" value="" />
<?php echo $_POST['strecke'];?> in km</p>
<p><input type="submit" value="Senden" /></p>
</form action="" method="post">

<?php
$preisn=0.28;
$preisr=0.25;
$preiss=0.28*0.75;
$preisk=0.28*0.7;

if (is_numeric($_POST['strecke']))
{
$gesamtpreis=$preis*$_POST['strecke'];

if (($_POST['tarif']=='normal') and ($_POST['strecke']<20))
{
$gesamtpreis=$preisn*$_POST['strecke'];
}

elseif (($_POST['tarif']=='normal') and ($_POST['strecke']>=20))
{
$gesamtpreis=$preisr*$_POST['strecke'];
}

elseif ($_POST['tarif']=='schueler')
{
$gesamtpreis=$preiss*$_POST['strecke'];
$text='25% Ermäßigung';
}

elseif ($_POST['tarif']=='kind')
{
$gesamtpreis=$preisk*$_POST['strecke'];
$text='30% Ermäßigung';

}

else {echo 'Bitte wählen Sie Ihren Tarif aus.';}
}

$kmpreis=($gesamtpreis)/($_POST['strecke']);

echo '<p>Bei einer Fahrtstrecke von '.$_POST['strecke'].' km ergibt sich bei einem
Kilometerpreis von '.$kmpreis.' der Gesamtpreis von '.$gesamtpreis.'</p>';

echo "Sie erhalten $text";


?>

</body>
</html>


Hier die Korrektur:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
<html>
<head>
<title>Fahrpreis</title>
</head>

<body>

<form action="" method="post">



<p><input type="radio" name="tarif" value="normal" /> Normaltarif</p>
<p><input type="radio" name="tarif" value="schueler" /> Sch&uuml;lertarif</p>
<p><input type="radio" name="tarif" value="kind"/> Kindertarif</p>
Bitte geben Sie die Streckenl&auml;nge an: <br>
<p><input name="strecke" size="10" maxlength="15" value="" /> in km</p>
<p><input type="submit" value="Senden" /></p>
</form>

<?php
$preisn=0.28;
$preisr=0.25;
$preiss=0.28*0.75;
$preisk=0.28*0.7;

if (is_numeric($_POST['strecke']))
{
$gesamtpreis=$preis*$_POST['strecke'];

if (($_POST['tarif']=='normal') and ($_POST['strecke']<20))
{
$gesamtpreis=$preisn*$_POST['strecke'];
}

elseif (($_POST['tarif']=='normal') and ($_POST['strecke']>=20))
{
$gesamtpreis=$preisr*$_POST['strecke'];
}

elseif ($_POST['tarif']=='schueler')
{
$gesamtpreis=$preiss*$_POST['strecke'];
$text='25% Ermäßigung';
}

elseif ($_POST['tarif']=='kind')
{
$gesamtpreis=$preisk*$_POST['strecke'];
$text='30% Ermäßigung';

}

else {echo 'Bitte wählen Sie Ihren Tarif aus.';}
}

$kmpreis=($gesamtpreis)/($_POST['strecke']);

echo '<p>Bei einer Fahrtstrecke von '.$_POST['strecke'].' km ergibt sich bei einem
Kilometerpreis von '.$kmpreis.' der Gesamtpreis von '.$gesamtpreis.'</p>';

echo "Sie erhalten $text";


?>

</body>
</html>


Gruß,

Karlito
Auf diesen Beitrag antworten »
Jane.

suuuper danke dir!

Aber irgenwie funktioniert's noch immer nicht so wie ich will. :/
Ich bekomme jetzt zwar eine Ausgabe, aber ich habe noch folgende Probleme:

Die Berechnungen macht das Programm teilweise richtig! ABER zum einen wird nicht geprüft ob das Datenfeld "Strecke" numerisch ist und zum anderen bekomme beim Aufrufen der PHP Seite eine Fehlermeldung: "Warning: Division by zero in F:\xampp\htdocs\hausaufgaben\fahrpreis1.php on line 56"

also irgendwas ist da faul, aber ich versteh diese verschachtelten if-Befehle nicht so richtig. Vermutlich hab ich da mal wieder was falsch gemacht.

Außerdem weiß ich nicht wie man so einen variable Text hinzufügen kann.

Ich hoffe ich verlang nicht zu viel unglücklich

Danke im Voraus. smile
Auf diesen Beitrag antworten »
Karlito

Hallo Jane,

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
<html>
<head>
<title>Fahrpreis</title>
</head>

<body>

<form action="" method="post">



<p><input type="radio" name="tarif" value="normal" /> Normaltarif</p>
<p><input type="radio" name="tarif" value="schueler" /> Sch&uuml;lertarif</p>
<p><input type="radio" name="tarif" value="kind"/> Kindertarif</p>
Bitte geben Sie die Streckenl&auml;nge an: <br>
<p><input name="strecke" size="10" maxlength="15" value="" /> in km</p>
<p><input type="submit" value="Senden" /></p>
</form>

<?php
$preisn=0.28;
$preisr=0.25;
$preiss=0.28*0.75;
$preisk=0.28*0.7;

if (is_numeric($_POST['strecke']) && strlen($_POST['tarif']) != 0)
{
	//$gesamtpreis=$preis*$_POST['strecke']; //Warum? Die Variable $preis existiert doch gar nicht
	$text=""; //Initialisierung

	if (($_POST['tarif']=='normal') and ($_POST['strecke']<20))
	{
		$gesamtpreis=$preisn*$_POST['strecke'];
	}

	elseif (($_POST['tarif']=='normal') and ($_POST['strecke']>=20))
	{
		$gesamtpreis=$preisr*$_POST['strecke'];
	}

	elseif ($_POST['tarif']=='schueler')
	{
		$gesamtpreis=$preiss*$_POST['strecke'];
		$text='25% Erm&auml;&szlig;igung';
	}

	elseif ($_POST['tarif']=='kind')
	{
		$gesamtpreis=$preisk*$_POST['strecke'];
		$text='30% Erm&auml;&szlig;igung';

	}

	else {echo 'Bitte w&auml;hlen Sie Ihren Tarif aus.';}

	$kmpreis = 0;
	if ($_POST['strecke']!= 0)
	{
		$kmpreis=($gesamtpreis)/($_POST['strecke']);
	}


	if (strlen($_POST['strecke']) != 0)
	{
		echo '<p>Bei einer Fahrtstrecke von '.$_POST['strecke'].' km ergibt sich bei einem
			Kilometerpreis von '.$kmpreis.' der Gesamtpreis von '.$gesamtpreis.'</p>';


		if (strlen($text) != 0)
		{
			echo "Sie erhalten $text";
		}
	}
}
else 
{
	if (strlen($_POST['strecke']) != 0)
	{
		echo "<p>Die Streckenangabe muss eine Zahl sein.</p>";
	}
	if (strlen($_POST['tarif']) == 0)
	{
		echo "<p>Bitte w&auml;len Sie einen Tarif.</p>";
	}
}

?>

</body>
</html>


Leider gerade keine Zeit für Erklärungen. Bitte gerne nachfragen.

Gruß,

Karlito
 
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »