Autor | Zpráva | ||
---|---|---|---|
qteck Profil |
#1 · Zasláno: 2. 8. 2010, 11:22:55
ahoj, mám takový problém s kontrolou pole.
Z počátku jsem si říkal, půjdu na to od lesa, vezmu to přes explode a pak porovnám pomoci funkce in_array, bohužel, nejde to! :(. Nevím proč, pote jsem sepsal toto. Což taky nejde. Pro přiblížení, snažim se z proměnné $_SESSION[visit] (2#58#99#24), v závorce vidíte tvar, rozdělit záznamy a porovnat s proměnnou id. Pokud se shodují, funkce hodí obsah pole. To co sem sepsal nefunguje, ne že by to házelo chybu, spiš jde o problém samotné konstrukce. díky za reakce-:-) function visitf() { $pole = explode("#", $_SESSION[visit]); for($i; count($pole) > $i; $i++) { if($pole[$i++]==$id) { break; return $pole[$i]; } else return "false"; } } echo visitf(); if(!visitf()) { $_SESSION[visit] .= $id.'#'; $sql = mysql_query("UPDATE article SET visitors = visitors+1 WHERE id= '$id'"); echo $sql?'ok':'err'; } |
||
tiso Profil |
#2 · Zasláno: 2. 8. 2010, 11:36:58
qteck: vo funkcii visitf() porovnávaš prvok poľa s premennou $id, ale túto vo funkcii nepoznáš. Predávaj ju cez parameter. Okrem toho tam máš niekoľko ďalších chýb.
|
||
qteck Profil |
#3 · Zasláno: 2. 8. 2010, 12:33:35
jakých dalších?
|
||
tiso Profil |
#4 · Zasláno: 2. 8. 2010, 12:45:50
qteck: napríklad:
-chýbajúce úvoodzovky/apostrofy v $_SESSION[visit] -dvojitá inkrementácia $i (raz vo for, druhýkrát v if) -pokiaľ sa $id nerovná prvému kľúču, tak sa vráti false, inak sa nevráti nič. |
||
qteck Profil |
#5 · Zasláno: 2. 8. 2010, 12:51:02
function visitf($id) { $pole = explode("#", $_SESSION[visit]); for($i; count($pole) > $i; $i++) { if($pole[$i] == $id) { break; return $pole[$i]; } else return "false"; } } - toz, uvozovky byt nemusi, nebo proc ? je to vyhodnejsi? naopak se mi zda ze vyhodnejsi je bez uvozovek, protože je kratší. nebo ide o něco jiného? return $pole hodi obsah pole, co je brano jako true, protoze hazi nejaky obsah. nebo vo co de? |
||
__construct Profil |
#6 · Zasláno: 2. 8. 2010, 13:17:09 · Upravil/a: __construct
qteck:
„toz, uvozovky byt nemusi, nebo proc ? je to vyhodnejsi? naopak se mi zda ze vyhodnejsi je bez uvozovek, protože je kratší. nebo ide o něco jiného?“ Pozri si toto function visitf($id) { $pole = explode("#", $_SESSION["visit"]); for($i; count($pole) > $i; $i++) { if($pole[$i] == $id) { break; return $pole[$i]; } else return false;//boolean hodnoty sa píšu bez úvodzoviek a apostrofov } } |
||
tiso Profil |
#7 · Zasláno: 2. 8. 2010, 13:37:45
qteck: „return $pole hodi obsah pole, co je brano jako true, protoze hazi nejaky obsah. nebo vo co de?“
tak si to vyskúšaj: var_dump(visits(2)); //sem dosad prvy prvok zo session
|
||
qteck Profil |
#8 · Zasláno: 2. 8. 2010, 14:15:56
oka:-), opravim si to
k cemu se pouziva funkce var dump? casto ji potkávam, ale zatim jsem ji nikdy nepoužil. prosim vas, me ten kod stale nefunguje, ja nevim, kde je chyba. jsem se do tohoto vyvojového stadia dostal nedavno a dnes poprve pracuju s poli takovýmto zpusobem. $_SESSION ma obsah "75#75#75#75#75#75#75#75#" a potrebuju overit jestli se mezi temi zaznamy naleza hodnota z $id ktera je jen obyc. cislo. function visitf($id) { $pole = explode("#", $_SESSION["visit"]); for($i; count($pole) > $i; $i++) { if($pole[$i] == $id) { break; return var_dump($pole[$i], true); } else return false; } } if(!visitf($id)) { $_SESSION["visit"] .= $id.'#'; $sql = mysql_query("UPDATE article SET visitors = visitors+1 WHERE id= '$id'"); echo $sql?'ok':'err'; } pouzil jsem var_dump, spravne? |
||
__construct Profil |
#9 · Zasláno: 2. 8. 2010, 16:17:10 · Upravil/a: __construct
qteck:
„pouzil jsem var_dump, spravne?“ Nie - var_dump nevracia žiadnu hodnotu - tzn. funkcia visitf() bude vždy FALSE function visitf($id) { $pole = explode("#", $_SESSION["visit"]); for($i = 0; count($pole) > $i; $i++) { if($pole[$i] == $id) { break; return var_dump($pole[$i], true); } else return false; } } if(!visitf($id)) { $_SESSION["visit"] .= $id.'#'; $sql = mysql_query("UPDATE article SET visitors = visitors+1 WHERE id= '$id'"); echo $sql?'ok':'err'; } |
||
Časová prodleva: 14 let
|
0