Autor | Zpráva | ||
---|---|---|---|
czechiaa Profil |
#1 · Zasláno: 26. 9. 2013, 20:44:10
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"} ? > Předem děkuji za odpověď |
||
Someone Profil |
#2 · Zasláno: 26. 9. 2013, 20:47:27
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 |
#3 · Zasláno: 26. 9. 2013, 20:48:32
|
||
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 |
#5 · Zasláno: 26. 9. 2013, 21:22:17
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 |
#6 · Zasláno: 26. 9. 2013, 21:52:21
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 |
||
Monkeys Profil * |
#7 · Zasláno: 26. 9. 2013, 22:53:38
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"; } |
||
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"; } |
||
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"; } $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 ;-) |
||
Časová prodleva: 1 měsíc
|
|||
Tori Profil |
#12 · Zasláno: 9. 11. 2013, 00:02:10
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.
|
||
Časová prodleva: 10 let
|
0