Mam taki mały, a nawet wielki i troche denerwujący problem. Chodzi o wykorzystanie klasy FastTemplate w celu odzielenia kodu HTML od php.
Mianowice stworzyłem skrypt generujący księge gości na podstawie plików *tpl (szablonów). Według mnie wszystkie instrukcje kodu są w jak największym porządku, natomiast podczas uruchamiania skryptu serwer Krasnal zwraca błąd: Fatal error: Cannot redeclare clear_parse() in c:\usr\krasnal\www\kg\class.FastTemplate.php on line 636.
Nie wiem co mam z tym zrobić, więc pomyślałem, że może wy mi powiedzie gdzie tkwi błąd. Przecież dostarczona klasa nie może zawierać żadnego błędu ;]
Poniżej zamieszczam fragment kodu klasy FastTemplate, a dokładnie kod funkcji której Krasnal prawdopodobnie nie może zadeklarować oraz pliki z kodem, który wykorzystują ową klasę do stworzeniu księgi gości opartej na szablonach.
class.FastTemplate.php (przedstawiony kod w rzeczywistości zaczyna się od lini 636, a kończy na 639)
<?php function clear_parse () { $this->clear_assign(); } ?>
kg_base.tpl
Kod
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
<title>{TITLE}</title>
</head>
<body bgcolor="white">
<table width="550" align="center" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center">
<h3><a href="{KG_HEADER}">{KG_HEADER}</a></h3>
</td>
</tr>
<tr>
<td>
<p>{DANE}</p>
</td>
</tr>
</table>
</body>
</html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
<title>{TITLE}</title>
</head>
<body bgcolor="white">
<table width="550" align="center" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center">
<h3><a href="{KG_HEADER}">{KG_HEADER}</a></h3>
</td>
</tr>
<tr>
<td>
<p>{DANE}</p>
</td>
</tr>
</table>
</body>
</html>
kg_data.tpl
Kod
<p align="justify">
{WPIS}<br><br>
Data: <i>{DATA}</i> | Autor: <a href="mailto:{EMAIL}">{NICK}</a>
</p>
{WPIS}<br><br>
Data: <i>{DATA}</i> | Autor: <a href="mailto:{EMAIL}">{NICK}</a>
</p>
index.php
<?php include ( \"class.FastTemplate.php\" ); include ( \"db_mysql.inc\" ); class kg_db extends DB_Sql { var $Host = \"localhost\"; var $Database = \"kg\"; var $User = \"login\"; var $Password = \"password\"; } $aTPL = new FastTemplate ( \".\" ); 'dane' => 'tpl/kg_data.tpl' ) ); 'KG_HEADER' => 'Księga go?ci', 'KG_HREF' => 'index.php' ) ); $aDB = new kg_db; $aDB -> query( \"select * from kg\" ); while( $aDB -> next_record() ) { $aData = $aDB->f( \"data\" ); $aNick = $aDB->f( \"nick\" ); $aEmail = $aDB->f( \"email\" ); $aWpis = $aDB->f( \"wpis\" ); \"NICK\" => $aNick, \"EMAIL\" => $aEmail, \"WPIS\" => $aWpis ) ); $aTemplate->parse( \"DANE\", \".dane\" ); } $aTpl -> parse( \"DANE\", \"dane\" ); $aTpl -> parse( \"BASE\", \"base\" ); $aTpl -> FastPrint( \"BASE\" ); ?>
Zaznaczam, że includowny plik: db_mysql.inc to klasa do obsługi bazy MySQL, więc nie będe zamieszczał tu jej kodu.