Zum Inhalt springen

Selectbox mit Werten aus Calendar Base füllen

Erstellt am 25. November 2014 · 5 Antworten · letzte Antwort am 12. Dezember 2014

Tags: Powermail, Kalender & Termine, TYPO3 6, Frage

paprika ·

Hallo liebe Experten

Ich möchte ein einem Powermail Formular Werte aus Calendar Base zur Auswahl stellen. Folgende Anleitung hat mir dabei schon sehr viel weiter geholfen: #77259

Hier mein TS:

#Feld Veranstaltung in Selectbox von Powermail 
lib.veranstaltung = COA_INT
lib.veranstaltung {
10 = TEXT
10.value = <label  class="powermail_label" title="" for="uid28"><b>Veranstaltung</b></label>

20 = CONTENT
20.wrap = <select id="uid28" name="tx_powermail_pi1[uid28]" size="1" class="powermail_field powermail_select" >|</select>
20 {
table = tx_cal_event
select {
pidInList = 28
orderBy = start_date
}
renderObj = COA
renderObj {
10 = COA
10 {
10 = TEXT
10 {
field = title
wrap = <option  value="|" >
}
20 = TEXT
20 {
field = start_date
wrap = |
}
30 = TEXT
30 {
field = title
wrap = &nbsp;&nbsp;|</option>
}
}
}
}
}

Nun möchte ich jedoch nicht alle Veranstaltungen in der Auswahlliste sehen, sondern lediglich diejenigen deren start_date >= Heute. Wie kann ich diese Abfrage anpassen?

Vielen Dank für die Hilfe

einpraegsam.​net ·

Zu deiner eigentlichen Frage findest du hier die Lösung:
#82544
Dort ist beschrieben, wie man eine Datenbankabfrage in TypoScript bauen kann, die eine Zeit berücksichtigt

Ansonsten musst du in powermail 2.1 nicht mehr das ganze HTML selber zusammenschrauben (zumal dein Beispiel auch nur geht, wenn der Marker des Feldes auch wirklich {uid28} heißt). Das geht einfacher - siehe http://www.nicolas-stey.de/typo3-cms/eintrag/powermail-2-prefill-von-select-checkbox-und-co.html

paprika ·

Vielen Dank, ich komme der Sache näher. Zumindest weiss ich nun wie man die Bedingungen der Abfrage im Typoscript darstellt. :-)
Nur das mit der Datumsabfrage krieg ich nicht hin. Die Tabelle tx_cal_event speichert das Datum als Integer Wert. Bsp:

select.where = start_date >= 20141126

Zeigt mir alle Datensätze ab 26.11.2014 (Bsp. Heute). Soweit so gut.

Wie ersetze ich nun 20141126 durch das aktuelle Datum umgewandelt in eine 8-stellige Zahl?
Und wie kann ich im Gegenzug 20141126 wieder als Datum ausgeben?

paprika ·

ich kriegs nicht hin :-(
Ich habe die Hinweise berücksichtigt und habe nun:

lib.kurs = CONTENT
lib.kurs {
    table = tx_cal_event
    select {
      pidInList = 8
      where = start_date >= date:ymd
    }
    renderObj = COA
    renderObj {
      10 = COA
      10 {
        10 = TEXT
        10.dataWrap = {field:start_date} {field:title}[\n]
      }
    }
  }

was leider immer noch nicht funktioniert.

where = start_date >= date:ymd

Wäre wirklich mega dankbar für nochmal etwas Hilfe, mir läuft die Zeit davon.

paprika ·

Für alle die dasselbe oder ein ähnliches Problem haben, hier nun meine Lösung:

    #Feld Veranstaltung in Selectbox von Powermail
    lib.veranstaltung = COA_INT
    lib.veranstaltung {
    10 = TEXT
    10.value = <label class="powermail_label" title="" for="veranstaltung"><b>Veranstaltung</b></label>
     
    20 = CONTENT
    20.wrap = <select id="veranstaltung" name="tx_powermail_pi1[veranstaltung]" size="1" class="powermail_field powermail_select" >|</select>
    20 {
    table = tx_cal_event    
    select{
    	pidInList = 28
    	where.data = date:Ymd
        where.wrap = start_date >= |
        orderBy = start_date 
    } 

    renderObj = COA
    renderObj {
    10 = COA
    10 {
    10 = TEXT
    10 {
    field = title
    wrap = <option value="|">
    }
    #Integer Datum in lesbares Format umwandeln
    #Tag
    20 = TEXT
    20 {
    field = start_date    
    stdWrap.substring = 6,2
    wrap = |.
    }
    #Monat
    30 = TEXT
    30 {
    field = start_date    
    stdWrap.substring = 4,2
    wrap = |.
    }
    #Jahr
    40 = TEXT
    40 {
    field = start_date    
    stdWrap.substring = 0,4   
    }
    #Titel der Veranstaltung
    60 = TEXT
    60 {
    field = title
    wrap = &nbsp;&nbsp;&nbsp;&nbsp;|</option>
    }
    }
    }
    }
    }