| Autor | Zpráva | ||
|---|---|---|---|
| tomasj Profil * |
#1 · Zasláno: 1. 5. 2008, 14:51:23
Zdravím
Vytvořil jsem si tabulku do které ukládám údaje uživatelů a také čas jejich poslední návštěvy stránky..Podle toho potom vypíšu seznam online uživatelů
$vysledek=mysql_query("select jmeno,id,DATE_FORMAT(last, '%i') as
last FROM uzivatele
WHERE last > NOW() - INTERVAL 3 MINUTE") or die
(mysql_error());
while ($zaznam=MySQL_Fetch_Array($vysledek)){
echo ' <a href="uzivatel.php?profil='.$zaznam["id"].'">'.$zaznam["jmeno"].'</a>';
}Tento kod funguje, ale má jednu vadu... Když je uživatel na stránku jednou vstoupí, tak se do toho seznamu přidá (což je správně), ale potom tam zůstane na pořad, tím pádem si mi tam po čase hromadí jen jména... Potřeboval bych poradit, jak vynulovat last ( poslední návštěva jednotlivých uživatelů) a tím je odstranit ze seznamu...Zkoušel jsem něco takového... $casmaz = time() - 180; $sql = "UPDATE FROM uzivatele SET last='0' WHERE last < $casmaz"; Ale nefunguje to...Předem děkuji za rady |
||
| Joker Profil |
#2 · Zasláno: 1. 5. 2008, 15:08:34
tomasj
Nemělo by být potřeba to vynulovávat, stačí ta podmínka v SELECTu, ne? Pokud tam zůstávají všichni uživatelé (ne jen ti, kteří mají last > před třemi minutami) tak je možná chyba v té podmínce. |
||
| tomasj Profil * |
#3 · Zasláno: 1. 5. 2008, 15:10:43
Joker
No to jsem si taky myslel, ale nevím... Žádnou chybu mi to neháže ... Nemáš třeba svůj script nebo jiné řešení, protože já už potom vážně nevim :-( |
||
| Joker Profil |
#4 · Zasláno: 1. 5. 2008, 15:17:57
tomasj
Já si právě nejsem úplně jistý, jak funguje ta uvedená konstrukce s datem. Ve svém skriptu si to obvykle zjednodušuju tak, že to převedu na timestamp, což je normální číslo, které pak stačí odečíst :-) |
||
| Kcko Profil |
#5 · Zasláno: 1. 5. 2008, 15:41:53 · Upravil/a: Kcko
DELETE FROM ... WHERE last < NOW() - INTERVAL 3 MINUTE
|
||
| tomasj Profil * |
#6 · Zasláno: 1. 5. 2008, 16:20:40
to Kcko:
Žádná změna :-( |
||
| Joker Profil |
#7 · Zasláno: 1. 5. 2008, 18:58:31
ad Kcko:
Pozor, DELETE ty řádky smaže, takže pokud si ten příznak ukládáte přímo do tabulky uživatelů, budete vymazávat uživatele. |
||
| Kcko Profil |
#8 · Zasláno: 1. 5. 2008, 19:04:45
Ah sorry, spatne sem to precetl
UPDATE uzivatele SET last = 0 WHERE last < DATE_SUB(NOW(), INTERVAL 3 MINUTE) Tohle musi fungovat |
||
| tomasj Profil * |
#9 · Zasláno: 2. 5. 2008, 08:30:54
No bohužel nic, ale tak mě napadlo, jestli mám správný typ sloupce na to ukládání posledního času návštěvy- používám BIGINT..Tak nevím, jestli je to kvůli tomu nebo ne..
|
||
|
Časová prodleva: 17 let
|
|||
0