Autor Zpráva
petercz87
Profil
Měl bychí dotaz ted ohledně php. Snažím se naprogramovat dynamickou stránku (opět se všechno učím od začátku takže dělám blbé chyby) a mám problém s chybovou hláškou.
Tady je část kodu.

   <?php
                         $text=htmlspecialchars(strip_tags($_GET['text']));   

                 if($text==''){
                      $text='obsah';
                   }
                   if (file_exists($text.'.php')) {
                      require $text.'.php';
                   } else {
                      require 'error404.php';
                   }
                   ?>




$text=htmlspecialchars(strip_tags($_GET['text'])); Tahle část kodu mi pak vyskakuje na zobrazene stránce jako Notice: Undefined index: text in D:\programy\server\xampp\htdocs\myweb\neco\web\index.php on line 39

Můžete mi poradit v čem je chyba? Ten kod je přesně podle učebenice, ze které se učím. Podobný problém s proměnou GET a POST mi vyskakuje i u formuláře. Díky moc za pomoc už totiž fakt nevím v čem je chyba. Když zkopiruju zdroják z učebnice pořád se tam ta chyba píše.

Moderátor Majkl578: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Someone
Profil
Tam jde o to, že $_GET['text'] v té době neexistuje.
Jak tak na to koukám tak by to mohlo vypadat takhle:

<?php
if (!empty($_GET['text'])) { // zkontrolujeme zda existuje $_GET['text'] a že se nerovná ''
    $text = $_GET['text']; // pokud existuje a nerovná se '' přiřadíme do proměnné $text
} else {
    $text = "obsah"; // jinak přiřadíme do proměnné $text 'obsah'
}

if (file_exists($text.'.php')) {
    require $text.'.php';
} else {
    require 'error404.php';
} 
?>
petercz87
Profil
Díky funguje. Jen se divím, že ten kod, který jsem přepsal z učebnice nefungoval.
Someone
Profil
petercz87:
on v podstatě funguje, jen tam není ošetřeno to, že $GET['text'] nemusí existovat, takže vypisuje notice.
petercz87
Profil
Nerad s tím ještě otravuju, ale proměnným, kterí se využívají ve struktuře, kterou jsem vypsal výše pořád úplně nerozumím. Chápu co je to proměnná, jak s ní odčítat, sčítat, vytvářet cykly..chápu význam if a else, zase tak moc mimo nejsem. Potřeboval bych jen trochu polopatě vysvětlit jak přesně každá řádka funguje a k čemu slouží. Vím, že bez tohohle se dál v php prostě nehnu. XHTML a CSS mi problém nedělalo, i když to je něco jiného.
panther
Profil
petercz87:
jakym promennym nerozumis? Je tam jen jedna, $text. Pokud nerozumis nektere z pouzitych funkci, klikni na ni, dostanes se do manualu.

Jen prozradim dalsi zpusob, ktery muzes nekdy pozdeji take zkoumat. Funguje stejne, jako ten na r. 2-6 v [#2]:
$text = !empty($_GET['text']) ? $_GET['text'] : 'obsah';
petercz87
Profil
No myslím, že mě spíše zmátla učebnice. Ten kod v ní házel tu "chybovou" hlášku až mi Someone poradil značku empty. Zkouším si různé možnosti jak a co funguje tak snad příjdu na to jak všechno přesně funguje. Trochu nerozumím významu komentáře
if (!empty($_GET['text'])) { // zkontrolujeme zda existuje $_GET['text'] a že se nerovná ''
 $text = $_GET['text']; // pokud existuje a nerovná se '' přiřadíme do proměnné $text
Jde mi o to zjistit jak funguje, že se něco nerovná.
jenikkozak
Profil
petercz87:
Podmínka if (empty($_GET['text'])) { je splněna vždy, pokud „proměnná“ $_GET["text"] je prázdná. Protože chceš ověřit pravý opak, použiješ znak negace - vykřičník. if (!empty($_GET['text'])) { Taková podmínka je splněna, pokud $_GET["text"] není prázdný.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: