Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Parsefehler bei Templates?

Empfohlene Antworten

Veröffentlicht

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.

  • Autor

Hat sich erledigt.

Musste den Output in der Funktion in eine Variable schreiben - statt ueber echo zu gehen - und die returnieren. Dann konnte die

$tpl->set_var-Anweisung auch was damit anfangen.

Ich hasse dumme Fehler :(

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.