Autor Zpráva
czechiaa
Profil
Ahojte všichni z diskuse JPW,

mám problém se stránkami a to takovej, že na ic.cz pokud jsem měl domena.ic.cz/?hodnota=x (místo x bylo číslo od nuly do dvou) a ve stránce kód:
<? if($hodnota == 0)
{echo"data 0"}
else if($hodnota == 1)
{echo "data 1"}
else 
{echo "data 2"}

? >
tak se mi to vypsalo, jak jsem chtěl. Nyní jsem přešel k Hostuju a tam, pokud mám domena.7u.cz/?hodnota=x, tak mi to nic nevypíše a jen se ukáže "bílá stránka". Googlil jsem a zkoušel různě měnit .htaccess, ale nepomohlo, zkusil jsem napsat na podporu, ale bez reakce už několik dní. Proto jsem se obrátil sem a chtěl bych se zeptat, jestli neznáte řešení mého problému, nebo nějaké "popostrčení"? (kód neřešte, je to jen příklad sepsaný pro pochopení)

Předem děkuji za odpověď
Someone
Profil
Na novém hostingu je pravděpodobně vypnuté register_globals (což je imho i dobře). Přistupuj k hodnotám pomocí globálního pole $_GET .
Tzn.:
<?php
    if($_GET['hodnota'] == 0) {/* atd... */}
?>
Taps
Profil
czechiaa:
Nejčastější potíže s PHP (FAQ) » Nefungují proměnné z formuláře nebo z URL (vypnuté register globals)
czechiaa
Profil
Someone: provedl jsem to, co jsi mi poradil, ale nyní je prostě "bílá stránka". Zde přikládám přímý odkaz na obrázek. Pokud mám stránku bez toho <? php if ($_GET....... ?>, tak stránka funguje vpořádku, ale s tím kódem se děje to, co je v obrázku.

Taps: několikrát jsem to opravdu prošel, vyzkoušel vše a nic nezabralo.
lorin
Profil
Zkus:

<?php
    var_dump($_GET["hodnota"]);
?>

Tím zjistíš, co proměnná obsahuje, jakého je typu atd.

Mimochodem za příkazem echo by měl následovat středník:

<?php
    echo $promenna;
?>
czechiaa
Profil
lorin: po tom var_dump mi to vypíše třeba string(1) "1" (když hodnota=1), atp.
Středníky jsem doplnil a PHP by hlásilo, že mu to vadí, ale žádná reakce, opět bílá obrazovka.. Má tahle situace vůbec řešení?
Jinak do .htaccess jsem napsal
php_flag register_globals on
a bez výsledku. Hostuju běží na PHP 5.3, může to mít nějakej vliv?
Monkeys
Profil *
czechiaa:
pridaj si do stranky

error_reporting(E_ALL);
ini_get('display_errors');

vypise to chyby ktore su inak skovane

M.
Tori
Profil
Nemělo by to vypadat spíš takhle?
if ($hodnota == 0)
{ echo "data 0"; }
elseif ($hodnota == 1)  // bez mezery
{ echo "data 1"; }
else 
{ echo "data 2"; }
edit: I když vlastně ve výsledku to vyjde nastejno, takže beru zpět.
czechiaa
Profil
Monkeys: pokud to tam přidám a zároveň přidám to, z #1 postu, tak je opět bílá stránka. Kód jsem několikrát prošel, je to úplně jedinej php kód, co v něm je, samozřejmě je stránka zakončena *.php . Kde je tedy problém?

Tori: nene, pomohlo to, stránka již neni "bílá", ale ať změním hodnotu na cokoliv, tak stále to vypisuje "data 0" (ve stránce).

EDIT: Pokud dám kód
if ($_GET['hodnota'] == 0)
{ echo "data 0"; }
elseif ($_GET['hodnota'] == 1)  // bez mezery
{ echo "data 1"; }
else 
{ echo "data 2"; }
tak při domena.cz/?hodnota=0 to vypíše "data 0" (bez uvozovek, tedy správně), při domena.cz/?hodnota=1 to vypíše "data 1" (bez uvozovek, tedy také správně), ale pokud mám jen domena.cz, tak to vypíše "data 0" (bez uvozovek), tedy je zde něco špatně, protože to má vypsat "data 2" (bez uvozovek) a já nemohu zase zjistit, co je nyní zde špatně :-/
weroro
Profil
Pokiaľ nie je GET definovaný, tak je undefined, čo sa v podmienke považuje za false a false == 0

Buď testuj aj či je GET naplnený hodnotou
if (!empty($_GET['hodnota']) && $_GET['hodnota'] == 0)
{ echo "data 0"; }
elseif ($_GET['hodnota'] == 1)  // bez mezery
{ echo "data 1"; }
else 
{ echo "data 2"; }
alebo si GET vlož do premennej
$hodnota = (!empty($_GET['hodnota']) ? $_GET['hodnota'] : 2;
if ($hodnota == 0)
{ echo "data 0"; }
elseif ($hodnota == 1)  // bez mezery
{ echo "data 1"; }
else 
{ echo "data 2"; }
czechiaa
Profil
weroro: To jsem nevěděl, to si zamapatuju ;-)
tak jsem zkusil ten první kód, co jsi dal, ale další chybka -při domena.cz --> data 2, domena.cz/?hodnota=0 --> data 2, domena.cz/?hodnota=1 --> data 1, domena.cz/?hodnota=2 --> data 2. Takže nyní je problém s hodnotou 0.

Zkusil jsem využít proměnou, ale opět "bílá stránka". Tímto způsobem to nepůjde :-/

EDIT: Tak jsem našel řešení - Nejspíše se PHPčku nelíbilo domena.cz/?hodnota=[b]0/b], asi s s tím měl problém, protože se jednalo o nulu, takže jsem dal jiné číslice a funguje to správně.
Opravdu všem děkuji za snahu pomoci, tímto je můj problém vyřešen a přeji krásný zbytek večera ;-)
Tori
Profil
Ad [#9]: Chyba je v operátoru, mělo tu být porovnání identity $_GET['hodnota'] === 0. Neexistující hodnota parametru v GET do PHP přijde jako prázdný řetězec, který se při volném porovnání s nulou přetypuje na číslo, tedy nulu.

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: