[Frage] Select abfrage liefert keine Einträge TYPO3-Version: 6.2.7

  • XTender XTender
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    15. 04. 2015, 12:11

    Hallo,

    ich habe ein Problem mit einem DB Select per Typoscript grenzt schon fast an ratlosigkeit.
    Und zwar habe ich folgende kleine Abfrage:

    1. 31 = CONTENT
    2. 31 {
    3. table = tx_cal_event
    4. selectFields = title
    5. max = 1
    6. where uid = 1
    7. }
    8. }
    9.  
    10. 31.renderObj = COA
    11. 31.renderObj {
    12. wrap = |
    13. 1 = TEXT
    14. 1.field = title
    15. }

    Jedenfalls bekomme ich keinerlei Werte zurückgegeben und vernünftig debuggen, das man sich z.b. die SQL Abfrage anzeigen lassen kann, habe ich auch nicht entdeckt.

    Weiß jemand rat?

    - Paul

  • Hilfreichster Beitrag

  • Chrissli Chrissli
    Jedi-General
    1 x
    1016 Beiträge
    28 Hilfreiche Beiträge
    16. 04. 2015, 09:21 - Hilfreichster Beitrag

    Ich würde mal darauf tippen, das Einträge gesucht werden, die auf der aktuellen Seite hinterlegt sind und das das Problem ist.
    Debuggen: Stelle den Wert für im Install-Tool für das MySQL-Debugging einsprechend ein ( nur Fehlerhafte anzeigen ) und mach deine Query absichtlich kaputt ODER
    Debugge alle und Bau in die Query etwas ein das sich leicht mit der Browsersuche finden lässt ( andWhere = 666=666 )

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


  • 1
  • toifel toifel
    Jedi-Ratsmitglied
    0 x
    831 Beiträge
    96 Hilfreiche Beiträge
    15. 04. 2015, 15:51

    Zeile 7 ist doppelt fehlerhaft.
    Die korrekte Syntax wäre: where [b]=[/b] uid = 1.

    Daraus entsteht dann aber ein komisches SQL-statement.. besser wäre select.uidInList = 1... das where kann dann komplett raus.

    http://docs.typo3.org/typo3cms/TyposcriptReference/Functions/Select/Index.html

  • XTender XTender
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    15. 04. 2015, 16:15

    Das mit dem '=' ist mir dann auch aufgefallen.
    Leider hat es keinerlei Verbesserung ergeben :/

  • Chrissli Chrissli
    Jedi-General
    1 x
    1016 Beiträge
    28 Hilfreiche Beiträge
    16. 04. 2015, 09:21

    Ich würde mal darauf tippen, das Einträge gesucht werden, die auf der aktuellen Seite hinterlegt sind und das das Problem ist.
    Debuggen: Stelle den Wert für im Install-Tool für das MySQL-Debugging einsprechend ein ( nur Fehlerhafte anzeigen ) und mach deine Query absichtlich kaputt ODER
    Debugge alle und Bau in die Query etwas ein das sich leicht mit der Browsersuche finden lässt ( andWhere = 666=666 )

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

  • XTender XTender
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    17. 04. 2015, 11:12

    Danke für den sehr wertvollen tip.
    Tatsächlich schaut die Query folgendermaßen aus:

    1. SELECT title, tx_cal_event.uid as uid, tx_cal_event.pid as pid, tx_cal_event.t3ver_state as t3ver_state FROM tx_cal_event WHERE tx_cal_event.uid=1 AND tx_cal_event.pid IN (196) AND tx_cal_event.deleted=0 AND tx_cal_event.t3ver_state<=0 AND tx_cal_event.pid<>-1 AND tx_cal_event.hidden=0 AND tx_cal_event.starttime<=1429261740 AND (tx_cal_event.endtime=0 OR tx_cal_event.endtime>1429261740)

    dieser Teil ist der das wohl verhindert was ich möchte:

    1. AND tx_cal_event.pid IN (196)

    Frage jetzt. Wie kann ich das verhindern? Kann man keine 100%ige Custom Query machen? :/

  • Chrissli Chrissli
    Jedi-General
    1 x
    1016 Beiträge
    28 Hilfreiche Beiträge
    20. 04. 2015, 14:19

    pid ist hier immer die Id der aktuellen Seite.
    Wenn deine Einträge eine Storage-Seite haben kannst zu z.b. mit

    1. ...
    2. pidInList = 123
    3. }

    diese Id verwenden.
    Alternativ kannst du mit

    1. pidInList.cObject = TEXT
    2. pidInList.cObject {
    3.  
    4. }
    5. }

    das cObject von pidInList überschreiben, vorrausgesetzt das hilft dir weiter :P

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

  • XTender XTender
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    21. 04. 2015, 09:28

    Tausend dank.

    Hier mal mein gesamter funktionierender Code

    1. 30 = CONTENT
    2. 30 {
    3. table = tx_cal_event
    4. selectFields=title
    5. pidInList.cObject = TEXT
    6. pidInList.cObject.value = 191
    7. where.insertData=1
    8. where.wrap = l18n_parent = |
    9. where.data = GP:tx_cal_controller|uid
    10. }
    11.  
    12. renderObj = COA
    13. renderObj {
    14. stdWrap.if.isTrue.data = GP:tx_cal_controller|uid
    15. wrap = <a href="#">|</a>
    16. 1 = TEXT
    17. 1.field = title
    18. }
    19. }

  • 1