Autor Zpráva
pavuk
Profil
Zdravím, snažím se pochopit jak php funguje, a teď jsem u vkládání obsahu stránky pěkně polopatě na základě "index.php?str=něco...". Vzal jsem celý skript a vložil k sobě, upravil, všechno funguje perfektně, jenom stránka "uvod.php" mi posune vkládaný (správně zobrazený) obsah a vypíše "Notice: Undefined index: str in E:\php\zemekoule\index.php on line 2" (tu číslovku jsem přepsal tak, aby souhlasila s kódem kterej přikládám)
<?php
$stranka = $_GET['str'];
if (!isset($_GET['str'])) {
$stranka = "uvod";
} else {
$stranka = $_GET['str'];
}
$soubor = $stranka.".php";
if (!file_exists($soubor)) {
$soubor = "uvod.php";
} 
include ($soubor);
?>

Co je na řádku 2 špatně a jak to odstranit?
(při zakládání dotazu vykoukly dvě vlákna, ale tam jsem nic nevyřešil, ani na php.net, takže s tím mým chápáním php to asi nebude tak slavný...)
Edit: zapoměl jsem dodat že to zkouším na localhostu, což je zřejmě z textu patrný a ani nevím jestli to může mít vliv
miskith
Profil
Problém máš v tom, že nahoře definuješ proměnnou "$strana" a dáváš jí hodnotu $_GET['str'], což neexistuje, pokud nemáš stranka.php?str...
Tudíž buď si definuj, že pokud není hodnota, aby se definovala:
if (!isset($_GET['str'])){$_GET['str']='';}

A nebo tam nedefinuj tu proměnou a nadále používej GET.
pavuk
Profil
BINGO!
Doufám že nezůstanu tatarem celej život... Děkuju, funguje to výborně (a jak už teď vidím taky zcela logicky...)
miskith
Profil
pavuk:
Ne tak jako v pohodě, ale zrovna v tomhle kódu si na chybu mohl přijít. Napíše ti to číslo řádku, jdeš na určitý číslo řádku. píše ti to tam něco o "str", najdeš si, kde je na tom řádku "str" (v tvém případě jen na jednom místě)... Přeložíš si co je "Undefined" a máš to. Ale pohoda, každej nějak začínal ;).
pavuk
Profil
miskith:
Ba právě, kouknu na číslo, jdu tam, je tam nedefinovaný "str", v kódo vidím že str definuju, prostě jsem v tom hledal chybu v syntaxi, mně nenapadlo použít hlavu...
petr 6
Profil
miskith:
Není to trochu zbytečné řešení? Stačilo by přece jenom vypustit řádek 2, ve kterém definuje proměnou, kterou nepoužívá (protože ji následně v obou větvích znovu definuje).

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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