while() mit Template Funktion

bomberpilotmp3

Erfahrenes Mitglied
Hallo,

ich habe ein kleines Problem. Ich baue derzeit eine Shoutbox auf meine weise :eek:

Nun habe ich es so gemacht, das man ein Teamplatesystem hat. Dh. man kann den Style Extern anpassen.

Nun lese ich die Einträge aus der DB mit while() aus. Problem dabei ist, das durch das Templatesystem die ganze Shoutbox doppelt angezeigt wird. Okay verstehe ich, den while() holt solange ein result, bis keins mehr lieferbar ist.

Aber hat jemand eine Idee wie ich das besser lösen kann mit Templatesystem?

Hier nunmal der Code:

PHP:
<? 
       $template = @implode("", file("index.htm")); 
       $template = str_replace("[Seitenname]", $seitenname, $template); 
       $template = str_replace("[Datum]", date("d.m.Y H:i:s", time()), $template); 

       $auswaehlen = @mysql_query("select * from postings order by `time` desc limit 0, 5"); 

       while($ausgeben = @mysql_fetch_assoc($auswaehlen)) { 

       // Funktion 'replace' includen 
       @require_once("functions/function.replace.php"); 

       $template = str_replace("[posting_name]", $ausgeben['name'], $template); 
       $template = str_replace("[posting_mail]", $ausgeben['mail'], $template); 
       $template = str_replace("[posting_time]", $ausgeben['time'], $template); 
       $template = str_replace("[posting_message]", $message_ersetzen, $template); 
       echo ($template); 
   } 
?>

Ich danke für Hilfe :)

Gruß Michael
 
es liegt warscheinlich daran das du echo in der Schleife hast und somit sich alles wieder holt... wenn du das echo aus der Schliefe holst musst du die ergebnisse aus der schleife per .= (punkt gleich) auslesen... da dadruch ja wie man weis bei PHP mehrere gleiche ströme ausgeben werden

und ich glaube das es mit der tpl lösung einwandfrei funktioniert, da du ja immer nur ein eintrag reinbekommst, da es ja nur einmal bspw. die variable inder html datei gibt: [posting_name]


MfG Gunah

 
Du musst bei jedem Durchlauf die unveränderte Vorlage neu laden.
PHP:
// Funktion 'replace' includen
@require_once("functions/function.replace.php");
$template = file_get_contents('index.html');
$template = str_replace("[Seitenname]", $seitenname, $template);  
$template = str_replace("[Datum]", date("d.m.Y H:i:s", time()), $template);

$auswaehlen = @mysql_query("select * from postings order by `time` desc limit 0, 5");
while($ausgeben = @mysql_fetch_assoc($auswaehlen)) {
	$tmp = $template;
	$tmp = str_replace("[posting_name]", $ausgeben['name'], $tmp);
	$tmp = str_replace("[posting_mail]", $ausgeben['mail'], $tmp);
	$tmp = str_replace("[posting_time]", $ausgeben['time'], $tmp);
	$tmp = str_replace("[posting_message]", $message_ersetzen, $tmp);
	echo $tmp;
}
Mit dem Fehlerkontrolloperator solltest du übrigens nur in Ausnahmefällen arbeiten und stattdessen lieber die Ausgabe der Fehlermeldungen deaktivieren (siehe display_errors-Konfigurationsoption), sie aber dennoch zur Fehlerbeseitigung protokollieren (siehe log_errors-Konfigurationsoption).
 
Hat keiner eine Lösung? Wäre dankbar, mir ist es eigendlich egal welche Methode. Ich möchte auf jedenfall ein Template erzeugen so das man das extern ändern kann :)
 
Er gibt das Template soviel aus, soviel Einträge in DB sind. Sind also 5 Einträge in der Datanbank, zeigt er 5x das Forumlar an sprich das Template.
 
Zurück