Willkommen im TP-Hilfe-Forum! Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst.
Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team.
Ich hab ein Formular (im Anhang zu sehen) mit dem ich eine Datenbank folgender Struktur durchsuchen möchte:
Tabelle Objekte:
id
preisklasse
region
typ
vermietung
schlafzimmer
badezimmer
zimmer
toiletten
garten
pool
flaeche
wohnflaeche
garage
referenznr
regdate
Das ganze funktioniert auch, solange ich im Formular nur eine Checkbox auswähle...sonst aber nicht - wenn ich zB. alle auswähle erhalte ich 64 Suchergebnisse, obwohl nur 4 Objekte in der DB eingetragen sind.
Der generierte Query sieht dann zB. so aus:
Zitat:
select o.preisklasse, o.region, o.typ, o.vermietung, o.schlafzimmer, o.badezimmer, o.zimmer, o.toiletten, o.garten, o.pool, o.flaeche, o.wohnflaeche, o.garage, o.referenznr, o.regdate, d.name, d.con from objekte o, description d where o.id=d.objekt_id and d.lang='de' and o.region='nw' or o.region='no' or o.region='sw' or o.region='so' and o.typ='villa' or o.typ='apartement' or o.typ='finca' or o.typ='haus' or o.typ='grundstueck' or o.typ='gewerbeobjekt' and o.preisklasse='1' or o.preisklasse='2' or o.preisklasse='3' or o.preisklasse='4' or o.preisklasse='5' and o.vermietung='1'
Und ich hab eigentlich keinen Plan wieso mir SQL dann 64 Ergebnisse (alles 4x und in allen Sprachen) liefert...
Ich hoffe sehr dass ihr mir helfen könnt, bin nämlich nicht gerade (wie man sieht ) der SQL-Meister...
Danke schonmal im Voraus
GodfatherDeluxe
__________________ Java != JavaScript
"He who makes a beast of himself gets rid of the pain of being a man."
Dr. Johnson
Das liegt eher daran, daß die IF-Abfragen nicht den gewünschten Effekt liefern.
Alle Avriabeln die im Script vorkommen, vergleichst du mit true, zB.
$preiskl_4 == true
Aber woher bekommt die Variable den Wert true?
Normalerweise wird true nur von einer Funktion gesetzt.
Kann mich jetzt aber auch irren, dann würde die Beduingung sofort erfüllt sein, sobald die Variable gesertzt wurde, und daß tust du am Anfang des Scriptes..
Naja, die If-Abfragen liefern ja eben schon den gewünschten Effekt - der Query der generiert wird sieht ja genauso aus wie ich mir das vorstelle - er liefert nur in den meisten Fällen nicht das gewünschte Ergebnis, also wenn ich eben zB. alle Checkboxen anklicke, wird mir folgender Query generiert:
Zitat:
select o.preisklasse, o.region, o.typ, o.vermietung, o.schlafzimmer, o.badezimmer, o.zimmer, o.toiletten, o.garten, o.pool, o.flaeche, o.wohnflaeche, o.garage, o.referenznr, o.regdate, d.name, d.con from objekte o, description d where o.id=d.objekt_id and d.lang='de' and o.region='nw' or o.region='no' or o.region='sw' or o.region='so' and o.typ='villa' or o.typ='apartement' or o.typ='finca' or o.typ='haus' or o.typ='grundstueck' or o.typ='gewerbeobjekt' and o.preisklasse='1' or o.preisklasse='2' or o.preisklasse='3' or o.preisklasse='4' or o.preisklasse='5' and o.vermietung='1'
Meinem Verständnis nach, sollte diese Abfrage ja alle Datensätze liefern auf die zB. d.lang='de' zutrifft - wieso bekomme ich dann auch die Datensätze für alle anderen Sprachen?!
oder ein andres Beispiel:
Diesmal hab ich alle Regionen ausgewählt und als Objekt-Typ 'Villa' und keine Preisklasse:
Zitat:
select o.preisklasse, o.region, o.typ, o.vermietung, o.schlafzimmer, o.badezimmer, o.zimmer, o.toiletten, o.garten, o.pool, o.flaeche, o.wohnflaeche, o.garage, o.referenznr, o.regdate, d.name, d.con from objekte o, description d where o.id=d.objekt_id and d.lang='de' and o.region='nw' or o.region='no' or o.region='sw' or o.region='so' and o.typ='villa'
Das sollte mir doch alle Datensätze liefern, bei denen die Sprache 'de', die Region entweder 'nw', 'no', 'so' oder 'sw' und der typ 'villa' ist, wobei die preisklassen unberücksichtigt bleiben - oder nicht?!
Dennoch bekomme ich 49 Ergebnisse (alle Sprachen und jeder Datensatz 4x)?!
P.S.: Habe bis jetzt immer Checkboxen mit true abgefragt und keine Probleme damit gehabt, nichtsdestotrotz habe ich mal $nw ausgegeben, wenn es ausgewählt wurde enthält es den wert 'on' ansonsten wird nix ausgegeben - Ich hab also jetzt auch die Überprüfung von 'true' auf 'on' geändert, was aber keinen Effekt hat...
Ich bin echt verzweifelt, wenn ich das nicht bis morgen hinkriege, muss ich das mit select-feldern realisieren (da das morgen fertig sein muss) und das wäre nicht grade die eleganteste Lösung (da man sich dann eben auch nicht seine Kriterien individuell zusammenstellen kann) - ich hoffe ihr versteht mein problem...
Ich bin für jede Hilfe dankbar und hoffe ihr könnt mir helfen
ein verzweifelter GodfatherDeluxe
__________________ Java != JavaScript
"He who makes a beast of himself gets rid of the pain of being a man."
Dr. Johnson
Mmh. Vieleicht liegt es an der JOIN Verbindung in dem Query.
So ein ähnliches Problem hatte ich auch mal, das lag aber daran, daß die WHERE on ON Bedingungen nicht eindeutig genug waren..
Du hattest recht, die vielen and und or's hat er nicht gepackt, ich hab das ganze jetzt mit Klammern verdeutlicht und es funktioniert perfekt Vielen vielen Dank für deine Hilfe!
-->erledigt
ein glücklicher GodfatherDeluxe
__________________ Java != JavaScript
"He who makes a beast of himself gets rid of the pain of being a man."
Dr. Johnson