Hallo zusammen,
vielleicht kann mir ja hier jemand helfen.
Ausgangsposition:
Ich habe eine Html-Datei, in der in geschweiften Klammern Platzhalter stehen, die per PHP-Skript gefuellt werden sollen. Templates eben
Ein Platzhalter wird in einem Block benutzt und sieht wie folgt aus:
<!-- BEGIN block -->
<td valign="top">
{Leistung}
</td>
<!-- END block --> [/PHP]
Da soll nun eine Tabelle mit Hilfe eines PHP-Skriptes geparset werden.
Mein Code sieht (was den kleinen Teil angeht) so aus:
[PHP]
$sql="SELECT A.leistungstext,betrag FROM leistungen AS A,beleg
AS B WHERE A.leistungsnummer=B.leistungsnummer AND
quittungsnummer=36";
/* hier kommt spaeter $quittungsnummer hin. Die 36 steht nur
dort, um schonmal mit einem Output zu arbeiten.
$quittungsnummer wird spaeter uebergeben. */
if(!$res=send_sql($db,$sql))
{
echo "<br>select-statement senden: SQL-Kommando wurde
nicht ausgeführt!<br>";
}
$tpl->set_var(array("Leistung" => l_out($res)));
$tpl->parse("out","block", true);
$tpl->parse("out", "seite");
$tpl->p("out");
//*****Ausgabe der Leistungen*******
function l_out($res)
{
global $db;
$runlevel=1;
echo "<table>";
echo "<tr>";
while($row=mysql_fetch_array($res,MYSQL_ASSOC))
{
foreach($row as $elem)
{
switch($runlevel)
{
case 1:
echo "<td valign=\"top\" align=\"left\">$elem:</td>";
$runlevel++;
break;
case 2:
echo "<td valign=\"top\" align=\"right\">$elem</td>";
$runlevel=1;
break;
}
}
echo "</tr>";
}
echo "</table>";
}
?>
Der zweite parse ist fuer nicht in dem Block enthaltene Templates gesetzt, die weiter oben im Code sind und jetzt der Uebersicht halber nicht von mir hier mit reinkopiert wurden.
Mir stellt sich jetzt folgende Frage: Wenn ich den Code so belasse, wie er jetzt ist, schreibt er die Leistungen nicht da hin, wo der Platzhalter "Leistung" ist, sondern ganz am Anfang des HTML-Dokumentes.
Schreibe ich jetzt aber:
$tpl->set_var(array("Leistung" => "Test"));
$tpl->parse("out","block", true);
[/php]
...oder ich schreib direkt eine Tabelle mit den Tags in der set_var-Zeile, [b]dann[/b] schreibt er mir "Test" oder die Tabelle auch dahin, wo ich den Block und den Platzhalter im HTML-Dokument gesetzt habe.
Was mache ich falsch?
Es muss dann wohl irgendwie an der l_out liegen, da das parsen an sich ja wohl zu funktionieren scheint, wenn ich {Leistung} mit anderem Inhalt, als mit der Funktion fuellen will. Aber ich wuesste nicht, was da jetzt so falsch ist.