Berechnung von Grundstückpreisen

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Kenney

Mitglied
Hat das einen besonderen Grund, warum du die Fehlermeldung verstümmmelt postest?

Und was versprichst du dir von
PHP:
if(empty($_POST["proSatz"]))
{
     $proS;
}
Hallo m.scatello,
im ersten Teil, verweißt er auf eine andere Datei, die die Berechnungen durchführt und auf die Zeile 31 in der Hauptdatei, wo die eig. Funktion steht.

Ich vermute, weil etwas nicht ausgewählt wurde, kann er etwas nicht berechnen.

Deshalb jetzt zum zweiten Teil, damit wollte ich erreichen, das er einen Wert bekommt, mit dem er rechnen könnte.
 

m.scatello

Erfahrenes Mitglied
Würdest bitte einfach die komplette Fehlermeldung von PHP posten.

Du glaubst wirklich dass hiermit ein Wert zugewiesen wird?
PHP:
$proS;
 

Kenney

Mitglied
Die kpl. Fehlermeldung
Fatal error: Uncaught TypeError: Unsupported operand types: string / int in
\xampp\htdocs\Projekte\E4_Grundstueck.incl.php: 13 Stack trace: #0
\xampp\htdocs\Projekte\E4_Grundstueck.php(31): nettPrmPro('proSatz', 16200)#1 {main} thrown in \xampp\htdocs\Projekte\E4_Grundstueck.incl.php on line 13


Ich glaube, dass er ein Wert übergeben kann.
 

m.scatello

Erfahrenes Mitglied
Fatal error: Uncaught TypeError: Unsupported operand types: string / int in
\xampp\htdocs\Projekte\E4_Grundstueck.incl.php
Jetzt stelle dir mal vor, wir würden das Script E4_Grundstueck.incl.php kennen. :(

Du kannst noch nicht mal Fehlermeldungen richtig lesen. Und wenn du dir den Stack-Trace ansiehst, dann sollte dir auffallen, dass die Funktion nettPrmPro einen String übergeben bekommt, mit dem wohl in der Funktion gerechnet wird.

Auf "Richtig debuggen" habe ich dich schon mal hingewiesen, oder?

Und wie ein Select richtig auszusehen hat, kannst du hier mal nachlesen: HTML select tag
 
Zuletzt bearbeitet:

Zvoni

Erfahrenes Mitglied
Ohne php/JavaScript zu kennen, tippe ich bei seiner Fehlermeldung darauf, dass er versucht, einen String mit einem Integer zu verknüpfen mittels einem Operanden („+“-Zeichen?), ohne vorher den Int in einen String umzuwandeln (oder den String in Int bei math. Berechnungen)

kenne ich aus Pascal
 

Kenney

Mitglied
Jetzt stelle dir mal vor, wir würden das Script E4_Grundstueck.incl.php kennen. :(

Du kannst noch nicht mal Fehlermeldungen richtig lesen. Und wenn du dir den Stack-Trace ansiehst, dann sollte dir auffallen, dass die Funktion nettPrmPro einen String übergeben bekommt, mit dem wohl in der Funktion gerechnet wird.

Auf "Richtig debuggen" habe ich dich schon mal hingewiesen, oder?

Und wie ein Select richtig auszusehen hat, kannst du hier mal nachlesen: HTML select tag
Klar, ist mir um Gefecht unter gegangen. :eek:

Ich könnte leider feststellen, dass mit der Übermittlung des Types, was falsch lief, ich mir diese nicht erklären kann.

Ja, RICHTIG, deshalb bin ich bei Punkt 8., deiner Liste, und frage hier nach.

Danke für den Hinweis der HTML, select tag. Ist geändert worden.
 

Kenney

Mitglied
Hallo,
jetzt funktioniert alles wie es soll, der Erstaufruf, die Eingabe, die Berechnungen und die Ausgabe.

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 = (isset($_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>
 

m.scatello

Erfahrenes Mitglied
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
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Neue Beiträge