Contao-Camp 2024
Ergebnis 1 bis 18 von 18

Thema: Filter für ein Select/Tags in der Eingabemaske - QUERY-U oder QUERY-C - wie?

  1. #1
    Contao-Fan Avatar von w3scout
    Registriert seit
    20.06.2009.
    Ort
    Stuttgart
    Beiträge
    273
    Contao-Projekt unterstützen

    Support Contao

    Standard Filter für ein Select/Tags in der Eingabemaske - QUERY-U oder QUERY-C - wie?

    Hallo zusammen,

    ich versuche die Auswahl eines Tags-Attibuts mittels Filter einzugrenzen, wie hier beschrieben: https://metamodels.readthedocs.io/de/latest/cookbook/filter/custom-sql.html#filter-fur-ein-select-tags-in-der-eingabemaske

    Code:
    SELECT `id` FROM  mm_mitarbeiter
    WHERE IF (
          {{param::post?name=abteilung}} != 'NULL', (QUERY-U), (QUERY-C)
     )
    Was mir nicht klar ist: was hat es mit (QUERY-U) und (QUERY-C) auf sich? Kann mir da jemand ein Beispiel nennen?
    Tausend Dank vorab!

    Gruß,
    Darko

  2. #2

  3. #3
    Contao-Fan Avatar von w3scout
    Registriert seit
    20.06.2009.
    Ort
    Stuttgart
    Beiträge
    273
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    U = Update
    C = Create
    Danke Dir. Wofür U und C stehen ist mir klar, steht ja auch in der Doku.
    Hast Du mir ein konkretes Beispiel für´ne Update- und Create-Query? Ich verstehe es iwie grad nicht.

  4. #4
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.446
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Da definiert man jeweils was als Wert verwendet werden soll. Also eine Query, mit der man einen Wert ermittelt oder aber auch einen festen Wert.

  5. #5
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von w3scout Beitrag anzeigen
    Danke Dir. Wofür U und C stehen ist mir klar, steht ja auch in der Doku.
    Hast Du mir ein konkretes Beispiel für´ne Update- und Create-Query? Ich verstehe es iwie grad nicht.
    find ich gerade nicht...

    bei Create musst Du auf die POST-Parameter lauschen und entsprechend Deinem Wert vom "Trigger-Attribut" das Query bauen - bei Update auf den GET-Parameter der id des gerade bearbeiteten Datensatzes (siehe Handbuch trennen bei "::")

  6. #6
    Contao-Fan Avatar von w3scout
    Registriert seit
    20.06.2009.
    Ort
    Stuttgart
    Beiträge
    273
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Danke für Eure Antworten!

    Ich bin inzwischen ein wenig weiter gekommen und habe nun folgende Query für den MM-Filter. Wenn ich die Query in phpMyAdmin ausführe, bekomme ich die erwarteten Ergebnisse.
    Das Tags-Attribut zeigt aber leider keine Reaktion.

    Code:
    SELECT rb.id FROM mm_reisebausteine AS rb
    WHERE rb.region IN ( 
       SELECT rz.id FROM mm_reiseziele AS rz
       WHERE rz.titel IN ({{param::post?name=filter_region}})
    )
    AND rb.kategorie = 3
    AND rb.aktiv = 1
    Um es mal konkret zu machen (viell. sehe ich einfach den Wald vor lauter Bäumen nicht, aber einer von Euch sieht sofort, woran´s liegt?!).
    Es geht um folgende Konstellation:

    Bildschirmfoto 2022-05-19 um 18.44.36.png

    Unter "Zubuchbare Reisebausteine" sollen nur diejenigen angezeigt werden, denen eine der im Filter ausgewählten Regionen zugeordnet ist.

    Hat jemand´ne Idee, wieso die obige Query in phpMyAdmin funktioniert, als eigener SQL-Filter in MM aber nicht? Bin grad etwas ratlos. Danke vorab!

  7. #7
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.446
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zeig mal wie du die Query in PhpMyAdmin packst. Das mit dem {{parameter:ost … greift ja da nicht.

  8. #8
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    der Unterschied ist, dass man bei der Maske man auf zwei Sachen lauschen muss: a) per GET bekommt man nur die ID des Datensatzes und muss damit erst die Daten von Regionen finden und dann die Bausteine eingrenzen oder b) per POST bekommt man die Daten von Regionen direkt und kann die Bausteine suchen...

    Die Unterscheidung machst Du indem Du bei Post nach "Regionen" triggerst und entscheidest a oder b

  9. #9
    Contao-Fan Avatar von w3scout
    Registriert seit
    20.06.2009.
    Ort
    Stuttgart
    Beiträge
    273
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von cliffparnitzky Beitrag anzeigen
    Zeig mal wie du die Query in PhpMyAdmin packst. Das mit dem {{parameter:ost … greift ja da nicht.
    Die hab´ ich für phpMyAdmin gegen Beispielwerte ersetzt, wie sie vom Filter nach einem SubmitOnChange via POST geliefert werden.
    Also z.B.

    Code:
    SELECT rb.id FROM mm_reisebausteine AS rb
    WHERE rb.region IN ( 
       SELECT rz.id FROM mm_reiseziele AS rz
       WHERE rz.titel IN ( 'andalusien', 'nordwestspanien')
    )
    AND rb.kategorie = 3
    AND rb.aktiv = 1

  10. #10
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von w3scout Beitrag anzeigen
    Die hab´ ich für phpMyAdmin gegen Beispielwerte ersetzt, wie sie vom Filter nach einem SubmitOnChange via POST geliefert werden.
    Also z.B.

    Code:
    SELECT rb.id FROM mm_reisebausteine AS rb
    WHERE rb.region IN ( 
       SELECT rz.id FROM mm_reiseziele AS rz
       WHERE rz.titel IN ( 'andalusien', 'nordwestspanien')
    )
    AND rb.kategorie = 3
    AND rb.aktiv = 1
    ist die Frage, ob das Query überhaupt so erzeugt wird? Debugmodus hast Du sicher an - Du kannst absichtlich einen Fehler erzeugen - schreib einfach "xxx" in das Query oder guck Dir die letzten 10 Aufrufe an und suche den Post-Aufruf ... suche dort bei den Queries nach "SELECT rb.id FROM mm_reisebausteine AS rb"

    btw: Du hast in Reiseziele ein Attribut "titel" in dem "andalusien" steht und nicht "Andalusien"? ungewöhnlich... sollte man Attribut Alias verwenden und auf Unique stellen.

    Bei der Tags-Relation hast du bei Alias dann auch "titel" ausgewählt???

  11. #11
    Contao-Fan Avatar von w3scout
    Registriert seit
    20.06.2009.
    Ort
    Stuttgart
    Beiträge
    273
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    der Unterschied ist, dass man bei der Maske man auf zwei Sachen lauschen muss: a) per GET bekommt man nur die ID des Datensatzes und muss damit erst die Daten von Regionen finden und dann die Bausteine eingrenzen oder b) per POST bekommt man die Daten von Regionen direkt und kann die Bausteine suchen...

    Die Unterscheidung machst Du indem Du bei Post nach "Regionen" triggerst und entscheidest a oder b
    Das wäre dann die Query hier, oder?

    PHP-Code:
    SELECT `idFROM  mm_reisebausteine
    WHERE 
    IF (
          {{
    param::post?name=filter_regionen}} != 'NULL',
          (
    QUERY-hier kommt die Query rein, die auf den POST-Paramater lauscht und dann die IDs der passenden Reisebausteine ausgibtAlso im Grunde meine obige Query?),
          (
    QUERY-hier muß eine Query rein, die auf den GET-Parameter des Items lauscht und anhand der Item-ID und der Abfrage über die tl_metamodel_tag_relation die Daten sucht?)
     ) 
    Passt das so in etwa oder hab´ ich doch noch ein Verständnisproblem?

  12. #12
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von w3scout Beitrag anzeigen
    Das wäre dann die Query hier, oder?

    PHP-Code:
    SELECT `idFROM  mm_reisebausteine
    WHERE 
    IF (
          {{
    param::post?name=filter_regionen}} != 'NULL',
          (
    QUERY-hier kommt die Query rein, die auf den POST-Paramater lauscht und dann die IDs der passenden Reisebausteine ausgibtAlso im Grunde meine obige Query?),
          (
    QUERY-hier muß eine Query rein, die auf den GET-Parameter des Items lauscht und anhand der Item-ID und der Abfrage über die tl_metamodel_tag_relation die Daten sucht?)
     ) 
    Passt das so in etwa oder hab´ ich doch noch ein Verständnisproblem?
    => richtig verstanden!

  13. #13
    Contao-Fan Avatar von w3scout
    Registriert seit
    20.06.2009.
    Ort
    Stuttgart
    Beiträge
    273
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    ist die Frage, ob das Query überhaupt so erzeugt wird? Debugmodus hast Du sicher an - Du kannst absichtlich einen Fehler erzeugen - schreib einfach "xxx" in das Query oder guck Dir die letzten 10 Aufrufe an und suche den Post-Aufruf ... suche dort bei den Queries nach "SELECT rb.id FROM mm_reisebausteine AS rb"
    ja, das Query wird genau so erzeugt. Hatte den Debugger genutzt, um zu sehen, was nach dem SubmitOnChange des Regionenfilters per POST ankommt.

    Zitat Zitat von zonky Beitrag anzeigen
    btw: Du hast in Reiseziele ein Attribut "titel" in dem "andalusien" steht und nicht "Andalusien"? ungewöhnlich... sollte man Attribut Alias verwenden und auf Unique stellen.
    Ne, im Titel sind die Regionen groß geschrieben. Hat mich auch gewundert, kommt aber von MM so. Siehe angehängter Screenshot, im value="" der Chekboxen stehen die Namen klein geschreiben.

    Bildschirmfoto 2022-05-20 um 19.51.12.png

    Zitat Zitat von zonky Beitrag anzeigen
    Bei der Tags-Relation hast du bei Alias dann auch "titel" ausgewählt???
    Ne, eben nicht. Siehe...

    Bildschirmfoto 2022-05-20 um 19.53.35.png

  14. #14
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    dann guck doch mal in das MM mm_reiseziele - kann es sein, dass bei dem Item "Andalusien" der Alias "analusien" lautet?!?

    wenn ja, würd ich das Query auf alias statt titel umbauen ;-)

  15. #15
    Contao-Fan Avatar von w3scout
    Registriert seit
    20.06.2009.
    Ort
    Stuttgart
    Beiträge
    273
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    => richtig verstanden!
    Ok, dann hab´ ich´s jetzt glaub´ verstanden. Den Rest sollte ich morgen mit frischer Birne hinbekommen.

    Tausend Dank für Deinen Support, Zonky! Kleines "Danke-Schön" an das MM-Projekt ist eben per PayPal raus.

  16. #16
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von w3scout Beitrag anzeigen
    Kleines "Danke-Schön" an das MM-Projekt ist eben per PayPal raus.
    angekommen... https://community.contao.org/de/show...l=1#post559251

  17. #17
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von w3scout Beitrag anzeigen
    Ok, dann hab´ ich´s jetzt glaub´ verstanden. Den Rest sollte ich morgen mit frischer Birne hinbekommen.
    Das Handbuch ist auf Github hinterlegt (Link immer oben rechts auf der Seite) - dort kannst Du gern ein ausführliches Beispiel als PR ergänzen...

  18. #18
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Für die Filterung von Mehrfachauswahl mit Checkboxen habe ich die Beschreibung ergänzt: https://metamodels.readthedocs.io/de...r-eingabemaske

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •