« 1 2 »
Autor Zpráva
Valdes
Profil *
Mohl by mi prosim nekdo poradit jak udelat seznam registrovanych uzivatelu ktery josu online ?
panther
Profil
Valdes:
hledat zde na diskusi jsi nezkoušel, že?
Valdes
Profil *
zkousel ale pisou tu jen jak udelat stav uzivatele a ne seznam uzivatelu ktery sou online
panther
Profil
Valdes:
stav si ukládej do DB, ty kteří budou mít stav online/1 nebo cokoliv jiného, vypiš. Nic víc, nic míň.
Vojtíšek
Profil *
Valdes:
zkousel ale pisou tu jen jak udelat stav uzivatele a ne seznam uzivatelu ktery sou online
Tak si zjisti stavy uživatelů, kteří jsou online a potom je vypiš pod sebe.
radvis
Profil *
Jen takový dotaz, když si dám, že bude lognutej třeba na měsíc jak zjístím, že přišel v tuto chvíli na web (abych přepsal stav), díky.
hary28
Profil
radvis:
Lepší by bylo kdyby sis zaznamenával datum a čas aktivity uživatelů a pak to porovnával s reálným časem. Poté už jenom vypisovat uživatele kteří byly aktivní v posledních 5 minutách.

Je to jen návrh a pokud by jsi měl hodně uživatelů tak by to znamenalo i velké zatížení SQL což není dobré. :)
Valdes
Profil *
Poradite mi teda jak by mela vypadat tabulka do ktery se bude zapisovat to ze je online (ja to potom budu vypisovat z ty tabulky) a jak dosahnout toho ze az se odhlasi tak se z ty tabulky zase vymaze ? nebo mate nejaky odkaz na nejakou stranku kde by tenhle script mohl byt popsanej popripade ke stazeni ?
Nox
Profil
user_lastclick (engine=MEMORY):
id_user
time (datetime)

jako optimalizaci můžeš přidat

users:
+ sloupec "online" (bool)

při při/odhlášení se nastaví online na 0/1
cron občas podle posledního kliku přepne podle posledního kliku z 0 na 1
Valdes
Profil *
Takhle by měla vypadat ta tabulka jo ?
Valdes
Profil *
Takže jsem pochopil že ta tabulka by měla vypadat takhle ?

CREATE TABLE `user_lastclick` (
  `id_user` smallint(6) NOT NULL default '0',
  `time` smallint(6) NOT NULL default '0',
 
Nox
Profil
u time jsem uvedl typ datetime
default hodnoty tam asi nemají smysl

možná místo time by se to mohlo pojmenovat nějak smysluplněj
radvis
Profil *
hary28: to je dobrý nápad, ale přesto bych byl rači kdyby to bylo pravě teď.
Valdes
Profil *
Nox:
Takze u TIME napísu misto default - datetime, a co napisu u toho id_user misto default ?
panther
Profil
Valdes:
a co napisu u toho id_user misto default ?
nic. Žádná defaultní hodnota tam nebude, bude hodnota nějakého konkrétního uživatele.
Kcko
Profil
Updatuj pri kazdym kliku prihlaseneho uzivatele jeho cas

TJ.

UPDATE users SET lastActivity = NOW() WHERE userID = ...


A pak to vytahnes jednoduchym dotazem typu

SELECT ... FROM users WHERE DATE_SUB(NOW(), INTERVAL 5 MINUTE) > lastActivity 
Valdes
Profil *
kdyz chci vytvorit tabulkku tak mi to napise tuhle chybu :
Chyba

SQL-dotaz:

CREATE TABLE `user_lastclick` (
`id_user` smallint( 6 ) NOT NULL '0',
`time` smallint( 6 ) NOT NULL datetime '0',

MySQL hlásí: Dokumentace
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0',
`time` smallint(6) NOT NULL datetime '0',' at line 2
Keeehi
Profil
Valdes:
CREATE TABLE `user_lastclick` ( 
`id_user` smallint( 6 ) NOT NULL, 
`time` datetime NOT NULL)

datetime je datový typ stjně jako smalint, int, nebo varchar
Valdes
Profil *
I kdyz udelam tohle tak mi to stejne napise chybu, uz nevim co s tim, poradte prosim :-(

Chyba

SQL-dotaz:

CREATE TABLE `user_lastclick` (
`id_user` smallint( 6 ) NOT NULL '0',
`time` datetime NOT NULL '0'
)

MySQL hlásí: Dokumentace
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0',
`time` datetime NOT NULL '0')' at line 2
Skeletal
Profil *
Měl bych stejný dotaz, jen nepoužívám databázi MySQL ale textový soubor. Věděl bych jak udělat aby to uživatele přidalo do bloku online uživatelů, nevím ale jak udělat aby odtamtud zmyzel když vypne prohlížeč nebo když se odhlásí. Je na to nějaká metoda/funkce v php ?
Keeehi
Profil
Valdes:
S tebou je to těžké, když neumíš ani číst.

Skeletal:
Doporučoval bych databázi. Tam se dá pracovat s řádky. Soubory k tomu určené totiž nejsou.
Skeletal
Profil *
Keeehi: Aha, no já už skoro ty uživatele vyřešil jen bych potřeboval nějakou funkci nebo metodu která by nahrazovala v proměnné v které bude uložen text, slovo za jiné. Například bych měl v proměnné uložený text: Ahoj jak se máš ? A to jak by nahradilo třeba za proč. Změnilo by to tedy větu na Ahoj proč se máš ? Je to sice nesmysl ale využil bych to k změně toho seznamu uživatelů. Je nějaká taková funkce ?
Valdes
Profil *
Keeehi:
proc cist, udelal jsem co jste mi rekli, misto smallint jsem dal datetime a stejne to nejde :-(
Keeehi
Profil
Skeletal:
Existuje. Můžeš použít t řeba PHP: preg_replace - Manual nebo PHP: str_replace - Manual.

Valdes:
Tak ani dívat se nebo kopírovat. Když porovnáš můj dotaz [#18] a ten co jsi sem napsal [#19], že to stjně nefunguje, tak zjistíš, že na konci máš '0' navíc.
Valdes
Profil *
Dekuju uz sem ji vytvoril, a ted tam kde chci aby se zobrazovalo kdo je online napisu tenhle kod ?
<?
UPDATE user_lastclick SET lastActivity = NOW() WHERE userID = 

SELECT ... FROM user_lastclick WHERE DATE_SUB(NOW(), INTERVAL 5 MINUTE) > lastActivity 
?>
Skeletal
Profil *
Keeehi: Díky to jsem potřeboval.
AM_
Profil
Valdes:
Dekuju uz sem ji vytvoril, a ted tam kde chci aby se zobrazovalo kdo je online napisu tenhle kod ?
jak to máme vědět jestli tam napíšeš tenhle kód? co je to za dotaz?

tenhle kód bych raději nikam nepsal, kromě toho, že je to nesmysl, je to SQL jazyk jentak plácnutý do PHP závorek <? ?>.
Začal bych tady článkem 34.
antispam
Profil *
tu tabulku sem udelal takle:
MySQL_Query("UPDATE uzivatele SET time = NOW() WHERE id = ".$_SESSION['id']."") or die (mysql_error());

ale jak pak mám vypsat, když uživatelovo time je o 5 minut menší než aktualní čas a je tedy offline. Ostatní online.
mattyZEM
Profil
NOW() je TIMESTAMP?

Jestli ano, pak:
mysql_query("SELECT cochces FROM uzivatele WHERE time>=NOW()-300");
antispam
Profil *
to jo, ale pak co mám vypsat? time?
« 1 2 »

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0