parser-problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • parser-problem

    Hallo Leute
    Ich hab da ein kleines aber kliffliges Problem.
    Da ich erst seit kurzem mit klassen und parsern arbeite, übersteigt die Lösung wohl meine Fähigkeiten.
    Ich Haabe mein Forum auf templates umgestellt, aber nun wird die reihenfolge durcheinandergewirbelt.
    Erst wird die 2te schleife ausgegeben, dann die 1te, dann der voranstehende code.
    Für die Schleifen verwende ich extra-html-dateien.
    Das Problem liegt in der Reihenfolge der ausgabe der einzelnen template-objekte.
    Irgendwie müßte ich glaubich ein großes objekt mit unterobjekten erstellen, welches ich dann in einem ausgeben kann, das kann ich aber echt nicht.
    Weiß jemand wies geht,
    oder einen besseren Weg?

    Hier der code:
    die "grund-datei":


    PHP-Code:
    $tpl = new tpl("inc/tpl/inhalt.htm");
    $replace = array(
    "row1" => categories()
    );

    $tpl->assign($replace);
        
    $tpl->out(); 
    Die functions.php:
    PHP-Code:
    function categories ()
    {
     global 
    $SQLuser,$SQLpasswort,$SQLserver,$SQLdatabase,$db,$category,$cat,$lastlogin;
     if (isset(
    $category))
      {
    $sql="SELECT * FROM fcats WHERE name='$category'";};
     if (!isset(
    $category))
      {
    $sql="SELECT * FROM fcats ORDER BY id";};
     
    $res=new SQLQuery($sql);

     while (
    $fcats $res->fetch())
      {
       
    $cat=$fcats->name;
       
    $res2=new tpl("inc/tpl/row1.htm");
       
    $replace = array(
    "category"     => $fcats->name,
    "inhalt" => inhalt()
    );
       
    $res2->assign($replace);
       
    $res2->out();   
      }
    };

    function 
    inhalt()
    {
      global 
    $cat;
      if (!isset(
    $lastlogin)) {$lastlogin="0";};
      
    $cnt="1";
      
    $sql="SELECT * FROM finhalt WHERE category='$cat' ORDER BY id";
      
    $res=new SQLQuery($sql);
     while (
    $finhalt $res->fetch())
     {
       
    $res3=new tpl("inc/tpl/row2.htm");
       
    $replace = array(
    "newposts"  => newposts(),
    "inhalt-link"  => $finhalt->link,
    "inhalt-text"  => $finhalt->text,
    "inhalt-lpl"   => $finhalt->lpl,
    "inhalt-lpn"   => $finhalt->lpn,
    "inhalt-lpdt"  => $finhalt->lpdt,
    "inhalt-themen"  => $finhalt->themen,
    "inhalt-beitraege"   => $finhalt->beitraege
    );
       
    $res3->assign($replace);
       
    //$res3->out();
       
    $res3->out();
      
    // echo $out;
     
    }

    }; 
    die classes.php:
    PHP-Code:
    class tpl  {
    var 
    $template_file;
    var 
    $replace_array;
    var 
    $delimiterStart "{";
    var 
    $delimiterEnd "}";

    function 
    setStartDelim($delim="{")
    {
    $this->delimiterStart $delim;
    }
    function 
    setEndDelim($delim="}")
    {
    $this->delimiterEnd $delim;
    }
    function 
    tpl($template_file)
    {
    if(
    file_exists("inc/tpl/inhalt.htm"))
    {
    $this->template_file implode(""file($template_file));
    return 
    $this->template_file;
    }
    else
    {
    $this->template_file "";
    die(
    "failed to load template file");
    }
    }
    function 
    assign($searchString,$key=false)
    {
    if(
    is_array($searchString))
    {
    foreach(
    $searchString as $var => $key)
    {
    $search $this->delimiterStart.$var.$this->delimiterEnd;
    $replace $key;
    $this->template_file str_replace($search,$replace,$this->template_file);
    }
    }
    else
    {
    $search $this->delimiterStart.$searchString.$this->delimiterEnd;
    $replace $key;
    $this->template_file str_replace($search,$replace,$this->template_file);
    }
    return 
    $this->template_file;
    }
    function 
    get()
    {
    return 
    $this->template_file;
    }
    function 
    out()
    {
    echo(
    $this->get());
    }
    }; 
    row1.htm:
    PHP-Code:
    <TR>
      <
    TD class="category" colSpan="6"><A href="forum.php?category={category}">
                                 {
    category} </A>
      </
    TD>
     </
    TR>
     
     {
    inhalt
    inhalt.htm:
    PHP-Code:
    <TABLE summary="inhalt1" align="center" border="0" cellPadding="0" cellSpacing="0" width="97%" style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; MARGIN-BOTTOM: 0px">
      <
    TBODY>
       <
    TR>
        <
    TD class="tableback">
         <
    TABLE summary="inhalt11" border="0" cellPadding="6" cellSpacing="1" width="100%">
          <
    TBODY>
           <
    TR>
                                <
    TD colspan="2" class="header"
                                
    width="62%">Forum:</TD>
                                <
    TD class="header"
                                
    width="6%">Themen:</TD>
                                <
    TD class="header"
                                
    width="6%">Beitr&auml;ge:</TD>
                                <
    TD class="header"
                                
    width="19%">Letztes Posting:</TD></TR>
           {
    row1}


         </
    TBODY></table>
         </
    TD></TR></TBODY></TABLE
    row2.htm:
    PHP-Code:
     <TR>
       <
    TD align='center' class='tablerow'>
       {
    newposts}
       </
    TD>
       <
    TD class='tablerow' onMouseOver="this.className='tablerowhl'" onMouseOut="this.className='tablerow'">
       <
    FONT class='12px'>
       {
    inhalt-link}
       </
    FONT>&nbsp; <BR>
       {
    inhalt-text}
       </
    TD>
       <
    TD align='center' class='tablerow'>{inhalt-themen} </TD>
       <
    TD align='center' class='tablerow'>{inhalt-beitraege} </TD>
       <
    TD class='tablerow'>
        <
    TABLE width='100%'>
         <
    TBODY>
          <
    TR>
           <
    TD align='center'><FONT face='verdana' size='1'>

             {
    inhalt-lpdt}
            <
    br>by&nbsp;
             {
    inhalt-lpn}
           </
    FONT></TD>
           <
    TD align='right'>
           <
    A href="{inhalt-lpl}"><IMG border='0' src='images/symbols/lastpost.gif' alt='Letzter Post'></A>
           </
    TD></TR></TBODY></TABLE>
       </
    TD>
     </
    TR

  • #2
    du machst nach dem generieren von zB row1 ein

    $res2->out();

    damit gibst du es an den Browser aus.
    Du mußt aber dort ein

    $ergebniss=$res2->get();

    machen, und das $ergebniss als {row1} an das Template "inhalt" geben
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      Hi @all,

      wo wir grad dabei sind, hab ich auch mal eine Frage (nicht direkt zu dem oben beschriebenen Problem):

      was ist das für eine Schreibweise {row1} oder {inhalt} oder ähnliches? ich sehe diese schreibweise recht häufig, weiss aber nicht was das bedeuten soll oder wie ich damit umgehen kann.

      Wo bekomme ich Infos über dieses Thema her?

      cya CrazyPip

      Kommentar


      • #4
        yo, danke TBT, auf genau so ne antwort hab ich gehofft, werds gleich ausprobiern.
        @PiP:
        Das ist die schreibweise für template-dateien, normale html-dateien mit {Platzhaltern}, in die von einem PHP-Programm code oder variablen eingesetzt werden.
        Dadurch kannst du die template-dateien von jemand anderes bearbeiten lassen, der kein PHP kann, während du noch am dazugehörigen code sitzt.

        Kommentar


        • #5
          Hi,

          was meinst du mit "php-programm"? meinst du damit einen apache? gibts da einen Link den du zu dem Thema empfehlen kannst?

          cya CrazyPip1

          Kommentar

          Lädt...
          X