Hallo Freunde,
ich bastel mal wieder ein bisserl an einer Extension herum.
Meine Ausgabe der WHILE Schleife zeigt immer nur den letzten Eintrag. Ich weiß, dass ich da irgendwie erst eine Zwischenspeicherung vornehmen muß, aber meine Versuche diesbzgl. scheiterten #angry# .
Leider kann ich mit den meisten Codeschnipseln welche ich gefunden habe nicht viel anfangen, weil die Funktion nach der Anleitung "extension_Schulung_doku.pdf" aufgebaut wurde.
Die unterscheidet sich aber von der z.B. Player Ext. (bei der die Ausgabe in 2 Teilen aufgebaut ist (Ausgabe und GET ITEMS).
Bei mir siehts so aus:
function displayAnzeigenAlle() {
$template = $this->cObj->getSubpart($this->templateCode,"###TEMPLATE_DISPLAY_ANZEIGENALLE###");
$query = "SELECT * FROM tx_spiele_main";
$res = mysql(TYPO3_db,$query);
$marks = array();
while($row = mysql_fetch_assoc($res)) {
$marks["###HERSTELLER###"] = $row['hersteller'];
$marks["###UEBERSCHRIFT###"] = $row['ueberschrift'];
}
$content = $this->cObj->substituteMarkerArrayCached($template, $marks);
return $content;
}
Kann mir jemand auf die Sprünge helfen, wo und wie ich die Zwischenspeicherung hier einbauen kann?
Hallo,
1 Beitrag über dir in gleichen Kategorie > html templates
georg
ist ja auch kein Wunder, Du überschreibst die Marker in der Schleife jedesmal ohne sie irgendwo zu benutzen.
Danke Euch Beiden, das ist es ja!!!
Ich muß für die Ausgabe eine Zwischenspeicherung erzeugen.
Hallo Just2be : Hab das auch schon mit ein paar Codes daraus versucht!
Mir fällt da der
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
auf, welcher (so siehts für mich als PHP Experte :-) aus) die Funktion der Whileschleife ausführen soll....
Hallo steffenk: welche auch ausgeführt wird, aber eben immer überschrieben bis zur Letzten. Die wird dann dargestellt.
Hab das Problem schon erkannt :-) (denke ich)
Nur wo ich die Zwischenspeicherung coden muß, ist das, was mir nicht gelingt.
Ich hatte auch schon ein 2tes Array aufgebaut, welches das Ergebnis der Schleife hätte anzeigen sollen, aber auch wieder nur die letze Eingabe herausbekommen.
Geht das überhaupt so wie ich das angefangen habe? oder muß ich doch die Funktionen aufteilen, also so wie z.B. in der Player Extension? Ich hatte mir extra mal eine TESTEXT. gebaut, welche so aufgebaut ist wie jetzt aus dem TUT.
Da sind eben die Funktionen in Einem zusammengefasst. (also "GetItems" und"Funktion Main" sind nicht getrennt).
Lieben Gruß
Hallo,
du solltest dir das Bsp unter "You can combine all 3 markers:" anschauen, das behandelt genau das.
georg
ps: mein nick hat kein 'e'
Hallo just2b ( ohne e) :-) sorry!!
It works well :-)
Vielen Dank!!!!!!!!!!!!!!
Hab immer noch nicht so Recht die Ahnung warum #giggle# , aber .........
hauptsache es läuft.
Ich denke mal mein Fehler war, das ich versucht habe den Content nur auf einem Subpart auszugeben. Jetzt habe ich Subpart und ITEM und es geht.
Hier nochmal mein Code:
function displayAnzeigenAlle() {
$template['total'] = $this->cObj->getSubpart($this->templateCode,"###TEMPLATE_DISPLAY_ANZEIGENALLE###");
$template['item'] = $this->cObj->getSubpart($this->templateCode,"###ITEM###");
$query = "SELECT * FROM tx_spiele_main";
$res = mysql(TYPO3_db,$query);
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
# Build content from template
$markerArray["###HERSTELLER###"] = $row['hersteller'];
$markerArray["###UEBERSCHRIFT###"] = $row['ueberschrift'];
$content_item .= $this->cObj->substituteMarkerArrayCached($template['item'], $markerArray);
}
$subpartArray['###CONTENT###'] = $content_item;
$content = $this->cObj->substituteMarkerArrayCached($template['total'], array(), $subpartArray);
return $content;
}
Also nochmal DANKE!!
und das HTML dazu (nicht alle Marker sind erfasst, war nur für Testzwecke)
<!-- ###TEMPLATE_DISPLAY_ANZEIGENALLE### begin -->
<table width="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="#006699" bgcolor="#000000">
<!-- ###CONTENT### -->
<!-- ###ITEM### -->
<tr bgcolor="#EEF3F9">
<td width="140" height="66" align="center" valign="middle" bgcolor="#FF00FF"><font color="#990000">###PS###</font></td>
<td align="left" valign="top" bgcolor="#EEF3F9"> <table width="100%" border="0" cellspacing="1" cellpadding="1">
<tr>
<td bgcolor="#336666"><font color="#CCCCCC" size="2" face="Arial, Helvetica, sans-serif"><strong><font color="#FFFFFF">###HERSTELLER### ###UEBERSCHRIFT###</font></strong></font><font color="#FFFFFF" size="3" face="Arial, Helvetica, sans-serif</font></td>
</tr>
</table>
<div align="center"></div>
<div align="left">
<table width="100%" border="0" cellspacing="1" cellpadding="1">
<tr>
<td bgcolor="#FF0000"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">###EINLEITUNGSTEXT###</font>
<font size="1" face="Arial, Helvetica, sans-serif"><br>
###HAUPTTEXT###<br>
###LINK###</font></td>
</tr>
</table>
</div>
</td>
</tr>
<!-- ###ITEM### -->
<!-- ###CONTENT### -->
</table>
<!-- ###TEMPLATE_DISPLAY_ANZEIGENALLE### end -->