Eigene Template Klasse funktioniert nicht.

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):
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();
 
Das Problem liegt hier:
PHP:
     for($i=0;$i<$intx;$i++){ 
     $datout = "~{".$x_arr2[$i]."}~"; 
     $file_t = str_replace($datout, $x_arr1[$i], $file_t); 
     }
$x_arr2[$i] ist ja immer das gleiche (var_list). Sobald das erste mal ersetzt wird, passiert nichts weiter. So kann das nicht funktionieren.
 
Zurück