xamunrax
Erfahrenes Mitglied
Hallo ich arbeite gerade an einer eigenen Template-klasse und habe ein Problem was sich irgendwie nicht lösen lässt zumindest nicht mit meinem PHP wissen, und zwar habe möchte ich das eine liste aus einer DB geholt wird, jede Zeile dieser liste soll aber aus einem Template geholt werden und dann in ein "haupt" template gepackt werden, unter Tutorials habe ich einen entsprechenden Post gefunden allerdings habe ich es nicht geschaft diesen in meine Klasse mit einzubauen...
Das Problem ist das er bei der Liste einfach nur den ersten Datensatz ausgibt und nicht alle 10...
Hier mal der Code
die Template Klasse (testclass.php):
So dann gibt es die Templatedatei(temp.html):
hier das Template was in die liste eingefügt werden soll (list.html)
Und hier die Ausführende PHP-Datei(test.php):
Das Problem ist das er bei der Liste einfach nur den ersten Datensatz ausgibt und nicht alle 10...
Hier mal der Code
die Template Klasse (testclass.php):
PHP:
class template{
var $main_file = "";
var $var_con_php = array();
var $var_con_html = array();
var $xvar_con_php = array();
var $xvar_con_html = array();
var $dataout = "";
function set_file($template){ // Template datei
$this->main_file = implode("", file("$template"));
return false;
}
function set_var($htmlvar, $phpvar){ // Platzhalter, Inhalt
if(!$htmlvar){$htmlvar=1;}if(!$phpvar){$phpvar=1;}
$n_arr1 = "";
$n_arr2 = "";
$n_arr1 = $this->var_con_php;
$n_arr2 = $this->var_con_html;
array_push($n_arr1,$phpvar);
array_push($n_arr2,$htmlvar);
$this->var_con_php = $n_arr1;
$this->var_con_html = $n_arr2;
}
function set_xvar($htmlvar_name, $phpvar_name){ // Platzhalter, Inhalt
$x_arr1 = $this->xvar_con_php;
$x_arr2 = $this->xvar_con_html;
array_push($x_arr1,$phpvar_name);
array_push($x_arr2,$htmlvar_name);
$this->xvar_con_php = $x_arr1;
$this->xvar_con_html = $x_arr2;
}
function p($temp_file, $htmlvar){ // ListenHTML, HTML-Platzhalter in dem die Liste eingefügt werden soll
$x_arr1 = $this->xvar_con_php;
$x_arr2 = $this->xvar_con_html;
$file_t = implode("", file("$temp_file"));
$intx = count($x_arr1);
for($i=0;$i<$intx;$i++){
$datout = "~{".$x_arr2[$i]."}~";
$file_t = str_replace($datout, $x_arr1[$i], $file_t);
}
$n_arr1 = "";
$n_arr2 = "";
$n_arr1 = $this->var_con_php;
$n_arr2 = $this->var_con_html;
array_push($n_arr1,$file_t);
array_push($n_arr2,$htmlvar);
$this->var_con_php = $n_arr1;
$this->var_con_html = $n_arr2;
}
function parse() { // parser... (mehr oder weniger ^^)
$n_arra1 = "";
$n_arra2 = "";
$n_arra1 = $this->var_con_php;
$n_arra2 = $this->var_con_html;
$inta = count($n_arra1);
$dataout = $this->main_file;
for($i=0;$i<$inta;$i++){
$datout = "~{".$n_arra2[$i]."}~";
$dataout = str_replace($datout, $n_arra1[$i], $dataout);
}
$this->dataout .= $dataout;
}
function printout(){ // ausgabefunktion
printf($this->dataout);
}
}
So dann gibt es die Templatedatei(temp.html):
Code:
<html>
<title>test</title>
<body>
Ausgabe var1:<bR>
<i>~{var1}~</i>
<bR><bR>
Ausgabe var2 (liste):<bR><bR>
<i>~{var2}~</i>
<bR>ENDE
</body>
</html>
hier das Template was in die liste eingefügt werden soll (list.html)
Code:
Nummer (~{var_list}~)
Und hier die Ausführende PHP-Datei(test.php):
PHP:
include("testclass.php");
$t = new template;
$t->set_file("temp.html");
$test = "Hallo das ist ein Test";
$t->set_var("var1",$test);
for($i=1;$i<=10;$i++)
{
$t->set_xvar("var_list",$i);
$in++;
}
$t->p("list.html","var2");
$t->parse();
$t->printout();