Include - vkládání částí kódu / skriptů z externího souboru

Tato možnost nahradí rámy stejně jako načítání menu na všechny stránky pomocí javascriptu a jeho funkce document.write. Možností využití "include" je spousta, ale pro tyhle případy je důležité: to, co se opakuje na dvou a více stránkách, napíšeme jen jednou, uložíme zvlášť do souboru, a do všech stránek, kde se to má zobrazit, jen dáme php příkaz include, který načte a na dané místo vloží obsah onoho souboru. Když pak obsah toho externího souboru změníme, samozřejmě se na všechny stránky bude načítat aktuální verze, tj. včetně změny. Tu tedy stačí udělat jen jednou.

Do stránky pomocí "include" nevkládáme jinou (celou) stránku, jako u stránek s rámy, ale část kódu. Výsledkem má být jedna stránka, tj. jednou head, jednou body a to vše ve správném pořadí. Pokud byste includovali celou html stránku, výsledkem by byl zmaštěný kód, s (přinejlepším) dvěma hlavičkami atd.

Kód v souboru menu.php:

<a href="stranka1.php">první odkaz</a>
<a href="stranka2.php">druhý odkaz</a>
<a href="stranka3.php">třetí odkaz</a>

Kód v souboru stranka.php:

<html>
<head>
...
</head>
<body>
<?php include ("menu.php"); ?>
<h1>Tohle je hlavní stránka</h1>
<p>tady by byl text</p>
</body>
</html>

Výsledek (v prohlížeči):

<html>
<head>
...
</head>
<body>
<a href="stranka1.php">první odkaz</a>
<a href="stranka2.php">druhý odkaz</a>
<a href="stranka3.php">třetí odkaz</a>

<h1>Tohle je hlavní stránka</h1>
<p>tady by byl text</p>
</body>
</html>

Malé objasnění

Komu by to snad nebylo z výše uvedeného příkladu jasné: ve výsledku bude tam, kde je příkaz include, vloženo přesně to, co obsahuje includovaný soubor.

Mimochodem, pokud ten soubor v daném místě není nebo jej nelze přečíst, může se Vám tam v prohlížeči objevit nechutná hláška, něco jako:

Warning: main(neexistujici.php): failed to open stream: No such file or directory in /3w/wz.cz/p/polopate/echo.php on line 91
Warning: main(): Failed opening 'neexistujici.php' for inclusion (include_path='.:/usr/local/lib/php') in /3w/wz.cz/p/polopate/echo.php on line 91

Tomu se dá předejít tím, že nejdříve ověříme, že soubor existuje. Jenže to potřebujeme nejenom funkci file_exists, ale také podmínky a jejich vyhodnocování - a to bychom až moc předbíhali.

Pak je ještě jedna možnost - pokud před příkaz include (nebo před cokoli jiného, co by mohlo vyprodukovat chybové hlášení) umístíte znak zavináče, neboli @, potlačíte tím zobrazování chybových hlášek. Pro ladění skriptu to vhodné není, protože nevíte o tom, že se stala chyba. Mně se to obecně vzato taky moc nelíbí, protože mi to připomíná jednoho programátora, který když zjistil, že jeho výtvor produkuje jakési chybové hlášení, ovšem po jeho odkliknutí program vesele funguje dál – tak prostě naprogramoval utilitku, která sledovala, jestli se neobjevilo chybové hlášení, a když ano, tak ho odklikla :-). Prostě jsem pro to, aby se spíš předem zajistilo, že k chybě nedojde. Ale ne vždycky to jde, takže je dobré o zavináči a jeho funkci vědět.


Mozilla Firefox: Prohlížeč, kterému můžete věřit
píše -dis- bb(zavináč)choltice.eu