Ik ben een website aan het maken (soort CMS) waarbij ik de content van een pagina opsla in een database en deze er, afhankelijk van de url van de pagina, met $_GET (index.php?page=home&lan=nl) uithaal.
<?php $newquery = "SELECT * FROM sna_menu WHERE name = '".$_GET['page']."'";
$newresult = mysql_query($newquery) or die ("FOUT: " .mysql_error());
while (list($id, $ord, $name, $title, $level, $sub, $url, $nl, $en) =
mysql_fetch_row($newresult)){
echo $nl ; }
?>
In deze pagina's staat echter PHP script en deze worden weergegeven als tekst en niet verder verwerkt. Weet iemand hoe dit komt en hoe ik het zo krijg dat de scripts gewoon verwerkt worden alsof ze in de php pagina staan.
De oplossing was dus heel simpel...
Omdat je de eval() aanroept vanuit php raakt de server in de war met de tags van HTML en PHP.
Een oplossing hiervoor is het beeindigen van PHP bij het aanroepen en het daarna dus weer openen, hiervoor het volgende gewijzigde script:
<?php $newquery = "SELECT * FROM sna_menu WHERE name = '".$_GET['page']."'";
$newresult = mysql_query($newquery) or die ("FOUT: " .mysql_error());
while (list($id, $ord, $name, $title, $level, $sub, $url, $nl, $en) =
mysql_fetch_row($newresult)){
eval('?>' . $nl . '<?php '); } ?>
Waarin je in deze regel kunt zien dat php eerst afgesloten wordt, daarna begint de evaluatie van het PHP gedeelte uit de Database en daarna wordt PHP weer geopend:
Ik denk dat dat komt omdat je code in de DB begint met < ?php (aan elkaar vast). Dat kan dus niet... je kan niet PHP openen in PHP. Dus, als je dat en de ?> aan het einde weghaalt uit de code in je DB, hoef je waarschijnlijk niet zo'n gare eval() te bakken.