Ergebnis 1 bis 9 von 9

Thema: BE SQL-Filter mit item ID auslesen

  1. #1
    Contao-Nutzer
    Registriert seit
    29.09.2010.
    Ort
    Oberstdorf
    Beiträge
    78

    Standard BE SQL-Filter mit item ID auslesen

    Ich möchte einen SQL-Filter für eine Mehrfachauswahl erstellen.
    Der Befehl funktioniert schon recht gut. Allerdings muss ich noch
    die item_id dynamisch abholen.

    Gibt es da einen Inserttag?

    Code:
    SELECT * FROM `mm_bereichskategorien` WHERE pid IN (SELECT value_id FROM `tl_metamodel_tag_relation` WHERE item_id=4 AND att_id=32)
    Im BE im Edit-Mode wird folgendes ausgegeben:
    …main.php?do=metamodel_mm_kunden&act=edit&id=mm_kunden::4&rt=bdbb3985a559a…

    Hier steckt eigentlich das drin was ich brauche "id=mm_kunden::4" wie kann ich nun
    in eine SQL-Filter diese ID (4) auslesen?

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

    Standard

    bei dem Eingabefeld für das SQL gibt es "das kleine Verkehrszeichen" mit einem Hilfe-Popup - das sollte Dich weiter bringen...

  3. #3
    Contao-Nutzer
    Registriert seit
    29.09.2010.
    Ort
    Oberstdorf
    Beiträge
    78

    Standard

    Danke für den Tipp.
    Nun hab ich mich etwas mit den Beispielen befasst. Ich hab die 'aggregate', 'key' und 'recursive'
    noch nicht ganz verstanden. Aber ich habe einen neuen Weg gefunden der momentan auch funktioniert.

    HTML-Code:
    SELECT * FROM {{table}} WHERE pid IN (SELECT value_id FROM tl_metamodel_tag_relation WHERE att_id=32 
    AND item_id=RIGHT({{param::get?name=id}},1))
    Vermutlich nicht der schönste aber es funktioniert.

    Ich hab keine Möglichkeit gefunden "mm_kunden::3" über die Parameterquellen so auszulesen, das nur die Ziffer übrig bleibt.

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

    Standard

    hmmm... ich kann hier nicht so recht raus lesen, was Ziel der Übung ist...

    Ich sehe mir die (komplexeren) Filterungen meistens erstmal in phpMyAdmin an und wenn da alles funktioniert, versuche ich das in MM zu übertragen...

  5. #5
    Contao-Fan
    Registriert seit
    09.09.2009.
    Beiträge
    366

    Standard

    Deine Lösung hat aber einen Nachteil, sie funktioniert nur mit den ID's die einstellig sind. Folgende Lösung funktioniert bei mir allgemein:

    Code:
    SELECT * FROM mm_course WHERE id = TRIM(SUBSTRING_INDEX('mm_course::11',':',-1))

  6. #6
    Contao-Nutzer
    Registriert seit
    29.09.2010.
    Ort
    Oberstdorf
    Beiträge
    78

    Standard

    Danke für die Lösungshilfe. Dies ist mir dann auch aufgefallen.
    Muss mich mal mehr mit SQL befassen. Bin halt doch
    kein reiner Programmierer.

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

    Standard

    das Konstrukt

    PHP-Code:
    SELECT FROM {{table}} WHERE pid IN (SELECT value_id FROM tl_metamodel_tag_relation WHERE att_id=32 
    AND item_id=RIGHT({{param::get?name=id}},1)) 
    halte ich für recht "gewagt" - ggf. als Tipp:

    Metamodels macht aus
    PHP-Code:
    {{param::get?name=id}} 
    wenn in der URL domain.tld/meine-mm-detailseite.html?id=5
    eine "5" so dass das Query hinterher wie folgt aussieht

    PHP-Code:
    SELECT FROM {{table}} WHERE pid IN (SELECT value_id FROM tl_metamodel_tag_relation WHERE att_id=32 
    AND item_id=5
    und aus

    der URL domain.tld/meine-mm-detailseite.html?id=555555
    eine "555555"

    PHP-Code:
    SELECT FROM {{table}} WHERE pid IN (SELECT value_id FROM tl_metamodel_tag_relation WHERE att_id=32 
    AND item_id=555555
    ... ach, und SQL möchte bei "IN" eine Komma-separierte Liste mit Werten haben...

  8. #8
    Contao-Fan
    Registriert seit
    09.09.2009.
    Beiträge
    366

    Standard

    @zonky: Für das Frontend hast Du recht, aber im Backend haben wir die serialisierten ID's mm_metamodel::ID. Wenn man die mit param::get abruft, wird draus immer noch mm_metamodel::ID also muss man den vorderen Teil erst beseitigen, bevor die Query funktioniert.

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

    Standard

    o.k. - hab ich "überlesen", dass es um´s BE geht

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
  •