Ergebnis 1 bis 16 von 16

Thema: Eigener SQL Filter ... mit UPDATE?

  1. #1
    Contao-Nutzer
    Registriert seit
    12.03.2010.
    Beiträge
    238

    Standard Eigener SQL Filter ... mit UPDATE?

    Hi,
    ich möchte gerne bei einer Detailansicht eines Datensatzes ein Countfeld bei jedem Aufruf hochzählen.
    Jetzt dachte ich mir dass ich den SQL Filter dafür missbrauchen kann aber der erwartet eine ID als Rückgabe aus einem SELECT.
    Hat jemand eine Idee wie ich da weiter verfahren könnte um erwünschtes Resultat hin zu bekommen?

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

    Standard

    ich glaube, dafür ist der Filter nicht gedacht... m.E. gibt es eine Erweiterung mit Insert-Tag zum "count-en"

    Hart verdrahtet im Template müsste es auf alle Fälle gehen

  3. #3
    Contao-Nutzer
    Registriert seit
    12.03.2010.
    Beiträge
    238

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    ich glaube, dafür ist der Filter nicht gedacht... m.E. gibt es eine Erweiterung mit Insert-Tag zum "count-en"
    Ja das ist mir vollkommen klar. Hier wird die Filterfunktion hart missbraucht ... wenns denn klappt.
    Hard verdrahtet im Template müsste es auf alle Fälle gehen
    Ich will aber einen Counter in dem jeweiligen Datensatz hoch zählen weil ich basierend auf dieser Counterzahl bei einem anderen Renderer filtern möchte

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

    Standard

    ein Counter-Feld ist aber vorhanden - sprich Attribut?

    im aller größten Notfall

    PHP-Code:
    UPDATE mm_test 
    SET 
    counter 
    counter 1
    WHERE
    id 
    = <id>; 

  5. #5
    Contao-Nutzer
    Registriert seit
    12.03.2010.
    Beiträge
    238

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    ein Counter-Feld ist aber vorhanden - sprich Attribut?

    im aller größten Notfall

    PHP-Code:
    UPDATE mm_test 
    SET 
    counter 
    counter 1
    WHERE
    id 
    = <id>; 
    Ja das Counterfeld ist vorhanden.
    Das Update ist mir schon klar. Nur wird kein Datensatz gelistet, weil der Filter, wie geschrieben, eine ID erwartet. Bekommt er keine wird der Datensatz "rausgefiltert"

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

    Standard

    Zitat Zitat von Honig Beitrag anzeigen
    Nur wird kein Datensatz gelistet, weil der Filter, wie geschrieben, eine ID erwartet. Bekommt er keine wird der Datensatz "rausgefiltert"
    ?? verstehe die Aussage/Erklärung nicht... in dem Filter "Eigenes SQL" ist per se erst mal keine "Zwangs-ID-Abfrage" vorhanden??

  7. #7
    Contao-Nutzer
    Registriert seit
    12.03.2010.
    Beiträge
    238

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    ?? verstehe die Aussage/Erklärung nicht... in dem Filter "Eigenes SQL" ist per se erst mal keine "Zwangs-ID-Abfrage" vorhanden??
    Nein aber der erwartet was zurück. Also wenn ich das richtig verstanden habe erwartet der Code des Filters eine ID oder eine Liste von IDs zurück welche dann zum Ausgeben der Datensätze genutzt wird oder in einen weiteren Filter geschoben wird.
    Wenn man nur ein Update in einen Filter rein baut, wird nichts ausgegeben, auch wenn alle anderen Filter vorher richtig gefiltert haben.

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

    Standard

    kann es sein, dass Du "Eigenes SQL" und "Vordefiniertes Filterset" durcheinander bringst? m.E. kommen nur bei letzterem eine oder mehrere Item-IDs hin

    bei Eigenem SQL eher was wie

    PHP-Code:
    SELECT id 
    FROM 
    {{table}}
    WHERE catname={{param::get?name=category&default=defaultcat}} 
    ABER
    in der ersten Zeile des Hilfe-Popup steht:

    Geben Sie eine SQL-Abfrage ein die ausgeführt werden soll.
    Diese Abfrage muss zwingend mindestens eine Spalte mit dem Namen "id" zurückliefern.
    d.h. damit wirds nix und ein UPDATE als Sub-Query ist mir nicht bekannt...

    ... dann schreib Dir ne kleine Funktion und setze das in dein Template - hier kannst Du zumindest die Interfaces von MM bzw. die API von Contao nutzen...

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

    Standard

    Hi,

    du kannst sonst auch im Template auf das Item-Objekt zugreifen und es abspeichern ...

    PHP-Code:
    $objItem->set('views'$objItem->get('views') + 1); $objItem->save(); 

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

    Standard

    ... so einfach kann die Welt sein :-))

  11. #11
    Contao-Nutzer
    Registriert seit
    12.03.2010.
    Beiträge
    238

    Standard

    Oh danke - das ist zwar bissel hacky und fühlt sich sehr an wie "don't do it" aber gut es tut seinen Zweck

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

    Standard

    Zitat Zitat von Honig Beitrag anzeigen
    Oh danke - das ist zwar bissel hacky und fühlt sich sehr an wie "don't do it" aber gut es tut seinen Zweck
    ... warum? die Zeile macht ja nichts anderes, als was ich in SQL aufgeschrieben habe und was man in den Filter legen würde, wenn es ginge...

    An der Stelle kannst Du noch etwas "Brimborium" machen und den Zähler nur hoch setzen, wenn ein Cookie/Session das nicht unterbindet o.ä....

  13. #13
    Contao-Nutzer
    Registriert seit
    12.03.2010.
    Beiträge
    238

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    ... warum? die Zeile macht ja nichts anderes, als was ich in SQL aufgeschrieben habe und was man in den Filter legen würde, wenn es ginge...
    Weil solcher Code nicht ins Template gehört ... normalerweise

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

    Standard

    Zitat Zitat von Honig Beitrag anzeigen
    Weil solcher Code nicht ins Template gehört ... normalerweise
    unter "akademischen Gesichtspunkten" völlig korrekt - geht aber eben nicht immer... s.u.a. http://de.contaowiki.org/MetaModels_...ferenced_items

  15. #15
    Contao-Nutzer
    Registriert seit
    12.03.2010.
    Beiträge
    238

    Standard

    Nur so ein kleiner Hinweis noch wenn man das übers Template machen will (was gleich mal keine gute Idee ist) - es werden die Datensätze nur gespeichert mit den Daten, die auch angezeigt werden. Wenn man also bestimmte Spalten ausgeblendet hat werden diese als Leerwerte gespeichert und man zerschießt sich die Daten.

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

    Standard

    ähh... d.h. wenn ich das Attribut "views" nicht mit ausgebe, kann ich es auch nicht updaten??

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
  •