Ergebnis 1 bis 17 von 17

Thema: Bilder aus einer zweiten Tabelle auf Detailseite

  1. #1
    Contao-Nutzer
    Registriert seit
    20.01.2022.
    Beiträge
    205

    Standard Bilder aus einer zweiten Tabelle auf Detailseite

    Hallo,

    ich möchte auf einer Detailseite eines MM, Bilder die über ein anderes MM zugeordnet sind auslesen:

    bislang ging das mit

    SELECT id FROM mm_bilder WHERE pid = (SELECT id FROM mm_artikel WHERE alias='{{get::item::mysql_real_escape_string}}')


    {{get::item::mysql_real_escape_string}} ist aber offenbar leer - ist der INSERT-String mittlerweile ein neuer?

    Danke


    Thomas

  2. #2
    Contao-Nutzer
    Registriert seit
    20.01.2022.
    Beiträge
    205

    Standard

    bzw. auch wenn ich hart eine SQL Abfrage generiere, die eine ID aus der mm_bilder hat,
    bekomme ich keine Ausgabe - aber auch kein Fehler

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

    Support Contao

    Standard

    Und im Datenbankmodell passt das alles? Eine Abfrage via PhpMyAdmin bring ein Ergebnis?

    Was ist {{get:: für ein Inserttag? Wo kommt der her?

  4. #4
    Contao-Nutzer
    Registriert seit
    20.01.2022.
    Beiträge
    205

    Standard

    Im Datenbank-Modell passt das, wenn ich das hart suche:

    SELECT id FROM mm_bilder WHERE pid = (SELECT id FROM mm_artikel WHERE alias='mein-bsp-alias')

    bekomme ich eine ID aus mm_bilder

    aber keine FE Ausgabe

    Und {{get::item::mysql_real_escape_string}} ist ein offenbar älterer Insert-Tag der bei einer URL

    /detailseite/item/mein-bsp-alias.html

    den Wert "mein-bsp-alias" ausgibt.

    ich benötige also offenbar einen neuen Insert-Tag oder eine andere Variante, den Wert des Items aus dem Pfad zu erhalten
    und weiterhin erfolgt auch keine Ausgabe, selbst wenn eine ID aus mm_bilder gefunden wird

    Als Render-Einstellung für die FE Bilder aus der zweiten Tabelle wird das allgemeine Template "mm_attr_file.html" verwendet,
    im Feld images aus der mm_bilder ist ein BLOB und kann mehrere Bilder enthalten.


    Danke sehr

    Thomas

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

    Standard

    Phuuu... bitte erstmal zurück auf Anfang: wie ist Deine Datenstruktur und was genau willst Du erreichen?

    PHP-Code:
    SELECT id FROM mm_bilder WHERE pid = (SELECT id FROM mm_artikel WHERE alias='xx'
    1. Es sieht so aus, als ob MM-Artikel eine Kindtabelle MM-Bilder hat - kann man machen, Frage ist, warum hast Du das so gemacht? Was ist "das andere MM" - gibts noch ein weiteres?

    2. wo hast Du das Query eingetragen? Filterregel "Eig. SQL" oder irgendwo im Template?

  6. #6
    Contao-Nutzer
    Registriert seit
    20.01.2022.
    Beiträge
    205

    Standard

    Ok


    Es gibt ein MM: mm_eintraege
    mit diversen Attributen

    Und es gibt ein MM: mm_bilder
    welches Bildergalerien zu dein einzelnen Einrträgen enthaelt.

    Im FE gibt es eine Liste von mm_eintraegen mit einem Link zur Detailseite, die genau ein mm_eintraege anzeigt.

    Das geht soweit.

    Hier soll nun dann noch die Bildergalerie zu diesem einen mm_eintraege aus der mm_bilder ausgelesen werden.

    Und das Auslesen der zugehörigen Bilder läuft über einen Filter "eigenes SQL" mit dem Query:

    SELECT id FROM mm_bilder WHERE pid = (SELECT id FROM mm_artikel WHERE alias='xx')

    Die Struktur ist m.E. korrekt so.

    Ich benötige halt den alias vom mm_eintraege oder im Grunde geht auch die ID, um die Bilder aus der mm_bilder zu holen

    Und eine FE Ausgabe dafür, die m.E. über das mm_attr_flle funktionieren sollte, aber bei mir momenten noch nichts ausgibt.
    zum Testen wird auch nichts ausgegeben, wenn ich im Filter "Eigenes SQL" eine Query eintrage, die definitiv einen Zeile mit einer ID ergibt - die ID reicht offenbar nicht für das Ausgabe-Template mm_attr_file.html5 ?

    Danke

    Thomas
    Geändert von Thomas Pyrin (14.04.2023 um 15:31 Uhr)

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

    Standard

    weiter mit den (Rück)Fragen:

    1: Du schreibst, Du hast mm_eintraege und mm_bilder - im SQL schreibst Du aber mm_artikel ... in welchem Zusammenhang dieses Model mit dem Rest steht, hast Du nicht verraten - oder ich habs nicht gesehen...

    2: die Relation zwischen mm_eintraege und mm_bilder ist noch unklar - ist mm_bilder über ein Relationsattribut wie Einzelauswahl [Select] / Mehrfachauswahl [Tags] oder über Kindtabelle angebunden?

    3: Willst Du in mm_eintraege eine oder mehrere Bildergalerien einbinden - haben die Bildergalerien neben Attribut Datei noch mehr Attribute, so dass die als eigenständiges Model fungieren müssen?

  8. #8
    Contao-Nutzer
    Registriert seit
    20.01.2022.
    Beiträge
    205

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    weiter mit den (Rück)Fragen:

    1: Du schreibst, Du hast mm_eintraege und mm_bilder - im SQL schreibst Du aber mm_artikel ... in welchem Zusammenhang dieses Model mit dem Rest steht, hast Du nicht verraten - oder ich habs nicht gesehen...
    oh, sorry, das ist mein Fehler ... mm_eintraege == mm_artikel
    ich hatte der neuen erklärung wegen das anders genannt

    Zitat Zitat von zonky Beitrag anzeigen
    2: die Relation zwischen mm_eintraege und mm_bilder ist noch unklar - ist mm_bilder über ein Relationsattribut wie Einzelauswahl [Select] / Mehrfachauswahl [Tags] oder über Kindtabelle angebunden?
    Die mm_bilder ist als Kindtabelle an die mm_eintraege angebunden

    Zitat Zitat von zonky Beitrag anzeigen
    3: Willst Du in mm_eintraege eine oder mehrere Bildergalerien einbinden - haben die Bildergalerien neben Attribut Datei noch mehr Attribute, so dass die als eigenständiges Model fungieren müssen?
    Ich benötige nur eine Bildergalerie pro mm_eintraege - momentan haben die mm_bilder nur das Attribut "Datei", das könnte aber noch erweitert werden durch Titel / Beschreibung - daher die Überlegung der Kind-Tabelle.

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

    Standard

    o.k. - jetzt wird doch langsam ein Schuh daraus...

    Ich würde auf der Detailseite von mm_eintraege zwei MM-Listen einbauen

    a) die Detailangaben von mm_eintraege mit Filter auf "alias"

    b) die Liste der Bilder aus mm_bilder mit Filter auf "mm_bilder.pid == mm_eintraege.id"

    Beide haben entsprechend ein eigenes Rendersetting mit eigenem Template.

    Filterbeispiel aus dem Handbuch: https://metamodels.readthedocs.io/de...ltern-elements

    PHP-Code:
    SELECT `id`
    FROM mm_bilder
    WHERE 
    `pid` = (
      
    SELECT `id`
      
    FROM mm_eintraege
      WHERE
      
    `alias` = {{param::get?name=item}}
      
    LIMIT 1

    Sofern Du als URL-Prarameter "auto_item" verwendest dann

    PHP-Code:
      `alias` = {{param::get?name=auto_item}} 
    beim Template der Bilder ggf. das "else" löschen womit die Meldung "Keine Items gefunden" ausgegeben wird

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

    Standard

    Zitat Zitat von Thomas Pyrin Beitrag anzeigen
    Ich benötige nur eine Bildergalerie pro mm_eintraege - momentan haben die mm_bilder nur das Attribut "Datei", das könnte aber noch erweitert werden durch Titel / Beschreibung - daher die Überlegung der Kind-Tabelle.
    ... falls das mal eine umfangreichere Mediendatenbank wird - oder werden soll - kann man mit https://metamodels.readthedocs.io/de...extractor.html sich die Übernahme von Metadaten wie IPTC, EXIF usw. aus den Bildern erleichtern. Um bei den Medien nach Keywords zu suchen, per Geolocation die Bilder Gruppieren oder auf Map anzuzeigen, nach Autor filtern usw.

  11. #11
    Contao-Nutzer
    Registriert seit
    20.01.2022.
    Beiträge
    205

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    o.k. - jetzt wird doch langsam ein Schuh daraus...

    Ich würde auf der Detailseite von mm_eintraege zwei MM-Listen einbauen

    a) die Detailangaben von mm_eintraege mit Filter auf "alias"
    das habe ich schon so, die Detailansicht funktioniert soweit, mit einem Filter: "Einfache Abfrage" auf den 'alilas' aus dem URL Parameter 'item'


    Zitat Zitat von zonky Beitrag anzeigen
    b) die Liste der Bilder aus mm_bilder mit Filter auf "mm_bilder.pid == mm_eintraege.id"

    Beide haben entsprechend ein eigenes Rendersetting mit eigenem Template.

    Filterbeispiel aus dem Handbuch: https://metamodels.readthedocs.io/de...ltern-elements

    PHP-Code:
    SELECT `id`
    FROM mm_bilder
    WHERE 
    `pid` = (
      
    SELECT `id`
      
    FROM mm_eintraege
      WHERE
      
    `alias` = {{param::get?name=item}}
      
    LIMIT 1

    Sofern Du als URL-Prarameter "auto_item" verwendest dann

    PHP-Code:
      `alias` = {{param::get?name=auto_item}} 
    Und da ist nach wie vor der Knackpunkt.

    Testweise habe im FE per Textausgabe mal die Insert-Tags eingetragen:

    PHP-Code:
    {{param::get?name=auto_item}}
    {{
    param::get?name=item}} 
    Beide Einträge sind in der FE Ausgabe als Text leer (aber vielleicht greifen die auch nur im Filter?)

    Die SQL Abfrage für den Filter mit dem Insert Tag {{param::get?name=item}} bringt gar keine Ausgabe

    Die SQL Abfrage für den Filter mit dem Insert Tag {{param::get?name=auto_item}} bringt: "Ihre Suche lieferte keine passenden Ergebnisse."

    Aber: wenn ich mir per PHP mal die vorhandenen GET Parameter ausgebe mit var_dump($_GET) -> dann gibt es nur einen mit dem Namen "item"

    Also sollte der Insert-Tags {{param::get?name=item}} lauten, der ist aber leer - auch wenn ich den mal so direkt ins Template schreibe, sollte der ja
    interpretiert werden.

    ---

    Das Ausgabe Rendering für die Liste ist metamodel_prerendered, für die Bilder mm_attr_file -> also die Standard Ausgaben

    Und in den Ausgabe-Templates gibt es keine "else" für "keine passenden Ergebnisse"

    Theoretisch ist das ja alles sogar soweit klar, deswegen verstehe ich den Fehler nicht.

    Und: selbst wenn ich im Bilder-Filter-SQL eine harte Abfrage schreibe wie:

    PHP-Code:
    SELECT id FROM mm_bilder WHERE id 1024 
    weil ich weiss, dass da eine ID als Ergebnis kommt, erhalte ich nur "Ihre Suche lieferte keine passenden Ergebnisse."

    Ich habe für die Bilder-Liste bewusst die Standard-Templates genommen, um Fehler da erstmal auszuschliessen.

    Im Notfall bastel ich mir das auch alles mit einem eigenen PHP Code darunter, aber ich will es halt schon gerne mit den MM-Mitteln lösen

    Sehr seltsam
    Geändert von Thomas Pyrin (15.04.2023 um 12:01 Uhr)

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

    Standard

    Beide Einträge sind in der FE Ausgabe als Text leer (aber vielleicht greifen die auch nur im Filter?)
    Korrekt - im FE wird der nicht aufgelöst sondern nur beim Parsen des Query von MM!


    Wenn Du die Filterregel bei Liste Bilder aus stells müssten ja alle Bilder aller Kind-Items zu sehen sein - ist das der Fall? Wenn nicht, ist hier schon was schief...

    Wenn hier alles angezeigt wird, teste mal

    PHP-Code:
    SELECT `id`
    FROM mm_bilder
    WHERE 
    `pid` = 42 
    guck aber vorher mal in die DB ob und welche pid`s vorhanden sind und wo Dein Attribut File Werte hat - diese Nummer statt der 42.

    Bei eigenen Queries teste ich das immer vorger in phpMyAdmin mit festen Werten und ergänze zum Schluß mit dem Inserttag für die variable Größe.

    Also sollte hier was als Rückgabe kommen

    PHP-Code:
    SELECT `id`
    FROM mm_bilder
    WHERE 
    `pid` = (
      
    SELECT `id`
      
    FROM mm_eintraege
      WHERE
      
    `alias` = 'mein-alias-wert-aus-get'
      
    LIMIT 1

    Das komplette Query von MMkannst Du in der Symfony-Bar bei Icon "Doctrine" finden - per Browsersuche nach "FROM mm_bilder" suchen.

    btw: wenn Dein URL-Parameter "item" ist, brauchst Du das mit "auto_item" nicht probieren...

  13. #13
    Contao-Nutzer
    Registriert seit
    20.01.2022.
    Beiträge
    205

    Standard

    DANKE !

    Das mit dem "Filter rausnehmen" war ein guter Hinweis - es werden dann alle Bilder angezeigt.
    Ich hab dann über phpMyAdmin mal die Abfrage manuell gemacht und einen ganz anderen Fehler festgestellt.

    Der Filter funktioniert also so wie er soll - aber: Die Tabelle mm_bilder die ich bekommen habe ist nicht korrekt umgeschrieben worden und
    es befinden sich massenhaft auch noch alte Pfade für die Bilder in den Blobs :-(
    also "tl_files ...." - das ist ein sehr altes MM

    Aber echt danke für den Tipp - damit ist alles wieder klar (und ich einigermassen zufrieden, dass ich die Theorie dann doch so richtig hatte)

    Nochmals danke und ein schönes WE!

  14. #14
    Contao-Nutzer
    Registriert seit
    20.01.2022.
    Beiträge
    205

    Standard

    Ach und noch etwas war mir eingefallen: wir würde man im BE und FE vorgehen, wenn eine Kind-Tabelle mehrere Einträge zu einem Eltern-Eintrag hätte?

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

    Standard

    Zitat Zitat von Thomas Pyrin Beitrag anzeigen
    es befinden sich massenhaft auch noch alte Pfade für die Bilder in den Blobs :-(
    also "tl_files ...." - das ist ein sehr altes MM
    es gibt das https://github.com/MetaModels/file_updater - ist aber sehr alt und muss für MM 2.2 etwas angepasst werden https://github.com/MetaModels/file_updater/issues/3

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

    Standard

    Zitat Zitat von Thomas Pyrin Beitrag anzeigen
    Ach und noch etwas war mir eingefallen: wir würde man im BE und FE vorgehen, wenn eine Kind-Tabelle mehrere Einträge zu einem Eltern-Eintrag hätte?
    wie meinst Du das?!?

    BE: Wenn Du eine Kindrelation hast, ist doch in der Parent-Tabelle bei jedem Item ein weiteres Icon rechts - mit dem Du auf die Liste der Kindelemente kommst... hier einfach beliebig viele Kinder anlegen... die pid wird automatisch gesetzt (in den Einstellungen der Eingabemaske der Kindtabelle muss dafür "Elternelement vorhanden" gesetzt werden!)

    FE: öhmm... je nach dem was Du willst!??!

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

    Standard

    Zitat Zitat von Thomas Pyrin Beitrag anzeigen
    Testweise habe im FE per Textausgabe mal die Insert-Tags eingetragen:

    PHP-Code:
    {{param::get?name=auto_item}}
    {{
    param::get?name=item}} 
    Beide Einträge sind in der FE Ausgabe als Text leer (aber vielleicht greifen die auch nur im Filter?)
    hab das Kochbuch entsprechend angepasst, damit möglichst nicht noch jemand auf den Holzweg kommt...
    https://metamodels.readthedocs.io/de...ml#eigenes-sql

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
  •