Beste Option für include() und <title>-Problem

moreplz

Grünschnabel
Hier mein aktueller Code

mit domain.com/?page=start lasse ich die jeweiligen includes angeben.

Nun ist aber mein Problem, dass ich nicht immer den gleichen <title> (in der header.php) haben möchte, sondern er aus den verscheidenen pages/*.php Dateien. Via include() geht es ja aber nicht vor dem Header, da sonst bereits da der Code geparst wird.

PHP:
<?php
	require('inc/db.php');
	include('inc/header.php');

	echo'
	<a href="?page=start">Start</a> |
	<a href="?page=test">Test</a> |
    <a href="?page=help">Helfen</a> |
    <a href="?page=admin">Admin</a>
	';
	
	if (!isset($_GET['page']) || $_GET['page'] == "start") { include('pages/start.php'); }
	elseif ($page == "test") { include('pages/test.php'); }
	elseif ($page == "help") { include('pages/help.php'); }
	elseif ($page == "admin") { include('pages/admin.php'); }

	include('inc/footer.php');
?>

Welche option ist nun die beste.. Soll ich das ganze per funktionen ausgeben lassen in form von show_header(), show_title(), show_content() etc. oder fällt euch was besseres ein!? :)



Vielen Dank schonmal für eure Hilfe!
 
Mit ob_start() die Ausgabe verhindern und nach dem header mit ob_end_flush() ausgeben
PHP:
ob_start();
echo '1234';
header(....);
ob_end_flush();
 
Habs nun so gelöst: Danke für deinen Tipp :)

PHP:
<?php
	require('inc/db.php');

	ob_start();
	  $page = $_GET['page'];
	  if (!isset($page) || $page == "start") { include('pages/start.php'); }
	  elseif ($page == "upload") { include('pages/upload.php'); }
	  elseif ($page == "help") { include('pages/help.php'); }
	  elseif ($page == "admin") { include('pages/admin.php'); }
	$content = ob_get_contents();
	ob_end_clean();

	include('inc/header.php');
	include('inc/navigation.php');

	echo ($content);

	include('inc/footer.php');
?>

Schaut das ok aus, oder könnte man da noch was verbessern?
 
Warum schiebst du den Code für die Page-Prüfung nicht einfach unterhalb den Include der Navigation? So sieht es für mich erstmal nach Overhead aus, Output-Buffering wird IMHO hier nicht benötigt, wenn man den if-elseif-Teil hinter include('inc/navigation.php') schiebt. Oder überseh ich da was?
 
Du kannst dir das abholen des Conent sparen.

PHP:
//das folgende ersetzen
$content = ob_get_contents();
ob_end_clean();
//durch
$content = ob_get_flush();
 
@yaslaw:

wenn ich das macher erscheint der content 2mal, wenn cih nun unten das echo $contetn entferne nur noch 1x, aber erscheint ganz oben (über <html>)
 
Zurück