这是一个初学者代码结构问题:
解决这个问题我想尝试只做两个文件(一个HTML和一个PHP)来清理它。
这段代码应该采用价格,数量,税收百分比和销售数字,同时在FORM中选择案例陈述值。相反,在我为FORM选择数字后,我得到一些关于索引的错误消息。索引是通过我输入表单设置的,所以我不知道我必须改变什么,所以代码运行正常。
如果总和低于90,则应该启用。我如何订购代码以使其按预期工作?我面向一个教程。
<html>
<head>
<title>Circe</title>
</head>
<body>
<h4>Circe: Eingabeformular</h4>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>"method="get">
Artikelpreis
<input type="text" name="warenpreis" size="10"> € <br />
Stückzahl
<input type="text" name="anzahl" size="10"> Stck <br />
Mehrwehrsteuer
<select name="msteuer" size="2">
<option value="7" >7%</option>
<option value="19" >19%</option>
</select> <br />
<select name="umsatz" size="10">
<option value="1000" >1000</option>
<option value="2000" >2000</option>
<option value="3000" >3000</option>
<option value="5000" >5000</option>
<option value="0" >0</option>
</select> <br />
<input type="submit" name="gesendet" value="Berechnen"> <br />
</form>
<?php
if(isset($_GET['gesendet'])){
// Variablen deklararien und Werte zuweisen.
$artikel = $_POST['warenpreis'];
$anzahl = $_POST['anzahl'];
$msteuer = $_POST['msteuer']/100;
$umsatzgrenze = $_POST['umsatz'];
$umsatzrabbat = 0;
$summe = 0;
$nettosumme = 0;
$mwsteuerpreis = 0;
$vkosten = 5.95;
$rabbat = 0;
$prozent = 0;
$lieferkostenpreis = 0;
switch($umsatzgrenze){
case "1000":
$umsatzrabbat = 0.02;
break;
case "2000":
$umsatzrabbat = 0.03;
break;
case "3000":
$umsatzrabbat = 0.03;
break;
case "5000":
$umsatzrabbat = 0.05;
break;
case "0":
$umsatzrabbat = 0;
break;
default:
echo "Sie haben keinen Umsatz ausgewählt!<br>";
}
$nettosumme = ($artikel * $anzahl);
$rabatt = ($nettosumme * $umsatzrabatt);
$mwsteuerpreis = ($nettosumme - $rabatt) * $msteuer;
$summe = $nettosumme + $mwsteuerpreis;
$prozent = $umsatzrabbat * 100;
if ($summe < 99) {
$lieferkostenpreis = $summe + $vkosten;
echo "Sie bekommen: " . $prozent . " %<br>";
echo "Die Gesamtkosten betragen: " . $lieferkostenpreis . " €<br>";
echo "Die Lieferpauschale beträgt unter einem Bestellwert von 99€: " . $vkosten . " €<br>";
echo "Die Artikel kosten netto: " . $nettosumme . " €<br>";
echo "Die Mehrwertsteuersumme beträgt: " . $mwsteuerpreis . " €<br>";
}
else {
echo "Sie bekommen: " . $prozent . " %<br>";
echo "Die Gesamtkosten betragen: " . $lieferkostenpreis . " €<br>";
echo "Die Lieferpauschale beträgt unter einem Bestellwert von 99€: " . $vkosten . " €<br>";
echo "Die Artikel kosten netto: " . $nettosumme . " €<br>";
echo "Die Mehrwertsteuersumme beträgt: " . $mwsteuerpreis . " €<br>";
}
}
?>
</body>
</html>
答案 0 :(得分:2)
我不知道你得到的错误是什么让我觉得PHP正在说“Sie habenkeinenUmsatzausgewählt!”。
如果我是对的,那么您需要正确检查switch
语句中的值。如果要解决此问题,只需在var_dump
变量上使用$umsatzgrenze
函数并检查其类型。如果是INT,请删除交换机中数字周围的引号。
如果仍然出现问题,请尝试使用print_r
数组上的$_POST
函数检查是否需要所有变量设置得当。
我希望这就是我们正在寻找的东西!
答案 1 :(得分:1)
1)您的表单方法为get method
,但您的访问价值为post method
,因此它会引发undefined index
错误
$artikel = $_GET['warenpreis'];
$anzahl = $_GET['anzahl'];
$msteuer = $_GET['msteuer']/100;
$umsatzgrenze = $_GET['umsatz'];
2)$rabatt = ($nettosumme * $umsatzrabatt);
在这一行中没有像$umsatzrabatt
那样的变量我认为这是错误的。它应该是$umsatzrabbat
3)首先检查所有字段是否为空,然后进行计算。
答案 2 :(得分:1)
post
方法访问php中的值:
将 if(isset($_GET['gesendet']))
更改为 if(isset($_POST['gesendet']))
如果您需要通过get
方法访问php中的值:
改变:
$artikel = $_POST['warenpreis'];
$anzahl = $_POST['anzahl'];
$msteuer = $_POST['msteuer']/100;
$umsatzgrenze = $_POST['umsatz'];
要:
$artikel = $_GET['warenpreis'];
$anzahl = $_GET['anzahl'];
$msteuer = $_GET['msteuer']/100;
$umsatzgrenze = $_GET['umsatz'];
希望这可以帮助你。