Re: Anfängerfrage mehrere Bedingungen
Posted by:
Tim P
Date: January 23, 2012 01:42PM
Hallo Thomas,
also versuche ich es nocheinmal zu erklären, ich könnte es auch aufmalen bzw habe ich schon im allerersten Post. Aber ich hole gerne aus:
Über ein Formular werden Daten an die DB übergeben. Die "schalter" sind ganz einfach checkboxen. Wenn ein Haken gesetzt ist wird ein ON in die entsprechende Spalte geschrieben. Es werden auch noch etliche andere Spalten gefüllt, aber das tut alles nichts zur Sache. Im Endeffekt ist es eigentlich vollkommen EGAL was in den "Schalter"-Spalten drinne steht, man könnte das Beispiel auch NOCH weiter vereinfachen.
Und entgegensetzt Deinem Beispiel werden nicht in EINE Schalter Spalte Werte eingetragen sondern in mehrere Spalten.
Jede dieser Spalten hat entweder ein ON drin stehen oder ein OFF bzw AN oder AUS entsprechend der Tatsache ob der Haken gesetzt wurde oder nicht.
Es wird NUR der letzte Eintrag geprüft. Vielleicht wird es durch dieses hier deutlicher, denn DAS funktioniert ja grundsätzlich:
UPDATE tabelle SET betrag=if(schalter1='on',betrag+15,betrag) ORDER BY id DESC LIMIT 1;
Das heisst: wenn der betrag in der Spalte den Wert 10 hatte, der wert der spalte schalter1 on hat, dann soll er den wert 15 hinzuaddieren ansonsten bleibt der betrag gleich.
EIGENTLICH ganz einfach. DAS hier ist das worum es mir geht!
Und nun komme ich WIEDER zu meiner anfänglichen Frage, diesmal einwenig erweitert:
Eine Aktualisierung des Betrages in Abhängigkeit von EINEM Wert ist kein Problem. Ich brauche aber eine Aktualisierung des Betrages in Abhängikeit von UNTERSCHIEDLICHEN "Schalter" welche unterschiedliche Werte, in diesem Fall als Addition, zum Betrag haben.
Noch ein Beispiel:
Ein select betrag,schalter1,schalter2,schalter3 from tabelle liefert zum Beispiel: betrag schalter1 schalter2 schalter3
10.50 an an aus
wenn schalter 1 an, dann zum betrag 5.00 addieren, wenn schalter2 an dann 4.60 zum betrag addiern, wenn schalter3 an 16.00 zum betrag addieren
In diesem Fall sollte das der Wert von Betrag hinterher 20.60 ergeben.
Nun verständlich?
Grüße Tim