切换指令中的PHP索引错误

时间:2017-04-03 17:38:02

标签: php

这是一个初学者代码结构问题:

解决这个问题我想尝试只做两个文件(一个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>

3 个答案:

答案 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)

  1. 如果您需要通过post方法访问php中的值: 将 if(isset($_GET['gesendet'])) 更改为 if(isset($_POST['gesendet']))
  2. 如果您需要通过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'];
    
  3. 希望这可以帮助你。