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":
Die functions.php:
die classes.php:
row1.htm:
inhalt.htm:
row2.htm:
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();
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;
}
};
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());
}
};
PHP-Code:
<TR>
<TD class="category" colSpan="6"><A href="forum.php?category={category}">
{category} </A>
</TD>
</TR>
{inhalt}
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äge:</TD>
<TD class="header"
width="19%">Letztes Posting:</TD></TR>
{row1}
</TBODY></table>
</TD></TR></TBODY></TABLE>
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> <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
{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>
Kommentar