PHP - Regelmäßige IF-Anweisung soll Variable überschreiben

  • Hallo Leute!

    Und zwar dreht es sich um einen "Preisrechner", den ich mit einer If-Bedigung zu lösen gedachte. Es gibt nämlich leider keine Logik, das heißt ich muss die rund 150 Kombinationsmöglichkeiten manuell per If-Anweisung eintragen, damit hab ich mich schon abgefunden ^^

    jetzt ist es nur so, dass ich nicht weiß warum die $preis variable nicht überschrieben wird ... als standartwert ist 0,00 angegeben..

    $preis = "0,00";

    $produkt = $_POST['kat'];
    $produkt2 = $_POST['kat2'];
    $produkt3 = $_POST['kat3'];

    $stk = $_POST['stk'];
    $stk2 = $_POST['stk2'];
    $stk3 = $_POST['stk3'];

    $motive = $_POST['motive'];
    $motive2 = $_POST['motive2'];
    $motive3 = $_POST['motive3'];

    if ( ($produkt == "Postkarte Klassisch") && ($stk == "10") && ($motive == "1") ) {
    unset($preis);
    $preis = "39,90";
    }

    so müsste das doch eigentlich funktionieren oder?

    könnte das evtl daran liegen, das ich ihm die anweisung erst geben die if schleife zu durchlaufen sobald ein wert in einer meiner 3 auswahllisten geändert wird?

    hoffe ihr könnt mir helfen 8| blödes php -.- ^^

  • achso, wichtig dazu zu sagen ist noch, das es auf einer seite geschehen soll automatisch, sobald ein produkt und eine stückzahl und eine motivanzahl ausgewählt ist, soll der "errechnete" preis erscheinen, bzw sobald die bestimmte bedingung erfüllt ist, soll der dazu passende presi ausgeworfen werden ... geht das überhaupt ohne button oder sowas?
    oder muss ich echt nen kleines aktualisierungszeichen dahin machen damit der den preis errechnet?

  • Tja, wie soll ich's sagen?! Ich sag' mal: hä?!?!?!

    Richtig debuggen
    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL); und ini_set("display_errors", true);
    3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
    5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

  • unset($preis); kannst du dir sparen, wenn du danach nen neuen Wert zuweist wird der alte eh überschrieben.
    Hast du mal echo-Ausgaben in deine if-Bedingungen (if-Schleifen gibt es nicht) gebaut, um zu sehen ob da überhaupt reingesprungen wird? Falls nicht kann natürlich der Preis auch nicht überschrieben werden, und das ist eigentlich die einzige mögliche Fehlerquelle die ich da spontan sehe.

    achso, wichtig dazu zu sagen ist noch, das es auf einer seite geschehen soll automatisch, sobald ein produkt und eine stückzahl und eine motivanzahl ausgewählt ist, soll der "errechnete" preis erscheinen, bzw sobald die bestimmte bedingung erfüllt ist, soll der dazu passende presi ausgeworfen werden ... geht das überhaupt ohne button oder sowas?
    oder muss ich echt nen kleines aktualisierungszeichen dahin machen damit der den preis errechnet?

    Das geht mit Ajax.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Es gibt nämlich leider keine Logik, das heißt ich muss die rund 150 Kombinationsmöglichkeiten manuell per If-Anweisung eintragen, damit hab ich mich schon abgefunden ^^

    Warum packst du die Zuordnung Produkt -> Stückpreis nicht in eine Datenbank? Oder schlimmstenfalls in ein assoziatives Array?

    Information will frei verfügbar sein.

    Don't eat unpeeled hedgehogs.