Zum Inhalt springen

MySQL-Select für eigene content Extension

Erstellt am 19. August 2005 · 2 Antworten · letzte Antwort am 20. August 2005

Tags: Inhaltselemente, Datenbank, Frage

snoo ·

Hi zusammen,
ich hab mit Hilfe des Kickstarters eine extension erstellt in der die Datenbanktabelle "tt_content" um entsprechende Felder erweitert wird. Das Hinzufügen neuer Datensätze dieses Contenttyps klappt auch ohne Probleme.
Die Ausgabe der Datenbankinhalte klappt aber im Moment nur für den ersten Eintrag einer Seite.
Hier ein Auszug meiner Abfrage:

        function main($content,$conf)   {



                $this->conf=$conf;
                $this->pi_setPiVarDefaults();
                $this->pi_loadLL();

                $sprache = $_GET['L'];
                if($sprache=="") {
                        $sprache = 0;
                }
                else { }

                $query = "SELECT * FROM tt_content WHERE pid =".$GLOBALS["TSFE"]->id. " AND CType='user_CC_header_pi1' AND deleted = 0 AND sys_language_uid = $sprache";
                $res = mysql(TYPO3_db,$query);
                $row = mysql_fetch_object($res);

                return "<div align="right" class="version">
                <b>Version:</b><i> ".$row->user_CCheader_version."</i>
                </div>
                <div class="header">
                <u>Author:</u><i> ".$row->user_CCheader_autor."</i> 
                <u>E-Mail:</u><i> ".$row->user_CCheader_email."</i> 
                <u>Generated at:</u><i> ".date("d.m.Y H:i:s", $row->user_CCheader_date)."</i><br />
                <i>".$row->user_CCheader_comment."</i>
                </div><br />
                ";



        }
}

Falls ich mehrere Elemente dieses Content-Typs auf einer Seite habe wird immer nur der Inhalt des ersten Datensatzes angezeigt.

Wie erreiche ich es nun die Daten richtig auszugeben bei zB folgender Seitenstruktur:

meine_Extension
typo3 content element
meine_Extension <- an dieser Stelle werden die DB-Inhalte des ersten Datensatzes ausgegeben ich will aber den zweiten
typo3 content element

Ich hoffe einer von euch versteht mein Problem und kann mir einen Tipp geben

Gruss
Stefan Neefischer

SaarFritz ·

Hallo!

Ungeachtet, ob dies der optimale Lösungsansatz ist:

In $GLOBALS["TSFE"]->id steht die ID der Seite (Tabelle pages). In tt_content stehen die einzelnen Inhalte der Seite mit der SeitenID als Fremdschlüssel (Feld PID). Bei Deiner Abfrage bekommst Du, wenn mehr als ein Content für diese Seite definiert wurde alle Inhalte - mehrere Results. Jedoch gibts Du immer nur den ersten Resultsatz aus.

Lösung: Abfrage des Contents über die ContentID (Feld id in tt_content). Die ContentID müsste glaube ich in $GLOBALS['TSFE']->currentRecord drin stehen (Format: tt_content:123).

Gruss

snoo ·

Danke!
Das mit dem UID Feld in der tt_content hat ich mir auch schon gedacht - hatte bisher nur keine Ahnung wie ich das auslesen kann.
Hab jetzt meinen Code so erweitert:

$string = $GLOBALS['TSFE']->currentRecord;
                $string = ereg_replace('tt_content:', '', $string);

und dann noch der select:

$query = "SELECT * FROM tt_content WHERE pid =".$GLOBALS["TSFE"]->id. " AND CType='user_CC_header_pi1' AND deleted = 0 AND sys_language_uid = $sprache AND uid=".$string."";

Läuft jetzt so wie ich mir das vorstelle.
🙂