PHP/MYSQL variabelen mixen met bestanden

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Ik heb een bestandje "test.php" en ziet er bijvoorbeeld uit als:

<html>
<head>
<title>$pagetitle</title>
</head>
<body>

$message

</body>
</html>

De waarden voor de variabelen staan in MySQL.
Deze twee (het bestandje en de variabelen) wil ik uiteindelijk naar de browser sturen.

Hoe kan ik dat het beste doen? Welke richting moet ik opdenken?
Ik stuit met name op de output van het bestand: deze wordt wel gepresenteerd in de browser (via fpassthru), maar de variabelen worden niet omgezet.
Ik hoef geen kant en klare oplossing: eerder een aantal nuttige kreten om de rest verder uit te zoeken.

Verwijderd

Je lijkt de kant van template-parsing op te willen.

Hierop zoeken levert denk ik ook een grote verheldering op.

Een begin is om de variabele delen in je template anders te noemen $pagetitle -> %pagetitle%

Wat je nu in je php-bestand kan doen is het hele bestand inlezen (mbv file() en implode()), al die %var% elementen omzetten naar hun goede waarden.

Als je daarna de boel laat outputten, moet het geregeld zijn.

Verwijderd

Topicstarter
Ik was inderdaad al bezig om met templates te werken.
Dat gaat op zich goed als ik alles uit de database trek, zowel de HTML "pagina-template" als de variabelen: alle code parse ik dan door dezelfde functie heen die de boel omzet.

Toch nog even wat extra info:

Mijn php bestand is verkort alsvolgt opgebouwd:
1) eval(getcode "eerste");
2) eval(getcode "tweede");
....etc.
3) functie eval(show(getcode "pagina"));

de eerste twee eval's halen gegevens uit de database.
de laatste haalt dan de pagina op uit de database en vult in die pagina in met de waarden die uit de eerste twee eval's.

Dit gaat goed.

Alleen stap 3) wil ik niet meer uit de database halen, maar uit een bestand en laat deze inlezen met de code:

$file=fopen("$filename","r");
while(!feof($file)) {
$line=fgets($file, 1024);
}
$template=fpassthru($file);

$template wordt dan verder net zo geparsed als de gegevens in stap 3) uit de database. Maar gek genoeg geeft worden dan strings weergegeven als $blabal (tekst dus...).

Verwijderd

eval _nooit_ gebruiken (als het niet echt nodig is)...

als je je $template hebt ingelezen, dan een str_replace() (bv.) laten draaien om die waardes te replacen...