Autor Zpráva
zavináč
Profil
Ahoj.

Pokusím se jasně shrnout můj problém. Stal jsem se celkem nadšencem do tvorby webu a chtěl jsem tvořit víc než statické stránky, proto jsem se začal učit php. Koupil jsem si knihu od Martina Mikuľáka Programování www stránek pro úplné začátečníky. Prvních pár kapitol jsem nadšeně hltal možnosti php, ale pak jsem narazil na problém. V jedné kapitole autor popisuje jak volat extérní skripty s texty. Kód vypadá takto -

<?php
                
               $text=htmlspecialchars(strip_tags($_GET['text']));
               
              if($text=='') { 
                $text='titulka'; 
                          }
                          
              if(file_exists($text.'.php')) { 
                require $text.'.php'; 
                          }
                         else {
                             echo 'Chyba!';
                         }
                
               ?>

Pokaždé když stránku spustím píše mi to následující chybu -
Notice: Undefined index: text in E:\Programy\Server\xampp\htdocs\phhpokus\ts\index.php on line 34
At jsem to zkoušel jak chtěl, nakonec jsem musel připusit, že autor knihy pravděpodobně napsal skript špatně, čímž mi php celkem znechutil. Pokračoval jsem dál a když jsem začal zkoušet volat obsah z vytvořené databáze psalo mi to to samé. Ten jazyk mě opravdu zajímá a chtěl bych se ho naučit používat správně, ale tento jeden konkrétní problém mi opravdu vadí. Našel by se tady prosím vás někdo kdo by mi jasně a rozumně vysvětlil v čem je ta chyba a jak ji opravit?
candiess
Profil
zavináč:
Undefined index: text
Po přeložení hlášky zjistíš, že PHP nenašlo v poli GET ani jeden prvek s indexem text. GET se používá k přenášení hodnot v URL, přenáší tvá adresa tuto hodnotu?
Např.: www.example.cz/index.php?text=muj_text

EDIT:
Co takhle kontrolovat proměnné hned ze startu?

<?php
if(isset($_GET["text"])) {
$muj_get = true;
} else {
$muj_get = false;
}

if($muj_get) {
//tvůj skript...
}
?>
Rellik
Profil
V nových verzích PHP musíš mít naplněnou proměnnou, kterou teprv získáváš z někama jinama. Dřív to tak normálně fungovalo a tak to v té knížce je správně, ale doba se mění a PHP s ním. Teď už musíš mít proměnné "předchystané" nebo je protahovat přes podmínky. Tak jako napsal candiess:

pokud je ( nastavena proměnná ($_GET['text']))...

Dalo by se to řešit i tak:

<?php
if(isset($_GET["text"])) {
   //tvůj skript...

}  else { 
                $text='titulka'; 
    }
?>
zavináč
Profil
Děkuju za pomoc. Ta kontrola pomohla. Kdyyž je tedy knížka v něčem zastaralá, neznáte nějákou jinou, která by mi pomohla? Mám i php a Mysql bez předchozích zanlostí, ale tam je opravdu minimum a já bych se chtěl naučit tvořit administrační zóny a dynamické weby pořádně.
A ještě jedna věc. Když si nechávám načítat obsah z databáze mám kódování nastavené na utf8, ale obsah normálně v html mi to tím zničí. V dyctypa mám pro normální html windows-1250.
panther
Profil
zavináč:
ale obsah normálně v html mi to tím zničí. V dyctypa mám pro normální html windows-1250.
doctype a nastavení kódování v HTML spolu nesouvisí.

nastav i kódování na stránce na UTF-8 a zároveň v tomto kódování soubor i ulož. Jinak to fungovat nebude.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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