Wie kriege ich wenn ich meine PHP-Seite öffnen möchte denn Error / Fehlmeldung behoben?
mir kommt immer diese Fehlmeldung erscheint:
Hier ist der PHP-Code:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="style.css" type="text/css" rel="stylesheet" />
</head>
<body>
<?php
$vorname=$_POST['vorname'];
$nachname=$_POST['nachname'];
$strasse_und_hausnummer=$_POST['strasse_und_hausnummer'];
$plz=$_POST['plz'];
$ort=$_POST['ort'];
$telefonnummer=$_POST['telefonnummer'];
$e_mail_adresse=$_POST['e_mail_adresse'];
$pizzasorten=$_POST['pizzasorten'];
$pizzaanzahl=$_POST['pizzaanzahl'];
$groesse_preis=$_POST['groesse_preis'];
$getraenk=$_POST['getraenk'];
$dip=$_POST['dip'];
$lieferoptionen=$_POST['lieferoptionen'];
$stammkundenkarte=$_POST['stammkundenkarte'];
$bemerkungen=$_POST['bemerkungen'];
$rabatt1=0.05;
$rabatt2=0.10;
$lieferkosten=4.99;
$zahlung=$groesse_preis*$pizzaanzahl;
$zahlungsbetrag1=$zahlung-($zahlung*$rabatt1);
$zahlungsbetrag2=$zahlung-($zahlung*$rabatt2);
$zahlungsbetrag3=$zahlung-($zahlung*$rabatt2)+$lieferkosten;
$zahlungsbetrag4=$zahlung-($zahlung*$rabatt1)+$lieferkosten;
$gewaehlter_dip = array ( "Knoblauchsauce", "BBQ-Sauce", "Cocktailsauce", "Kein Dip");
$gewaehlte_pizzen = array(
$pizzasorten [0] => "Margherita",
$pizzasorten [1] => "Pepperoni",
$pizzasorten [2] => "Funghi",
$pizzasorten [3] => "Quattro Formaggi",
$pizzasorten [4] => "Diavola",
$pizzasorten [5] => "Veggie Delight",
$pizzasorten [6] => "Eigenkreation" );
$gewaehlte_pizzen = explode(",", $pizzasorten);
foreach ($gewaehlte_pizzen as $gewaehlte_pizza) {
echo "<p>Sie haben die Pizzasorte " . $gewaehlte_pizza . " ausgewählt.</p>";}
foreach ($gewaehlter_dip as $gewaehlter_dip){
if ($dip != "Kein Dip")
{
echo "<p>Sie haben die $dip ausgewählt.</p>";
break;
}
}
if ($pizzaanzahl >= 3 AND $stammkundenkarte == "Nein")
{
echo "<p>Vielen Dank, $vorname $nachname, für Ihre Bestellung!<br />
Der Zahlungsbetrag beträgt: $zahlungsbetrag1 €(5% Rabatt wurde gewährt).<br />
Wir freuen uns darauf, Ihnen Ihre $pizzaanzahl Pizza/Pizzen und $getraenk zu liefern!</p>";}
elseif ($pizzaanzahl >= 3 AND $stammkundenkarte == "Ja")
{
echo "<p>Vielen Dank, $vorname $nachname, für Ihre Bestellung!<br />
Der Zahlungsbetrag beträgt: $zahlungsbetrag2 € (10% Rabatt wurde gewährt).<br />
Wir freuen uns darauf, Ihnen Ihre $pizzaanzahl Pizza/Pizzen und $getraenk zu liefern!</p>";}
elseif ($pizzaanzahl < 3 AND $stammkundenkarte == "Ja")
{
echo "<p>Vielen Dank, $vorname $nachname, für Ihre Bestellung!<br />
Der Zahlungsbetrag beträgt: $zahlungsbetrag3 € (10% Rabatt wurde gewährt inkl. der Lieferkosten).<br />
Wir freuen uns darauf, Ihnen Ihre $pizzaanzahl Pizza/Pizzen und $getraenk zu liefern!<br />
Wir schätzen Ihre Treue als Stammkunde!</p>";}
else {
echo "<p>Vielen Dank, $vorname $nachname, für Ihre Bestellung!<br />
Der Zahlungsbetrag beträgt: $zahlungsbetrag4 €(5% Rabatt wurde gewährt inkl. der Lieferkosten).<br />
Wir freuen uns darauf, Ihnen Ihre $pizzaanzahl Pizza/Pizzen und $getraenk zu liefern!</p>";}
?>
</body>
</html>
3 Antworten
Das ist ein altes Script was nicht php8+ fähig ist, daher kommt dieser und wahrscheinlich diverse andere Fehler. Post Variablen sind immer vom Typ String und wenn man damit rechnen möchte, muss man die seit php 8 in Zahlen Typen (int/double) umwandeln...
Das ist ein Laufzeitfehler.
Prüf mal nach, ob bei den Berechnungen wirklich nur numerische Werte in den Variablen stehen.
Dein Fehler sollte durch diese Variable ausgelöst werden:
$groesse_preis
Bzw. durch die späteren Berechnungen.
$zahlung=$groesse_preis*$pizzaanzahl;
Du versuchst deine Berechnungen mit einem String, statt mit einer Zahl durchzuführen.
Allgemein ist in deinem Code noch viel zu tun.
Um diesen Fehler zu lösen, würde ich zuerst die Eingaben in Float-Werte wandeln.
Vielleicht so:
function konvertiereZuFloatZahl($wert) {
// Ersetzen von Kommas durch Punkte, falls ein Komma vorhanden ist
if (strpos($wert, ',') !== false) {
$wert = str_replace(',', '.', $wert);
}
// Überprüfen, ob der Wert keine gültige Fließkommazahl ist
if (!is_numeric($wert)) {
// Wenn der Wert nicht numerisch ist, wird standardmäßig 0.00 zurückgegeben
return 0.00;
}
return floatval($wert);
}
$pizzaanzahl= (int) $_POST['pizzaanzahl'];
$groesse_preis = konvertiereZuFloatZahl($groesse_preis);
// Berechnung
$ergebnis = $pizzaanzahl * $groesse_preis;
Grob sollte es in diese Richtung gehen...