Template, varible die mehrfach vorkommen

masa

Grünschnabel
Hallo,

habe vor paar Tagen erfahren was Teplates sind :-) ==> bin nich newb ;)


wie ich verstanden habe:
Es wird eine, Schablone HTML, Datei angelegt ( template ).
der PHP Script ersetzt in dieser Datei vorkommende, definierte variablen durch den wert
der aus dem PHP Script kommt.
richtig oder ?
habe mir auch gleich eine triviale Classe gebastelt die in der Lage ist dies zu realisieren: suspekt:


dabei bin ich auf folgendes Problem gestoßen (!)
nehmen wir mal an ich habe ein Teplate für die Darstellung der User´s.
so sieht die Teplate aus
die variablen sind so "$varName" dargestellt.
HTML:
.

<body>
		<!-- Widerholung -->
<table>
	<th>NAME</th>
	<th> Geburtsdatum </th>
	<th>Hobby</th>
	<tr>

	<tr>
	   <td> "$UserName" </td>
           <td> "$Geburtsdatum" </td>
           <td> "$hobby" </td>
	</tr>
</table>
		<!-- Widerholung ENDE -->
<body>
.
so soll es aussehen ( siehe bild unten )

(!) es gibt 3 verschiedene Datensätze.
Meine Template wird aber bloß einen darstellen .-( :-(
normal wenn HTML und PHP vermischt sind ist es via schleife kein Problem dies zu machen, da ich aber bei Template bleiben will muss ich mir was einfallen lassen.


Vorschlag wäre man untersucht die Template nach dem <!-- Widerholung --> und <!-- Widerholung ENDE -->
Was etwas komplexer aussieht…

und untersucht ob, in diesem Sstring enthaltene variable die doppelt vorkommen.


hat jemand Ideen?
hat jemand so was ähnliches schon gemacht?

mfg
masa
 

Anhänge

  • tabelle.gif
    tabelle.gif
    2,7 KB · Aufrufe: 59
Zuletzt bearbeitet:
Ich habe dich denke ich nicht richtig verstanden.

Ein template kannst du in eine PHP Datei einbinden.
Das machst du in dem du dieses Template zum lesen öffnest, diesen Bsp in eine Variable steckst, und dann ausgibst.

Klar kannst du dopplungen umgehen.

isset() prüft ob ein Wert gesetzt ist

und unset() löscht bzw setzt eine Variable zurück.
 
hab mich vieleich undeutlich ausgedrückt :-)

volgendes

habe in der PHP sagen wir 20 datensätze aus der DB.

in der Template aber ist platz für eine variable !

zb datensatz datenSatz1 welcher volgende daten beinhaltet user,gebDatum,hobby

da es aber von diesem datensatzt zich dutzen gibt, gibts bei template ein problem.

ich dache man kann das bisle automatisieren und sagen in der Template
<!-- widerholung --> XXX <!-- widerholung ENDE -->
also im XXX sind variablen die mehrfach vorkommen !
 
Du suchst per Expression diese Zeichenkette "<!-- widerholung --> XXX <!-- widerholung ENDE -->".

Die Tags dazwischen speicherst du in eine Variable und ganzen Block ersetzt du durch eine Variable. Namen kannste dir ja aussuchen ;)

Dann machste einfach die Schleiffe zum Datenbank auslesen und hängst der Variablen, durch die der Block ersetzt wurde, die geparsten Daten an. Schwer zu erklären :)

Dein Templatecode sieht dann so :
Code:
<body>
$eine_variable;
<body>

Den Block haste vielleicht in der Variable $eine_variable_def gespeichert. Dann machste eben deine Datenbankabfrage und ne while-Schleife
PHP:
$eine_variable = '';
while($row = mysql_fetch_array($result)) {
$eine_variable .= template_parse($row, $eine_variable_def);
}
//Haupttemplate parsen

Also die Fkt. ist fiktiv. Soll dir nur zeigen, wie du es machen kannst ;)
 
Zuletzt bearbeitet:
Zurück