Berechnung von Grundstückpreisen

Kenney

Mitglied
Erstellen Sie ein PHP-Skript zur Berechnung von Grundstückspreisen. Es soll folgende Funktionen bieten:
- Länge und Breite eines Grundstücks in Metern einlesen.
- Preis pro Quadratmeter einlesen,
- den Preis des Grundstücks berechnen und ausgaben,
- je nach Auswahl zwischen 3 und 7 % Provision aufschlagen und den Preis ausgeben,
- je nach Auswahl 19 % Mehrwertsteuer aufschlagen und den Preis ausgeben.

Hier ist mein Entwurf:
PHP:
<!doctype html>
<html lang="de">
<head>
  <meta charset="utf-8">
  <title>Berechnung des Grundstückes</title>
  <?php
    error_reporting(-1);
    ini_set("display_errors", 1);
    ?>
  <?php
  include("E4_Grundstueck.incl.php");
  ?>
</head>
<body>
  <form method="post">
  <h2>Grundstückspreise</h2>
  <?php
    if(isset($_POST["breite"]))
      {
        $breite = htmlspecialchars($_POST["breite"], ENT_QUOTES);
        $laenge = htmlspecialchars($_POST["Laenge"], ENT_QUOTES);
        $preisqm = htmlspecialchars($_POST["preisqm"], ENT_QUOTES);
        $proSatz = $_POST["proSatz"];
        $cbmwst = $_POST['cbmwst'];
        echo "<hr>";
        echo "$cbmwst<br>";
        print_r($cbmwst);
        echo "<hr>";
        var_dump($cbmwst);
        echo "<hr>";
        $qm = multiplikation($breite, $laenge);
        echo "Quadrat $qm<br>";

        $nettPr = multiplikation($preisqm, $qm);
        echo "Nettopreis $nettPr<br>";

        $proNett = nettPrmPro($proSatz, $nettPr);
        echo "Nettopreis mit Provistion".($proNett)."<br>";

        $brPr = nettPrmMwst($cbmwst, $proNett);
        echo "Bruttopreis $brPr<br>";

      echo "<p>Breite: $breite m</p>";
      echo "<p> Länge: $laenge m</p>";
      echo "<p> Preis pro qm: $preisqm €</p>";
      echo "<p>Nettopreis: $nettPr €</p>";
      echo "<p>Nettopreis mit Provision: $proNett €</p>";
      echo "<p>Bruttopreis: $brPr €</p>";
    }
  ?>
    <fieldset>
      <label for="breite">Breite: </label>
      <input type="text" id="breite" name="breite" placeholder="Breite?">
      <br>
      <label for="laenge ">Länge: </label>
      <input type="text" id="laenge" name="Laenge" required placeholder="Länge?">
      <br>
      <label for="preisqm: ">Preis pro m²: </label>
      <input type="text" id="preisqm" name="preisqm" required placeholder="Preis / m²?">
      <br>
      <label for="proSatz">Provisionssatz: </label>
        <select id="proSatz" name="proSatz">
          <option value="3" <?php if("3" == 3)
                                    {
                                      echo " selected";
                                    }?>> 3 </option>
          <option value="4" <?php if("4" == 4)
                                    {
                                      echo " selected";
                                    }?>> 4 </option>
          <option value="5" <?php if("5" == 5)
                                    {
                                      echo " selected";
                                    }?>> 5 </option>
          <option value="6" <?php if("6" == 6)
                                    {
                                      echo " selected";
                                    }?>> 6 </option>
          <option value="7" <?php if("7" == 7)
                                    {
                                      echo " selected";
                                    }?>> 7 </option>
        </select>
      <br>
      <input type="checkbox" id="cbmwst" name="cbmwst[]" value="19" <?php if(empty($_POST))
                                                                          {
                                                                            var_dump($_POST);
                                                                          }?>>
      <label for="MwSt">MwSt</label>
    </fieldset>
    <p>
    <input type="submit" value="Berechnen">
    </p>
  </form>
</body>
</html>

Ich bin natürlich wieder für eure hilfreichen Kommentare dankbar.
 
Zuletzt bearbeitet von einem Moderator:
Lösung
B
Wenn du das
PHP:
    <?php
        $proSatzArr = [3, 4, 5, 6, 7];
        foreach($proSatzArr As $proS)
        {
            $ausgabe = "<option value='$proS'";
            if(isset($_POST["proSatz"]))
            {
               if($_POST["proSatz"] == $proS)
               {
                    $ausgabe .= " selected";
               }
           }
           $ausgabe .= ">$proS</option>\n";
           echo $ausgabe;
       }
     ?>
