Views: SQL-Abfrage manipulieren

am 14.04.2012 - 00:34 Uhr in
Hallo
User können auf meiner Seite Ereignisse melden, dabei geben sie unter anderem eine PLZ an. Kann ich auch alles schick per view ausgeben lassen. Nun will ich es realisieren, das sich User Ereignisse aus einem bestimmten PLZ-bereich anzeigen lassen, heißt:
1. User gibt in einem Textfeld die gewünschte PLZ ein
2. Der User wählt einen Umkreis: 10,50 oder 100 km
3. Der User soll alle Ereignisse, dessen PLZ im Umkreis der von ihm eingegeben PLZ stattfand, angezeitg bekommen
WIe schaffe ich es nun aber, das mein bzw. ein View nur noch diese Wert ausgibt?
Meine Frage betrifft den View, die PLZ's aus dem Umkreis ermittle ich aus der OpenGopDB.
Doch wie kann man die SQL-Abfrage, die beim Aufrufen des Views abgesetzt wird, manipulieren,sodass er nur noch Ereignisse einer bestimmten PLT ausgibt?
DAnke im vorraus
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo, den SQL direkt zu
am 14.04.2012 - 13:07 Uhr
Hallo,
den SQL direkt zu bearbeiten ist nicht so recht empfehlenswert. Da Du ja die Postleitzahlen schon ermittelt hast, geht es aber auch problemlos, die Ansicht direkt im Code mit der Funktion views_embed_view auszugeben und dort auch die Postleitzahlen als Parameter zu übergeben. Das heißt, Du setzt im View das Postleitzahlfeld als Argument ein, hast somit bereits die Abfrage automatisch fertig aufgebaut und mußt nur noch die korrekten Postleitzahlen übergeben. Ein Beispiel für diesen View-Aufruf und die Parameterübergabe findest Du zum Beispiel hier.
Eventuell lohnt es sich auch nochmal in das Tutorial für die Standard-Umkreissuche zu schauen, damit könntest Du Dir auch die eigene Routine zur Ermittlung der Postleitzahlen im Umkreis per OpenGeoDB sparen.
Gruß,
Sven
Das mit den Argumenten
am 14.04.2012 - 18:47 Uhr
Das mit den Argumenten funktioniert, habe dem View das Feld PLZ als Argument zugewiesen. Doch hier schon das nächste Problem:
Da ich nach der Umkreissuche eine Handvoll PLZ's habe, für die ich Ereignisse anzeigen will muss ich dem Argument mehrere Werte übergeben, also: PLZ-1, PLZ-2...PLZ-n.
In dem dem von dir verlinkten Tutorial werden mehrere Werte mit '+' zusammengeführt und 'views_embed_view' übergeben. Leider funktioniert das nicht. WIe behandelt der View ein solches mit '+' verkettetes Argument? Ist das '+' gleichbedeutend mit 'und'? In diesem Fall bräuchte ich ein 'oder', schließlich soll mein View alle Ereignisse anzeigen, wo die Postleitzahl 'PLZ-1' oder 'PLZ-2' ... oder 'PLZ-n' ist.
Habe schon den halben Tag gesucht aber keinen Ansatz gefunden...
Allow multiple values
am 14.04.2012 - 18:58 Uhr
Hallo,
genau bei den Einstellungen für Deinen "contextual filter" gibt es im unteren Bereich ein Fieldset mit der Bezeichnung "more" oder "mehr". Dort muß noch die Option "Allow multiple values" aktiviert werden. Dort steht auch eine kleine Erläuterung, dass die Variablen mit einem Plus oder Komma getrennt angegeben werden können. Damit sollten die Argumente auch quasi mit einem "oder" gefiltert werden, so dass dann die Ergebnisse für alle im Argument angegebenen Postleitzahlen angezeigt werden.
Gruß,
Sven
Ahh,OK. Ich war blind...
am 14.04.2012 - 19:29 Uhr
Ahh,OK. Ich war blind...