Hallo,
ich habe eine kleine Templateklasse.
Leider habe ich da ein Problem mit den Loops.
PHP-Code:
In meinem template sieht das Ganze so aus:
HTML-Code:
{loop name="test"}
<div class="out1">{$inhalt[test]}</div>
{/loop name="test"}
Aufrufen tue ich das mit:
PHP-Code:
Das Funktioniert auch super.
Jetzt habe ich aber das Problem, dass ich mehrere Sachen aus einer DB hole und das Alles gerne in einem Loop ausgeben würde.
Mein html würde dann so aussehen
HTML-Code:
{loop name="test"}
<div class="out1">{$inhalt[test]}</div>
<div class="out1">{$name[test]}</div>
<div class="out1">{$status[test]}
</div> {/loop name="test"}
Mein Array sieht dann so aus:
PHP-Code:
Das Problem dabei ist, dass nur jeweils der letzte teil des Arrays in meinem Template erscheint.
Egal was ich versuche ich schaffe es nicht die function so umzubauen, dass sie mit dem mehrdimensionalen Array zurecht kommt.
Kann mir da wer helfen??
Danke vorab
ich habe eine kleine Templateklasse.
Leider habe ich da ein Problem mit den Loops.
PHP-Code:
PHP-Code:
function compile_loop($name, $replaces)
{
$open = "\{loop name=\"$name\"}";
$close = "\{/loop name=\"$name\"}";
$start_pos = strpos($this->content, $open);
$close_pos= strpos($this->content, $close);
if($start_pos == false && $close_pos == false) die("Der Loop <b>\"$name\"</b> wurde nicht gefunden");
elseif($start_pos == false && $close_pos == true) die("Der Loop <b>\"$name\"</b> wurde nicht geöffnet");
elseif($start_pos == true && $close_pos == false) die("Der Loop <b>\"$name\"</b> wurde nicht geschlossen");
$buffer = substr($this->content, $start_pos + strlen($open), $close_pos - ($start_pos + strlen($open)));
$compiled = "";
if (count($replaces)) {
foreach($replaces as $array) {
foreach ($array as $k => $v) {
$tag = '{$'.$k.'['.$name.']}';
$tmp = str_replace($tag, $v, $buffer);
}
$compiled .= $tmp;
}
}
$this->content = str_replace($open . $buffer . $close, $compiled, $this->content);
}
HTML-Code:
{loop name="test"}
<div class="out1">{$inhalt[test]}</div>
{/loop name="test"}
Aufrufen tue ich das mit:
PHP-Code:
PHP-Code:
while($rs= mysql_fetch_array($result, MYSQL_ASSOC)){
array_push($kk, Array(
"inhalt" =>$rs["irgendwas"]
)
);
}
$tpl->compile_loop("test",$kk);
Jetzt habe ich aber das Problem, dass ich mehrere Sachen aus einer DB hole und das Alles gerne in einem Loop ausgeben würde.
Mein html würde dann so aussehen
HTML-Code:
{loop name="test"}
<div class="out1">{$inhalt[test]}</div>
<div class="out1">{$name[test]}</div>
<div class="out1">{$status[test]}
</div> {/loop name="test"}
Mein Array sieht dann so aus:
PHP-Code:
PHP-Code:
while($rs= mysql_fetch_array($result, MYSQL_ASSOC)){
//Ordnername
array_push($kk, Array(
"inhalt" =>$rs["inhalt"],
"name" => $rs["name"],
"status"=>$rs["staus"]
)
);
}
$tpl->compile_loop("test",$kk);
Egal was ich versuche ich schaffe es nicht die function so umzubauen, dass sie mit dem mehrdimensionalen Array zurecht kommt.
Kann mir da wer helfen??
Danke vorab