spezielle Template Frage

melistik

Erfahrenes Mitglied
Sodalle. Ich bekomme schon Templates hin und es klappt auch alles ganz gut,
doch nun möchte ich sozusagen eine Marke zb. {infolist} durch eine for Funktion
so lange mit daten spicken und dann erst die Tabelle schliessen.
Ich kann mir denken, dass das keiner Verstanden hat deshalb der Code.
PHP:
 ------------ so rufe ich mein Template bisher auf ---------
$template_admin_list = "templates/template_list_admin.html";
    for ($i = ($total - ($perpage*($page-1))); $i >= ($total - (($perpage*$page)-1)) ;$i--)
    {
    $zeile = $lines[$i];
    list($name,$email,$icq,$homep,$text,$datum) = explode ("|--|", $zeile);
    
    $open_admin_list = fopen ($template_admin_list, "r");
    $admin_list = fread($open_admin_list, filesize($template_admin_list));
    $admin_list = ereg_replace("{infolist}","<A HREF='$PHP_SELF?db=$id&i=$i'>$name  <i>$datum<i></A>",$admin_list);
    $admin_list = stripslashes($admin_list);
    fclose($open_admin_list);
    echo $admin_list;
Doch in diesem Fall wird der Code von template_list_admin.html
PHP:
<center><table border="0" width="500">
	<tr>
		<td width="50"></td>
		<td width="450">{infolist}</td>
	</tr>
</table>
</center>
immer Komplette aufgerufen und ausgegeben und somit mehrere Tabelle erstellt.
Ich möchte es aber so machen, dass nur ein Tabelle entsteht.
Wie kann man soetwas machen, ohne mehrere Templates dafür zu erstellen ?

---------------------------------------------------------------------------------------------------
Noch fürs bessere Verständniss.
PHP:
<center><br><table border="0" width="500">
	<tr>
		<td width="50"></td>
		<td width="450"><A HREF='?db=edit&i=6'>kleiner freak  <i> 30.10.03 <i></A></td>
	</tr>
</table><br>
</center><center><br><table border="0" width="500">
	<tr>
		<td width="50"></td>
		<td width="450"><A HREF='?db=edit&i=5'>teste mal  <i> 30.10.03 <i></A></td>
	</tr>
</table><br>
</center><center><br><table border="0" width="500">
	<tr>
		<td width="50"></td>
		<td width="450"><A HREF='?db=edit&i=4'>nahne  <i> 30.10.03 <i></A></td>
	</tr>
</table><br>
</center><center><br><table border="0" width="500">
	<tr>
		<td width="50"></td>
		<td width="450"><A HREF='?db=edit&i=3'>ggg  <i> 30.10.03 <i></A></td>
	</tr>
</table><br>
</center>
So sieht es bisher aus.
So soll es aussehen
PHP:
<center><br><table border="0" width="500">
	<tr>
		<td width="50"></td>
		<td width="450"><A HREF='?db=edit&i=5'>teste mal  <i> 30.10.03 <i></A>
		<td width="50"></td>
		<td width="450"><A HREF='?db=edit&i=4'>nahne  <i> 30.10.03 <i></A>
		<td width="50"></td>
		<td width="450"><A HREF='?db=edit&i=3'>ggg  <i> 30.10.03 <i></A>
		<td width="50"></td>
		<td width="450"><A HREF='?db=edit&i=5'>teste mal  <i> 30.10.03 <i></A>
		<td width="50"></td>
		<td width="450"><A HREF='?db=edit&i=4'>nahne  <i> 30.10.03 <i></A>
		<td width="50"></td>
		<td width="450"><A HREF='?db=edit&i=3'>ggg  <i> 30.10.03 <i></A></td>
	</tr>
</table><br>
</center>
 
Das geht nur entweder mit einer weiteren template, oder mit einer template engine, aber template engine davon rat ich auf jedenfall ab, weil die relativ kompliziert zu verwenden sind,..,.

Alternativ kannst du natürlich auch das template mit nem XML parser bearbeiten, aber das ist sicher nicht das was du willst...

Aber wenn du ansätze von einer template engine benutzen willst, so musst du am anfang von dem stück das sich widerhohlen soll im template eine marke setzen und am ende wieder, dann musst du das template aufspalten, ersetzen und dann zusammenfügen...

das steht also echt nicht dafür, würde hier viel eher ein weiteres templatefile benutzen
 
engine = klasse? :)

es gibt etliche template-klassen, die in der anwednung sehr sehr komfortabel sind...smarty, templatepower, phpbb,...

du benötigst sogenannte blöcke, die während des schleifendurchlaufs immer wieder und wieder belegt und angehangen werden.

mir bekannte klassen regeln das mit html-kommentaren, in welchen eine START- und END-anweisung steht:
Code:
<!--Bsp. für die Klasse TemplatePower -->

<!-- START BLOCK : Block1 -->
<tr>
<td>{hier_der_wert}</td>
</tr>
<!-- END BLOCK : Block1 -->
würde in einer schleife so angesprochen werden:
PHP:
//Template initialisieren
$tpl = new TemplatePower("templates/mein_template.tpl");
for($x=0;$x<10;$x++)
{
$tpl->newBlock("Block1");
$tpl->assign(array(
'hier_der_wert' => $x,
));
}

warum also das rad neu erfinden? lade dir eine etablierte klasse herunter und lerne damit umzugehen -es ist wirklich nicht schwierig.

gruß bloddy
 
kann man sonst auch nicht einfach eine Funktion für {infolist} einbringen ?
Ich habe es schon mal versucht, hat aber leider nicht so ganz funktioniert :(

so: $admin_list = ereg_replace("{infolist}","liste ($name,$datum)",$admin_list);

geht soetwas überhaupt ? Denn ich wollte eigentlich ohne Klassen arbeiten.
 
Zuletzt bearbeitet:
Wie kann man sonst mehrere Variablen zu einer zusammenfügen ?
denn so könnte man auch mehre Infos durch einen Platzhalter {infolist} ersetzten.
Ich habe nirgends diese Funktion gefunden. Doch ich bin mir ziehmlich sicher
das es diese gibt. Ich hoffe man auf Antwort :)
 
Zurück