Geef variable later een waarde
Voor de include staat dit:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
//Set pagetitle
$pagetitle = "Taartjes, koekjes weet ik veel";
//There is the header!
theme_header();
?>
//Set pagetitle
$pagetitle = "Taartjes, koekjes weet ik veel";
//There is the header!
theme_header();
?>
In de functie theme_header(); wordt
'<title>'.$pagetitle.'</title>';
naar het scherm geschreven.
Hoe zou ik deze title later nog kunnen veranderen, zonder javascript, want nu gebruik ik:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
echo '<script language="javascript">
document.title = "'.$boardtitle.'";
</script>';
?>
echo '<script language="javascript">
document.title = "'.$boardtitle.'";
</script>';
?>
http://php.net/manual/en/language.functions.php
Zoals hier staat misschien?
Note that a function that calls a variable by reference CANNOT be used recursively, it will generate a CGI error (at least on my windows platform).
Thus:
Will NOT work.
Instead, you should just use global variables.
This, of course, assuming that you need to use $foo in other functions or parts of code. Otherwise you can simply pass the variable regulary and there should be no problems.
Of iets dergelijks, zie de website
mvg Kasper
Zoals hier staat misschien?
Note that a function that calls a variable by reference CANNOT be used recursively, it will generate a CGI error (at least on my windows platform).
Thus:
Code (php)
Will NOT work.
Instead, you should just use global variables.
Code (php)
This, of course, assuming that you need to use $foo in other functions or parts of code. Otherwise you can simply pass the variable regulary and there should be no problems.
Of iets dergelijks, zie de website
mvg Kasper
Gewijzigd op 30/10/2010 17:31:04 door Kasper Heyndrickx
Door eerst alle PHP logica uit te voeren en dan pas de HTML naar de browser te sturen. Dus met andere woorden, door je theme_header() op een andere plaats in je script aan te roepen...
Eerst voor je alle logica uit. Dus data uit de db trekken e.d.
Dan pas stop je het in een pagina.
Als je dat wel doet, ben je niet juist bezig. Die foutmeldingen worden namelijk veroorzaakt doordat de volgorde in je script niet klopt. Je output dan waarschijnlijk al HTML terwijl er nog PHP logica uitgevoerd moet worden waarin een header gewijzigd wordt. Kortom, zorg dat je scripts goed in elkaar zitten: eerst alle PHP logica en dan pas output genereren.
En zou ik in het geval van de header fouten ook van Smarty gebruik kunnen maken?
Thomas de Roo op 30/10/2010 17:44:17:
En zou ik in het geval van de header fouten ook van Smarty gebruik kunnen maken?
Dan moet je nog steeds zorgen dat je geen output hebt naar de browser.
Uiteraard is het gebruik van een template engine wel een aanrader om je output te verzorgen. Het geeft je een grotere mate van flexibiliteit.
Gewijzigd op 30/10/2010 17:46:40 door Joren de Wit
Oke, maar hoe scheid ik de headers zodat ze voor de output komen, op sommige gevallen kan ik niet anders :'(
Hoezo kan je niet anders? In plaats van de output naar de browser te sturen kun je deze altijd tijdelijk in een variabele opslaan en de inhoud van deze variabele pas aan het eind van het script naar de browser sturen...
Toevoeging op 30/10/2010 20:10:35:
Volstaat een globale $output variable die in index.php wordt geechoëd tussen de header en footer in?
Een globale $output variabele kan volstaan, maar je zult vanzelf zien dat dit op een gegeven moment te beperkt is. Je wilt waarschijnlijk op meer vlakken kunnen bepalen hoe je output eruit ziet en dan is 1 enkele variabele niet handig. Dit is precies waar het gebruik van een template engine uitkomst biedt...
Die functies bestaan immers ook niet voor niks, toch? D:
Gewijzigd op 30/10/2010 21:18:07 door Thomas de Roo
De keuze is aan jou, maar ik zou toch het probleem zelf oplossen en niet ob_start() als lapmiddel gebruiken.
Dat is dus wat anders dan het 'oplossen' van scriptfouten.
Je kunt altijd wel je cookies (headers w/e) voor je html krijgen.
Dus, om headers already sent fouten te voorkomen hoor je geen output buffer te gebruiken.
Het gaat hier om duizenden regels code.
Vanaf nu zal ik met nieuwe code de headers voor de output houden.