Beste Leden,

Ik heb even een vraagje waar ik even niet mee weg kom. Ik ben bezig om een website van mij opnieuw te scripten, want dit is een aardig jan boel geworden.
Het gaat om het volgende: Het includen van setting pagina's.

Stel ik heb een dood eenvoudige index.php: Voorbeeld KLIK
Mijn mappen overzicht is: Let op niet alle mappen en file's zichtbaar.

config/
	config.php
	config_db.php
	config_nieuws.php
	config_gastenboek.php
	enz...
css/
	style.css
images/
	logo.png
	background.png
pages/
	home.php
	nieuws.php
	gastenboek.php
	enz...
index.php
header.php
footer.php
nav.php


Nu wil ik zoveel als mogelijk PHP en HTML van elkaar scheiden waar dit mogelijk is. Dus alle PHP eerst uitvoeren voor er ook ma enige HTML word weer gegeven. Nu weet ik dat ik dus alle PHP file's voor de <html> tag moet gaan includen. Op de index.php worden de pagina's geinclude uit map pages, dit gaat gewoon netjes. Maar hoe kan ik dit het beste oplossen met het includen van de config_???.php file's

Het lijkt mij dat ik niet alle file's uit config/ kan includen en dat de file pas word gebruikt zodra de pagina daar om vraagt, want dan krijg ik natuurlijk van alle error's om me oren.

Nu vraag ik mij af aan de hand van wat ik de config's kan includen boven de <html> tags. Hoe lossen jullie dit in algemeen op?

Mijn url is als voorbeeld: http://domein.nl/index.php?p=nieuws
Zo:

<?php
session_start();
include("inc/connectie.php");
include("page.php");
?>
<html doctype>
 <head>
 <title><?php echo $html_title; ?></title>
</head>
<body> 
<?php echo implode(PHP_EOL, $html); ?>
</body>


Het in een array gooien van al je "echo's" is sneller dan alles direct echoën en je kan er eventueel nog wat mee doen.
Zo houd je je HTML en PHP echt gescheiden. En je kan overal in je PHP-script gewoon header() gebruiken zonder moeite.


Het includen is geen probleem: gewoon alle config's includen. Dat geeft niets, want daar doe je niets mee.
Ik vraag me alleen af waarom je alles altijd met arrays doet Eddy? Waarom niet alles gewoon in 1 lange string aan elkaar plakken en aan het einde die string direct echo'en. Die PHP_EOL staat er toch voor Jan met de korte achternaam, want de browser zal het echt worst wezen, die doet niets met die EOL characters.
Je kan inderdaad ook '' invullen.
Waarom een array? Je kan nog wat schuiven en snijden met array_slice.
Je haakt wat makkelijker in. En je kan wat gerichter (in een string moet je weer met strpos werken etc) en eventueel wat veranderen. In een string gaat dat lastiger.
Goed, het kan inderdaad beide, maar een echo had mijn voorkeur.

Voorbeeld: ik geef een aantal afbeeldingen weer. Als er eentje mislukt wil ik eigen VOOR de afbeeldingen nog een melding proppen.
Nu tel ik het aantal afbeeldingen (dat is niet zo moeilijk met $i++) en pers gewoon in count($html)-$i er een melding tussen. Die verschijnt dan nog voor de afbeeldingen. Zo hoef ik niet met allerlei tussen-variabelen eerst wat maken en later samen te voegen. Met een string zou dit niet lukken (of je moet inderdaad op een <img> gaan zoeken na <article> en daar nog wat tussen zetten.
Eigenlijk zou je het ipv een echo ook gewoon direct een DOM-builder kunnen maken. Maar dat was bij mij echt niet nodig.
Ik ben het er overigens wel mee eens dat je het eerst helemaal opbouwt voor je het naar de browser stuurt, daar zijn we het over eens.
Wat betreft die aanpassingen, dat is inderdaad in een string lastiger. In mijn ogen is die string (of array) dan ook de finale data die naar de browser gaat. Het enige dat je nog kan doen is het geheel niet sturen, omdat je op het laatste moment nog een grote fout tegenkomt. Halverwege nog iets aanpassen wat al in die string staat is wat mij betreft geen optie, je moet het al helemaal checken voor je het in die string plaatst.

Jouw voorbeeld met die plaatjes zou ik dus zo oplossen dat een functie (of class) dat deel van de pagina bouwt en pas aan het einde van die functie alles aan elkaar plakt en terugstuurt. Op dat moment kan er dus ook nog iets voor de plaatjes worden gestopt. Het gaat als geheel terug.

Maar goed, een deel is ook gewoon voorkeur en er is niet een goede of foute manier. Het valt me gewoon op dat je altijd naar arrays gaat waar het met strings ook goed kan.
Eddy en Erwin,

Bedankt voor jullie reactie's.
Als ik jullie dus goed begrijp en het volgende aan pagina's zal maken dan moet het gewoon altijd werken en krijg ik in de toekomst geen problemen met $_GET, $_POST, #SESSIES en header().

config/config.php
<?php
/* Het ophalen van de standaard site settings */
$sql_get_settings ="SELECT
titel
FROM
settings
DESC";
# Check of query is gelukt
if (($result_get_settings = mysql_query($sql_get_settings)) === false)
{
# als de query fout is -> foutafhandeling -->
echo showSQLError($sql_get_weeknr,mysql_error(),'Fout bij het op halen van de Standaard Site settings.');
}
elseif (mysql_num_rows($result_get_settings) == 0)
{
$titel .= 'Standaard site Titel: Welkom op www.domein.nl';;
} // End of elseif
else
{
# Hier is er wel een rij dus ->
while( $row_get_settings = mysql_fetch_array( $result_get_settings ) )
{
$titel .= htmlspecialchars( $row_get_settings['titel'] );
}
} // End of else
?>

Boven in de index.php
<?php
include ("config/config_db.php"); /* Database inlog gegevens */
include ("config/debug_function.php"); /* Debug Functie voor Test doeleinden */

include ("config/config.php") /* Ophalen standaard site settings */
include ("config/config_nieuws.php") /* Ophalen Nieuws uit DB*/
include ("config/config_gastenboek.php")/* Ophalen Gastenboek uit DB*/
?>

Als ik dus alle .php pagina's zo opbouw als het eerste stukje code, kan ik met een gerust hard alle file's includen boven in de index.php. Als ik het dus helemaal goed begrijp kan dit omdat er niks geechoot word?

Reageren