[Frage] mySQL Abfrage: pidInList nötig TYPO3-Version: 6.1.7

  • MrSpock MrSpock
    T3PO
    0 x
    14 Beiträge
    0 Hilfreiche Beiträge
    21. 08. 2014, 18:03

    Hallo,

    ich habe folgendes Script:

    1. page = PAGE
    2. page.typeNum = 0
    3. page {
    4. 5 = CONTENT
    5. 5 {
    6. table = pages
    7. selectedFields = uid, title
    8. select.pidInList = 60,61,62,63,64,65
    9. #select.where = (pid = 64)
    10. renderObj = COA
    11. renderObj {
    12. 10 = TEXT
    13. 10.required = 1
    14. 10.field = uid
    15. 10.wrap = <p>| <br /></p>
    16. }
    17.  
    18. }
    19.  
    20. }

    Das funktioniert. Wenn ich aber die pidInList Zeile auskommentiere und versuche z.B. durch eine where Klausel zu ersetzten (wie oben auskommentiert), wird mir kein Datensatz angezeigt. Ist pidInList immer nötig? Und wie könnte ich z.B. in eine where Klausel (pid > 60) benutzen? das > Zeichen kann ich ja in TypoScript nur zum Löschen eines Wertes benutzen, oder?

    P.S.:

    habe jetzt mal folgendes geschrieben

    select.where = (pid = 63) OR (pid = 64)

    dann funktioniert es auch. Die pid ist 64, also 63 findet gar keinen Datensatz. Schreibe ich

    select.where = (pid = 64) OR (pid = 63)

    wird wieder nichts angezeigt !?

    P.S.S:

    Habe die weitere Beobachtung gemacht, dass bei der OR Verknüpfung nur dann eine Datenmenge zurückgegeben wird, wenn (mindestens) die erste Bedingung erfüllt ist.


  • 1
  • Chrissli Chrissli
    Jedi-General
    0 x
    1016 Beiträge
    28 Hilfreiche Beiträge
    22. 08. 2014, 00:26

    Das liegt daran, dass die queries automatisch so ergänzt werden, dass nur Inhalte für die aktuelle Seite kommen, d.h.

    1. where pid = aktuelleSeitenID

    wird automatisch ergänzt, insofern du das nicht mir pidInList anders definiert hast.
    Je nach Umfang kannst du einfach das cObject von pidInList mit einem HMENU überschreiben, welches nur die entsprechenden IDs per Komma getrennt zurück gibt.

    Ich bin noch nicht in die Verlegenheit gekommen einen größeren Umfang von SeitenIds zu übergeben, evtl lässt sich das ja austricksen indem ein %-Zeichen als ID angegeben wird.

    Wenn du Wissen willst wie die query effektiv aussieht, kannst du das SQL-Debug Flag in der Installation auf 2 setzen, dann werden alle Queries ausgegeben.
    Wenn du dann in die Abfrage z.b.

    1. where = 999=999

    einbaust, findest du die entsprechende Abfrage ziemlich leicht über die Browsersuche ( Achtung Cache )

    God's in his heaven, all's right with the world

  • MrSpock MrSpock
    T3PO
    0 x
    14 Beiträge
    0 Hilfreiche Beiträge
    22. 08. 2014, 12:47

    Hallo Chrissli,

    danke für die Antwort. Habe mal das SQL - Debug Flag gesetzt und mir das SQL Statement angeschaut. Es ist wie du sagst, dass immer die Abfrage nach der Seiten ID mit drin steht, es sei denn man gibt eine pidInList an. Interessant ist, dass wenn man eine OR Abfrage hinzufügt mit zwei Bedingungen, die zwar jede für sich aber nicht insgesamt geklammert sind, dann werden die Bedingungen nacheinander abgearbeitet und die Seitenabfrage stört nicht mehr. :)

    Jetzt hab ich es wenigstens verstanden und kann mir überlegen wie ich das hinbekomme.

  • 1