Hallo
Habe eine grundsätzliche Frage zur Vorgehensweise.
Ich möchte Daten aus einer Tabelle mittels Typo3 auslesen und dann an einer bestimmten Stelle der Seite ausgeben (neben anderem Content, der aus der tt_content kommt). Einzige Bedingung: Es soll der Datensatz angezeigt werden, dessen Datum im DATE Feld dem aktuellen Datum (des Servers) entspricht. So!
Ich habe also in der Typo3-Datenbank eine neue Tabelle angelegt mit Namen tt_inhalt, die u.a. ein Feld vom Typ DATE (Bezeichner: datum) enthält.
Dann habe ich die Datensätze in die Tabelle geladen. Es sind somit 365 Datensätze, für jeden Tag des Jahres genau ein Datensatz, eindeutig unterschieden durch das Datum.
Wie könnte ich denn nun vorgehen, damit ich den für den aktuellen Tag gültigen Datensatz aus der Tabelle tt_inhalt auslesen und angezeigt bekomme.
Der SQL-Befehl in phpMyAdmin lautet:
SELECT row1,row2,row3,row4 FROM tt_inhalt WHERE datum = CURRENT_DATE()
bzw. in neueren MySQL Versionen:
SELECT row1,row2,row3,row4 FROM tt_inhalt WHERE DATE(datum) = CURRENT_DATE()
Über Hilfe wäre ich sehr dankbar, gerne auch für Denkanstöße. Bin in den offiziellen Publikationen noch nicht so zuhause, dass ich das alles gleich verstehe.
Vielen Dank
Wenn du Inhalte aus einer eigenen Tabelle anzeigen willst, dann verwendest du in TypoScript das Objekt CONTENT oder RECORDS.
Probier einmal folgendes:
temp.meinInhalt = CONTENT
temp.meinInhalt {
table = tt_inhalt
select {
where = DATE(datum)=CURRENT_DATE()
}
renderObj = COA
renderObj {
10 = TEXT
10.field = row1
20 = TEXT
20.field = row2
30 = TEXT
30.field = row3
40 = TEXT
40.field = row4
}
}
Du must das Objekt natürlich noch einem Marker oder Subpart zuweisen.
Eine Frage am Rande: Wie kommen denn die Daten in deine Tabelle hinein?
Danke schonmal für die Antwort.
Habe es so eingegeben, aber es scheint noch ein Grundproblem vorhanden zu sein. Will ich das Ergebnis betrachten, erhalte ich folgende Fehlermeldung:
NO entry in the $TCA-array for the table "tt_losungen". This means that the function enableFields() is called with an invalid table name as argument.
Anscheinend muss ich die Tabelle tt_inhalt irgendwie in Typo3 bekannt machen.
Aber wie?
By the way: Die Daten erhalte ich als csv-Datei. Den Inhalt wandle ich dann um in SQL-Statements (INSERT) und damit wird das Ganze einfach importiert. Fertig! Also, einmal im Jahr manueller Aufwand von ca. 5 min, das ist verkraftbar!
Gruß, Tobias
tobilot schrieb
Anscheinend muss ich die Tabelle tt_inhalt irgendwie in Typo3 bekannt machen.
Aber wie?
Am besten, indem du sie gleich mit dem Kickstarter anlegst. Bei den Videos auf typo3.org findest du welche zum Kickstarter.
Wenn du keine TYPO3-Tabelle verwenden willst (die dann auch Felder wie uid und pid und tstamp etc. enthält), dann kannst du die Inhalte auch nicht mit TypoScript auslesen, sondern musst php dafür nehmen - welches du wiederum am besten über den Kickstarter einbindest ;-).
tobilot schrieb
By the way: Die Daten erhalte ich als csv-Datei. Den Inhalt wandle ich dann um in SQL-Statements (INSERT) und damit wird das Ganze einfach importiert. Fertig! Also, einmal im Jahr manueller Aufwand von ca. 5 min, das ist verkraftbar!
Ok, darum war's dir auch wurscht, dass du keine Backendformulare hast.
Vielen Dank, solange ein Licht am Ende des Tunnels scheint, gehts mit frohem Mut vorwärts.
Ich mach mich dann mal über den Kickstarter her.
Gruß
Tobias
PS: Was meintest Du mit Backendformularen? Oder erübrigt sich die Frage mit dem Kickstarter?
tobilot schrieb
PS: Was meintest Du mit Backendformularen? Oder erübrigt sich die Frage mit dem Kickstarter?
Wenn du die Tabelle mit dem Kickstarter anlegst, dann bekommst du automatisch auch Backendformulare mit geliefert, mit denen du - wenn du es denn brauchen würdest - die Inhalte deiner Datensätze pflegen kannst. So wie z.B. die News im Backend eingegeben werden.
Auf der DVD in meiner Fußzeile sind übrigens zwei Videos, die sich mit dem Thema "eigene Tabelle mit Kickstarter erstellen und per TypoScript ausgeben" befassen ;-).
Meinst Du die Möglichkeit, im Liste-Modul Datensätze anzulegen?
Dort kann ich aber nur immer einen Datensatz auf einmal anlegen oder?
Oder geht das irgendwie auch in einem Rutsch?
Wahrscheinlich müsste das dann mit einem extra php-script programmiert werden.
Oder halt doch direkt wieder z.B. in phpMyAdmin. Hier müsste ich ja trotzdem die Felder in der vom Kickstarter angelegten Tabelle, die ich selbst definiert habe, "befüllen" können.
Mal sehen.
Im Moment bin ich noch damit beschäftigt, das user-php-script, welches der Kickstarter erzeugt hat, zu verstehen und danach anzupassen.
Ich habs immerhin schon geschafft, dass der Content dargestellt wird. Dein TypoScript Vorschlag hat mir insofern schonmal geholfen.
Die Abfrage-Klausel nach dem aktuellen Datum, die hat noch nicht funktioniert. da muss ich noch eine Weile nachdenken... 😉
tobilot schrieb
Meinst Du die Möglichkeit, im Liste-Modul Datensätze anzulegen?
Ja genau.
tobilot schrieb
Dort kann ich aber nur immer einen Datensatz auf einmal anlegen oder?
Oder geht das irgendwie auch in einem Rutsch?
Ne, da bist du mit nem Import wie bisher wahrscheinlich besser bedient. Du kannst nen "Speichern und neu"-Button hinzufügen. Aber bei 365 Datensätzen... ;-)