tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
676
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Sep 2001
    Ort
    Berlin
    Beiträge
    345
    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-Code:
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    <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 :
    1
    
    Nummer (~{var_list}~)

    Und hier die Ausführende PHP-Datei(test.php):
    PHP-Code:
    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(); 
     

  2. #2
    Registriert seit
    Jan 2004
    Beiträge
    1.072
    Das Problem liegt hier:
    PHP-Code:
         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.
     

  3. #3
    Registriert seit
    Sep 2001
    Ort
    Berlin
    Beiträge
    345
    *kopf auf den tisch hau* ai jo danke simpler aber entscheidener Fehler
     

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 21.10.10, 12:09
  2. Template + Databinding auf eigene Klasse
    Von {Eve} im Forum .NET WPF & Silverlight
    Antworten: 2
    Letzter Beitrag: 11.02.10, 13:40
  3. Pixelpost Template funktioniert nicht
    Von psYkenNy im Forum Content Management Systeme (CMS)
    Antworten: 0
    Letzter Beitrag: 12.08.08, 18:13
  4. Antworten: 4
    Letzter Beitrag: 04.03.07, 18:40
  5. Antworten: 6
    Letzter Beitrag: 04.10.05, 22:38