Diskuze – Lekce 11 - Skládání stránek v PHP
ZpětUpozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.


Zaujíma ma, ako môže byť premenná $vlozeno = include('podstranky/' . $stranka . '.php');
vkladať podstránky, keď premenná nie je priamo volaná ako by to bolo napr. pri: include('podstranky/' . $stranka . '.php');. Je to niekde vysvetlené, stačí keď ju volá samotná negacia if (!$vlozeno)??
Michal Šmahel:25.1.2019 17:45
Ahoj, je dobře, že nad tím přemýšlíš. Jen příště prosím vkládej zdrojové kódy přes ikonku </> (vedle smajlíka).
Obsah souboru 'podstranky/' . $stranka . '.php' se do proměnné nevkládá. Funkce include() a její podobné (include_once(), require() a require_once()) vrací hodnoty true nebo false. True při úspěchu a false při neúspěchu. Stránka je tedy vložena (pokud je soubor nalezen) funkcí include() a do proměnné $vlozeno je uloženo, jak operace proběhla.
Více informací je v dokumentaci.
Pavel Lachnit:28.1.2019 11:38
Zobrazovat jako Titulek stránky hodnotu předávanou parametrem GET mi přijde trochu nehezké, nečitelné...
<!DOCTYPE html>
<html lang="cs-cz">
<head>
<meta charset="utf-8" />
<title>
<?php
if (isset($_GET['stranka']))
$stranka = $_GET['stranka'];
else
$stranka = 'domu';
if (preg_match('/^[a-z0-9]+$/', $stranka))
{
$titulky = array(
'domu' => '',
'omne' => '- O mně',
'dovednosti' => '- Dovednosti',
'reference' => '- Reference',
'kontakt' => '- Kontakt',
'poslatmail' => '- Můj e-mailový formulář',
);
echo("Pavlova stránka $titulky[$stranka]");
}
else
echo('Chyba!');
?>
</title>
<link rel="stylesheet" href="styl.css" type="text/css" />
</head>
<body>
<header>
<div id="logo"><h1>Lachnit Pavel</h1></div>
<nav>
<ul>
<li><a href="index.php?stranka=domu">Domů</a></li>
<li><a href="index.php?stranka=omne">O mně</a></li>
<li><a href="index.php?stranka=dovednosti">Dovednosti</a></li>
<li><a href="index.php?stranka=reference">Reference</a></li>
<li><a href="index.php?stranka=kontakt">Kontakt</a></li>
</ul>
</nav>
</header>
<article>
<div id="centrovac">
<header>
<?php
if (isset($_GET['stranka']))
$stranka = $_GET['stranka'];
else
$stranka = 'domu';
if (preg_match('/^[a-z0-9]+$/', $stranka))
{
$nadpisy = array(
'domu' => '<h1>Pavel</h1>',
'omne' => '<h1>O mně</h1>',
'dovednosti' => '<h1>Dovednosti</h1>',
'reference' => '<h1>Reference</h1>',
'kontakt' => '<h1>Kontakt</h1>',
'poslatmail' => '<h1>Odeslání e-mailu</h1>',
);
echo("$nadpisy[$stranka]");
}
else
echo('<h1>Chyba!</h1>');
?>
</header>
<section>
<?php
if (isset($_GET['stranka']))
$stranka = $_GET['stranka'];
else
$stranka = 'domu';
if (preg_match('/^[a-z0-9]+$/', $stranka))
{
$vlozeno = include('podstranky/' . $stranka . '.php');
if (!$vlozeno)
echo('Podstránka je ve vývoji, zkuste to později.');
}
else
echo('Neplatný parametr.');
?>
</section>
<div class="cistic"></div>
</div>
</article>
<footer>
Vytvořil ©LaP 2018 podle <a href="http://itnetwork.cz">ITNETWORK.CZ</a>
</footer>
</body>
</html>
Takže dělám v tagu <title> po kontrole vstupu "překlad" hodnot z $_GET['stranka'] na čitelnější text.
Pavel Lachnit:28.1.2019 11:52
Myslíš něco takového?
<div>
<header>
<?php
if (isset($_GET['stranka']))
$stranka = $_GET['stranka'];
else
$stranka = 'sms';
if (preg_match('/^[a-z0-9]+$/', $stranka))
{
$heads = array(
'domu' => 'Úvodní stránka',
'omne' => 'O mně',
'sms' => 'SMSky',
);
echo("$heads[$stranka]");
}
</header>
<section>
<?php
if (isset($_GET['stranka']))
$stranka = $_GET['stranka'];
else
$stranka = 'sms';
if (preg_match('/^[a-z0-9]+$/', $stranka))
{
$vlozeno = include('podstranky/' . $stranka . '.php');
if (!$vlozeno)
echo('Podstránka nenalezena');
}
else
echo('Neplatný parametr.');
?>
</section>
<div class="cistic"></div>
</div>
Dobrý den, vše mi jde až na jednu věc a to je když se mi PHP soubor otevře v <section> tam ten text, třeba z domu.php mi nechce zobrazit speciální znaky. Jinak v menu znaky fungují.
Walter:10.2.2019 7:20
Měl jsem stejný problém. Netbeans totiž pracuje ve WINDOWS-1250. Já nepřišel na to jak se to přendavá. Buď zkus jiný program (PHPstorm je super až na to, že je zdarma jen na 30 dní a má složitější instalaci XAMPP) nebo se pokus přijít na to jak Netbeans přepnpit do UTF-8.
Jan Poláček:10.2.2019 14:34
Ahoj, na konci článku to tam je napsané
if (isset($_GET['stranka']))
$stranka = $_GET['stranka'];
else
$stranka = 'domu';
v tomto úryvku je defaultní stránka domu viz 4 řádek (jinak to je podmínka > je nastavená proměnná $_GET["stranka"]?, pokud ano, ulož do proměnné $stranka, jinak do proměnné $stranka ulož domu) - celá cesta by měla být tedy "podstranky/domu.php", pokud nemáš ve složce podstranky soubor domu.php, nebude to fungovat, ale mělo by to něco vypsat.
Zobrazeno 10 zpráv z 159.