änderst in
PHP:
    <?php
        $proSatzArr = [3, 4, 5, 6, 7];
        
        $proSatz = isset($_POST["proSatz"]) ? $_POST["proSatz"] : "";
        
        foreach($proSatzArr As $proS)
        {
            $ausgabe = "<option value='$proS'";
        
            if ($proSatz == $proS)...
Wenn du das
PHP:
    <?php
        $proSatzArr = [3, 4, 5, 6, 7];
        foreach($proSatzArr As $proS)
        {
            $ausgabe = "<option value='$proS'";
            if(isset($_POST["proSatz"]))
            {
               if($_POST["proSatz"] == $proS)
               {
                    $ausgabe .= " selected";
               }
           }
           $ausgabe .= ">$proS</option>\n";
           echo $ausgabe;
       }
     ?>
änderst in
PHP:
    <?php
        $proSatzArr = [3, 4, 5, 6, 7];
       
        $proSatz = isset($_POST["proSatz"]) ? $_POST["proSatz"] : "";
       
        foreach($proSatzArr As $proS)
        {
            $ausgabe = "<option value='$proS'";
       
            if ($proSatz == $proS)
                    $ausgabe .= " selected";

           $ausgabe .= ">$proS</option>\n";

           echo $ausgabe;
       }
     ?>
dann kannst du dir das isset in der Schleife sparen
Hallo m.scatello,
vielen Dank für deinen Hinweis. Das Ding mit den "isset´s" hat einiges verfälscht, soviel ist wohl auch nicht gut.
Ich fande es auch sehr seltsam, dass es zwei, fünf mal gut funktioniert und dann wirft er Fehlermeldungen ohne Ende raus.
Ich hoffe ich komme noch dahinter, wie man es besser aufbaut.
 
Ich bin darauf hingewiesen, dass die Steuer nicht richtig ist. Deshalb muss ich leider nochmal was ändern, ich habe nicht darauf geachtet wie hoch die Steuer ist und habe nur gesehen, dass Bewegung in den Zahlenwert ist. Deshalb hier die abgeänderte, richtige, Version des Grundstückpreisberechnung.

Code:
<!doctype html>

<html lang="de">

<head>

  <meta charset="utf-8">

  <title>Berechnung des Grundstückes</title>

  <?php

    error_reporting(-1);

    ini_set("display_errors", 1);

    ?>

  <?php

  include("E4_Grundstueck.incl.php");

  ?>

</head>

<body>

<h2>Grundstückspreise</h2>

  <?php

    if(isset($_POST['breite']))

    {

    //Felder vorbelegen

        $breite = ($_POST['breite']);

        $laenge = ($_POST['laenge']);

        $preisqm = ($_POST['preisqm']);

        $proSatz = ($_POST['proSatz']);

        $cbmwst = 0;

    if(isset($_POST['cbmwst']))
        {
            $cbmwst = $_POST['cbmwst'];
        }

    

    //Berechnung

        $qm = multiplikation($breite, $laenge);

        $nettPr = multiplikation($preisqm, $qm);

        $proNett = nettPrmPro($proSatz, $nettPr);

        $brPr = nettPrmMwst($cbmwst, $proNett);

    

    //Ausgabe

      echo "<p>Breite: $breite m<br>

                Länge: $laenge m<br>

                Preis pro qm: $preisqm €<br>

                Nettopreis: $nettPr €<br>

                Nettopreis mit Provision: $proNett €<br>

                Bruttopreis: $brPr €</p>";

    }

    ?>

<form method = "post">

    <fieldset>

      <label for="breite">Breite: </label>

      <input type="text" id="breite" name="breite" required placeholder="Breite?">

      <br>

      <label for="laenge ">Länge: </label>

      <input type="text" id="laenge" name="laenge" required placeholder="Länge?">

      <br>

      <label for="preisqm: ">Preis pro m²: </label>

      <input type="text" id="preisqm" name="preisqm" required placeholder="Preis / m²?">

      <br>

      <label for="proSatz">Provisionssatz: </label>

        <select id="proSatz" name="proSatz">                    

        <?php

        $proSatzArr = [3, 4, 5, 6, 7];

                foreach($proSatzArr As $proS)

                    {

                    $ausgabe = "<option value='$proS'";

                    if(isset($_POST["proSatz"]))

                    {

                        if($_POST["proSatz"] == $proS)

                        {

                            $ausgabe .= " selected";

                        }

                    }

                    $ausgabe .= ">$proS</option>\n";

                    echo $ausgabe;

                    }

        ?>

        </select>

      <br>

      <input type="checkbox" id="cbmwst" name="cbmwst" value="19">

      <label for="cbmwst">MwSt</label>

    </fieldset>

    <p>

    <input type="submit" value="Berechnen">

    </p>

  </form>

</body>

</html>
 
Schön, dass du

ignorierst. :mad:

Warum fragst du in einem Forum, wenn dich die Antworten nur halb interessieren? Damit erhöhst du nicht gerade die Bereitschaft dir weiterhin zu helfen. :(
Hallo m.scatello,
ich hoffe nicht, dass ich dieses getan habe.

Die einzige Schleife, ist bei der Provision 3 bis 7 gewesen und da ist die isset Schleife noch. Ich habe das isset der cbmwst (Mehrwertsteuer) jetzt auch in einer isset Schleife gesetzt, weil dieses auf einen Hinweis hin passierte.
 
Zurück