![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Johannes Müller Registriert seit: 15.09.2005 Ort: Königreich Flieden
Beiträge: 521
|
ich suche ne möglichkeit, relativ einfach sql-queries dynamisch zu erstellen, um eine suchfunktion mit variabler anzahl bedingungen verschiedener arten zu realisieren. Ich schreib einfach mal ein stück code, wie ich mir die anwendung vorstelle: java Code:
sql Code:
__________________ Weißt Bescheid - Scheiß wie weit |
| | |
| | Nach oben #2 |
| Erfahrener Benutzer Registriert seit: 23.11.2005 Ort: Stadtallendorf
Beiträge: 139
|
Also genau sowas hab ich die ganze letzte Woche gesucht. Ohne Erfolg. Ich schätze, dass man das selber schreiben muss, was aber nicht sehr schwer sein sollte.
__________________ Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag. |
| | |
| | Nach oben #3 |
| Johannes Müller Registriert seit: 15.09.2005 Ort: Königreich Flieden
Beiträge: 521
|
ne, net wirklich. Einziges problem is aber, dass man da keine prepared statements verwenden kann. aber das is bei so ner dynamik eh net möglich... also dann werd ich wohl mal was schreiben müssen... ich poste mein ergebnis dann aber auf jeden fall auch hier
__________________ Weißt Bescheid - Scheiß wie weit |
| | |
| | Nach oben #4 |
| Oliver O. Registriert seit: 17.08.2005
Beiträge: 426
|
Bisschen zeit gehabt: Code: import java.util.ArrayList;
public class SearchQuery {
private String quote = "\"";
private String table = "";
private String[] fields = null;
private ArrayList<String> connections = new ArrayList<String>();
private ArrayList<String> conditions = new ArrayList<String>();
public SearchQuery(String table){
this(table, new String[]{"*"});
}
public SearchQuery(String table, String[] fields){
this.table = table;
this.fields = fields;
}
public void addNameCondition(String key){
conditions.add("name = " + quote + key + quote);
connections.add("AND");
}
public void addCondition(String key, String value){
addCondition(key, value, true);
}
public void addCondition(String key, String value, boolean isTrue){
conditions.add(key + ((isTrue)?" = ":" != ") + quote + value + quote);
connections.add("AND");
}
public void addCondition(String key, String value, boolean connect,boolean isTrue){
conditions.add(key + ((isTrue)?" = ":" != ") + quote + value + quote);
connections.add((connect ? "AND" : "OR"));
}
public void addConditionAsNumber(String key, String value, boolean isTrue){
conditions.add(key + ((isTrue)?" = ":" != ") + value);
connections.add("AND");
}
public void addConditionAsNumber(String key, String value, boolean connect,boolean isTrue){
conditions.add(key + ((isTrue)?" = ":" != ") + value);
connections.add((connect ? "AND" : "OR"));
}
public String toSQL(){
String query = "SELECT ";
for (int i = 0; i < fields.length; i++) {
query += fields[i];
if(i < fields.length -1){
query += ", ";
}else{
query += " ";
}
}
query += "FROM " + table;
if(conditions.size() > 0){
query += " WHERE ";
for (int i = 0; i < conditions.size(); i++) {
if(i != 0){
query += connections.get(i) + " ";
}
query += conditions.get(i) + " ";
}
}
return query.trim();
}
public static void main(String[] args){
SearchQuery sq = new SearchQuery("test_table", new String[]{"name","date"});
sq.addNameCondition("test_name");
sq.addCondition("test_key1", "test_value1");
sq.addCondition("test_key2", "test_value2", false);
sq.addConditionAsNumber("test_key3", "3", false, false);
System.out.println(sq.toSQL());
}
}
Hab nur das mit der Condition-Klasse nicht übernommen, aber ich hoffe das macht nichts. |
| | |
| | Nach oben #5 |
| Johannes Müller Registriert seit: 15.09.2005 Ort: Königreich Flieden
Beiträge: 521
|
ich hab jetzt auch was geproggt, is aber noch aufm andern pc ohne inet mein system is aber um einiges umfangreicher. Momentan unterstützt es:
ich werd auf jeden fall noch die JOINS fertig machen und vllt. auch noch SUBQUERIES, aber mal sehen... Heute abend oder erst Montag lad ichs dann mal hoch.
__________________ Weißt Bescheid - Scheiß wie weit |
| | |
| | Nach oben #6 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.480
|
Hallo, das hier passt zwar jetzt nicht ganz zur eigentlichen Frage, aber ich hau es hier trotzdem mal rein. Ich bin über das Zend Framework darauf gestoßen, welches die Möglichkeiten von Lucene auf PHP portiert. Vielleicht kannst du ja da mal reinschauen und dir einige Ansätze "abschauen" bzw. wenn es ein größeres Projekt ist einfach Lucene nutzen?! Vielleicht hilft es ja. Grüße, Ben. |
| | |
| | Nach oben #7 | |
| Dejan Spasic Registriert seit: 05.01.2006 Ort: Düsseldorf
Beiträge: 169
| Zitat:
das Zend Framework hingewiesen wird, dann wohl eher auf Zend_Db_Select. Oder habe ich jetzt was missverstanden | |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Komischer SQL Fehler | kampfgnom | Datenbanken | 8 | 05.06.2007 16:59 |
| Abkürzung des Wochentags in SQL, vgl. strftime in PHP | Ben | Datenbanken | 4 | 12.04.2007 16:51 |
| Zugriff auf Wert des vorhergenden Datensatzes in einer SQL Abfrage | Jay | Datenbanken | 5 | 17.07.2006 15:25 |
| sql query where .... browse array | juergreh | PHP-Programmierung | 6 | 13.05.2006 09:49 |
| SQL Dumper bei all.inkl.com | Jan | Gesuche | 10 | 15.03.2006 19:53 |