Zum Inhalt springen

Select abfrage liefert keine Einträge

Erstellt am 15. April 2015 · 6 Antworten · letzte Antwort am 21. April 2015

Tags: Datenbank, TYPO3 6.x, Frage

XTender ·

Hallo,

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

31 = CONTENT
  31 {
  table = tx_cal_event
  select {
    selectFields = title
    max = 1
    where uid = 1
  }
}
  
  31.renderObj = COA
  31.renderObj {
    wrap = |
    1 = TEXT
    1.htmlSpecialChars = 1
    1.field = title
  }

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

Chrissli ·

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 )

XTender ·

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

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:

AND tx_cal_event.pid IN (196)

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

Chrissli ·

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

...
select {
  pidInList = 123
}

diese Id verwenden.
Alternativ kannst du mit

select {
  pidInList.cObject = TEXT
  pidInList.cObject {

  }
}

das cObject von pidInList überschreiben, vorrausgesetzt das hilft dir weiter 😛

XTender ·

Tausend dank.

Hier mal mein gesamter funktionierender Code

30 = CONTENT
 30 {
    table = tx_cal_event
    select {
      selectFields=title
      pidInList.cObject = TEXT
      pidInList.cObject.value = 191
      where.insertData=1
      where.wrap = l18n_parent = |
      where.data = GP:tx_cal_controller|uid
    }
  
    renderObj = COA
    renderObj {
      stdWrap.if.isTrue.data = GP:tx_cal_controller|uid
      wrap = <a href="#">|</a>
      1 = TEXT
      1.htmlSpecialChars = 1
      1.field = title
    }
  }