Dobrý den, mam problém, který mi hlava trochu nebere. Možná je to prkotina, který jsem si nevšiml. S php dělám po dlouhé době, takže je to možné.
Kód
if(pg_num_rows(Pg_exec("SELECT ip FROM stats_unique_ip WHERE ip = ".SQLstring($_SERVER['REMOTE_ADDR']).""))>0){
if(!isset($_COOKIE['stats'])){
echo "Jde to ale i tudy";
$query_str = "UPDATE stats_unique_ip SET counter = ((SELECT counter FROM stats_unique_ip WHERE ip = ".SQLstring($_SERVER['REMOTE_ADDR']).")+1);";
Pg_exec($query_str);
}else{
echo "Tudy to má jít.";
}
}else{
$query_str ="INSERT INTO stats_unique_ip(id, ip, counter) VALUES (DEFAULT, ".SQLstring($_SERVER['REMOTE_ADDR']).", 0);";
Pg_exec($query_str);
}
setcookie('stats',sha1('gsdgdsnl'), time() + 3600);
Mam tam přidaný echa pro kontrolu.
Jinak účel kódu je: Pokud není IP adresa návštěvníka v DB ulož ji tam a nastav cookie, aby při reloadu stránky se už nevložilo do DB.
Pokud IP již v DB je tak updatni hodnotu counter (+1) a nastav cookie ze stejného důvodu jako předtim.
A teď problém.
Při příchodu se vloží řádek, když reloadnu, tak se mi vypíše "Tudy to má jít." což je přesně to co to má dělat, ale ono to zároveň provede příkaz update. Podivné je to že echo před tím dotazem se nevypíše a když si dam po tomhlé kódu vypsat $query_str tak je tam prázdný řetězec, což je zase to co tam má být.
prostě deje se něco takovéhoto
if(a){
vypis neco
updatni
}else{
vypis blábol
}
a ono to zároveň updatne a vypíše blábol, ale nevypíše něco. Fakt divné.
PS: prosím nesmějte se pokud je tam nějaká blbost, který sem si nevšim :-D :-D
EDIT: Tak sem zjistil, že problém asi nebude ve skriptu, protože v FF to funguje tak jak má. Chyba je pouze v Opeře, ale když se podívam do nastavení, tak je tam moje cookie uložena. Takže to vypadá jako kdyby Opera tu cookie neposlala. Nemáte někdo nějaký nápad jak to vyřešit?