Autor | Zpráva | ||
---|---|---|---|
nigdo Profil |
#1 · Zasláno: 10. 12. 2010, 14:25:30
Už od včera si nevím s tímto problémem rady:
Mám 2 oznámení, která chci, aby se pravidelně střídali při každém dalším kliknutím na odkaz (tedy přechod na další stránku). Po projití pár textů, jsem se rozhodl pro sessions, ale nefunguje to jak má: session_start(); //... if (isset($_SESSION['cislo'])) { if ($_SESSION['cislo'] == "1") { //text1 $_SESSION['cislo'] = "2";} else { //text2 $_SESSION['cislo'] = "1";}} else{ //text3 $_SESSION['cislo'] = "1";}; Při tomto kódu mi neustále vyskakuje "text1". Nevíte někdo co dělám špatně? |
||
Keeehi Profil |
#2 · Zasláno: 10. 12. 2010, 14:36:14 · Upravil/a: Keeehi
nigdo:
Až na pár věcí to máš správně. úplně poslední středník tam nemá co dělat. Číslo ukládáš jako string, proč? Ale na funkčnost by to mít vliv nemělo (pro dva stavy by se lépe hodilo true/false nebo 1/0) Chybu tam tedy obecně nemáš. Zkus si tedy před tou podmínkou vypsat tu sessions, ať víš, co tam leze (var_dump). Takto by to mohlo vypadat s true/false: session_start(); //… if (isset($_SESSION['cislo'])) { if($_SESSION['cislo']) //text1 else //text2 $_SESSION['cislo']=!$_SESSION['cislo']; else{ //text3 $_SESSION['cislo'] = true; } |
||
Spectator Profil |
#3 · Zasláno: 10. 12. 2010, 14:43:21
nigdo:
Co je na tom špatně? Funguje to normálně. |
||
nigdo Profil |
#4 · Zasláno: 10. 12. 2010, 14:50:35
Spectator:
Špatně je to, že mi při první návštěvě vyskočí text3, a pak už jen stále text1. Správně by se měly text1 a text2 střídat. |
||
nigdo Profil |
#5 · Zasláno: 10. 12. 2010, 14:58:45 · Upravil/a: nigdo
Keeehi:
Díky za pomoc, ale problém je pořád stejný. Zkoušel jsem to na localhostu i na serveru, ale chová se to stejně. Není tedy nějaká jiná možnost, jak zařídit střídání dvou věcí? session_start(); //… var_dump($_SESSION['cislo']);//stále se drží true if (isset($_SESSION['cislo'])) { if($_SESSION['cislo']) //text1 var_dump($_SESSION['cislo']);//true $_SESSION['cislo']=!$_SESSION['cislo']; var_dump($_SESSION['cislo']);//false else //text2 $_SESSION['cislo']=!$_SESSION['cislo']; else{ //text3 $_SESSION['cislo'] = true; } |
||
tiso Profil |
#6 · Zasláno: 10. 12. 2010, 15:15:50
nigdo: Keeehi tam nedoplnil zátvorky okolo if/else, takže tvoj kód robí niečo iné ako ten od Keeehi.
|
||
nigdo Profil |
#7 · Zasláno: 10. 12. 2010, 15:21:06
tiso:
V kódu je mám, když jsem to psal, tak jsem to jen zkopíroval od Keeehi a přikopíroval tam pár věcí. |
||
tiso Profil |
#8 · Zasláno: 10. 12. 2010, 15:42:52 · Upravil/a: tiso
nigdo: ak by si ich doplnil správne, tak by ti ten kód fungoval.
Alebo máš chybu (ovplyvňuješ tú SESSION premennú) ešte niekde inde… |
||
nigdo Profil |
#9 · Zasláno: 10. 12. 2010, 15:55:16 · Upravil/a: nigdo
tiso:
Takhle to mám: (stále vyskakuje "text1") session_start(); //... if (isset($_SESSION['cislo'])) { if($_SESSION['cislo']){echo"text1"; var_dump($_SESSION['cislo']); $_SESSION['cislo']=!$_SESSION['cislo']; var_dump($_SESSION['cislo']);} else{echo"text2"; var_dump($_SESSION['cislo']); $_SESSION['cislo']=!$_SESSION['cislo'];}} else{ echo"text3"; $_SESSION['cislo'] = true; } Jinde se sessions nic nedělám. |
||
Spectator Profil |
#10 · Zasláno: 10. 12. 2010, 15:55:25
nigdo:
já tvůj kód okopíroval a funguje mi uplně bez problému. Spíš se podívej, jestli s $_SESSION['cislo'] nemanipuluješ někde mimo tent blok |
||
nigdo Profil |
#11 · Zasláno: 10. 12. 2010, 16:06:17
Spectator:
Tohle jsou jediné sessions, které na celém webu používám. Vyzkoušel jsem to ve více prohlížečích: IE: zasekne se to na text2 (už se to pak nezmění) FF: totéž, ale s text1 Opera: totéž, ale s text1 Chrome: funguje bez chyby |
||
xmark Profil |
#12 · Zasláno: 10. 12. 2010, 17:23:16
Nemůže být problém v tom, že se snažíš tu session zpracovávat jako bool? Neříkám, že by to nemělo fungovat, ale nemám v to úplnou důvěru. Zkusil bych tam místo toho pracovat třeba s nulou a jedničkou.
|
||
Spectator Profil |
#13 · Zasláno: 10. 12. 2010, 17:47:38 · Upravil/a: Spectator
nigdo:
xmark: „Zkusil bych tam místo toho pracovat třeba s nulou a jedničkou.“ Ano! Bez uvozovek. Pokud ti to někde funguje a někde ne, tak neni problem v session ani v podmínkách, ale v tom, čim to plníš, protože už tu moc jiných věcí nezbývá. |
||
xmark Profil |
#14 · Zasláno: 10. 12. 2010, 18:07:46
Spectator:
Ano. Bez uvozovek. Vždycky chci mít jasno, jestli pracuju s boolem, číslem nebo stringem. A právě proto, že tady mi to jako úplná jistota nepřipadá, protože obsah session se ukládá jako string, navrhuju zkusit jiné řešení - číslo, protože tam je chyba vyloučena. Netvrdím, že chyba při konverzi bool -> string -> bool nastala, jen eliminuju tu možnost. Co se ti na tom nelíbí? „Pokud ti to někde funguje a někde ne, tak neni problem v session ani v podmínkách“ Ta úvaha je v pořádku, za předpokladu, že nigdo to chování popsal přesně a nespletl se. A těch případů jsem tady viděl větší než malé množství. |
||
Spectator Profil |
#15 · Zasláno: 10. 12. 2010, 19:21:20
xmark:
„za předpokladu, že nigdo to chování popsal přesně a nespletl se“ To je pravda. Dost často se zakomentuje část v podmínce a napíše výmluvně // nejaky text a pritom je zasadni chyba prave tam |
||
nigdo Profil |
#16 · Zasláno: 10. 12. 2010, 19:53:05 · Upravil/a: nigdo
Dal jsem tam tedy čísla, ale problém přetrvává, Chrome funguje bez chyby, IE má průběh text3, text1, a poté zůstane na text2, FF a Opera zůstanou už na text1.
Přímo v kódu žádné komentáře nemám. if (isset($_SESSION['cislo'])) { if($_SESSION['cislo'] == 1){ echo"text1"; $_SESSION['cislo'] = 2; var_dump($_SESSION['cislo']);}//píše int(2) else{ echo"text2"; $_SESSION['cislo'] = 1; var_dump($_SESSION['cislo']);}}// píše int(1) else{ echo"text3"; $_SESSION['cislo'] = 1;} Nenapadá tedy někoho úplně jiný způsob, jak zajistit střídaní dvou věcí? |
||
Spectator Profil |
#17 · Zasláno: 10. 12. 2010, 20:11:01 · Upravil/a: Spectator
nigdo:
já používám operu a funguje normálně to, co tady odsud okopíruju. Pokud tam v tom skriptu nemáš ještě něco okolo, tak je problém někde ve hvězdách, protože mě to funguje od začátku stejně a to uplně v klidu EDIT: Vyzkoušeno v Opeře, IE6, FF - proste uplně v klidu. Řekl začínám mít obavu, že problém je někde u tebe Tady je link na ozkoušení. je to přesně to, co jsem tady okopčil |
||
nigdo Profil |
#18 · Zasláno: 10. 12. 2010, 20:25:38 · Upravil/a: nigdo
Spectator:
Tohle mi funguje dobře. Chyba je tedy u mě. Zkusil jsem vymazat nějaké js, jestli se to neruší, a po smazání <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> Díky všem za pomoc. |
||
Spectator Profil |
#19 · Zasláno: 10. 12. 2010, 20:28:26
nigdo:
Neni zač =) |
||
Časová prodleva: 13 let
|
0