• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

mySQL und mehrere Suchkriterien

clearer

New member
Hi,
es geht um ein Formular mit mehreren Suchkriterien, wie z.B. Preis, Volumen, etc. Der User kann jeweils von-bis-Eingaben machen.

Das ich nicht zu jedem Punkt eine entsprechende mySQL Abfrage in Verbindung mit einer if-Abfrage machen möchte, habe ich mehrere BETWEENs in eine Query gepackt. Das funktioniert aber nicht! Ich war im Netz unterwegs und habe eine Variante mit Klammern gefunden. Das ging aber auch nur mit einen BETWEEN in der query.

Wie wird das gelöst! Der Ansatz mit if oder switch würde zwar funktionieren, aber das kann´s doch nicht sein, oder!?

PHP:
$objekte = $get_objekte -> db_ausgabe("SELECT * FROM `".$table_1."` WHERE `aktiv` = 1 AND `kategorie` LIKE '".$_POST['kategorie']."' AND (`preislage` BETWEEN ".$_POST['fromprice']." AND ".$_POST['toprice'].") ORDER BY `datum` ASC");

Servus c.
 
Hallo Zeitgeist,

ich frage mal so:
1) Wie ist die Syntax für mehrere BETWEENs in einer Abfrage?
2) Gibt es eine elegantere Lösung, als für jedes Formularfeld (z.B. Preis) eine eigene Query zu erstellen?

Beispiel:
PHP:
if (empty($_POST['price']) ) {
    // query 1
}
else
    // query 2

c.
 
Code:
SELECT * FROM table WHERE spalte1 BETWEEN x AND y AND spalte2 BETWEEN v AND w

Lass den Benutzer selber SQL schreiben. Du kannst prinzipiell Datenbankbenutzer anlegen und diesen bestimmte Rechte zuweisen (SELECT / DELETE / UPDATE / ALTER / DROP / CREATE ...). Ob dir das dein Webhoster erlaubt ist natürlich ne andere Frage.
 
Bei mir läuft es nur, wenn ich sämtliche BETWEEN-Abfragen in eine Klammer setze...

Die meisten User kennen sich doch gar nicht aus.
Deswegen erstelle ich doch möglichst einfach zu bedienende Menus.

Vielen Dank für die Hilfe.
 
1) Wie ist die Syntax für mehrere BETWEENs in einer Abfrage?
Einfach immer schön schauen, dass das "AND" des BETWEEN-Operators sich klar abgrenzt von den verknüpfenden "AND"s der WHERE-Bedingungen. Aber ich denke die Klammern um BETWEEN können auch weggelassen werden, das bedarf aber vorgängig eines Tests.
2) Gibt es eine elegantere Lösung, als für jedes Formularfeld (z.B. Preis) eine eigene Query zu erstellen?
Versteh ich gerade nicht. Wieso für jedes Formularfeld einen eigenen Query?
 
Zurück
Oben