Autor | Zpráva | ||
---|---|---|---|
perwin Profil |
#1 · Zasláno: 12. 11. 2010, 21:11:44
Ahoj,
narazil jsem na problém, když jsem chtěl, aby se vypsal ten uživatel který je právě online (nebo těch online uživatelů může být více). Zařídil jsem si script, který zařídí, aby se do sloupce online v tabulce uzivatele vždy po přihlášení uživatele zapsalo 'yes' a při odhlášení uživatele 'no'. A teď vyrábím script, který vypíše ty uživatele, u kterých je ve sloupci online zapsáno 'yes', ale moc mi to nejde... script na vypsání: <?php require_once "db.php"; $query = MySQL_Query("SELECT jmeno, online FROM `uzivatele` WHERE '$_SESSION[online]=yes'") or die (mysql_error()); while($Vysledek = mysql_fetch_array($query)){ echo " ".$Vysledek['jmeno']." "; } ?> - určitě mám ten script špatně, ale doopravdy nevím, jak na to. Děkuji |
||
Taps Profil |
#2 · Zasláno: 12. 11. 2010, 21:15:54
perwin:
$query = MySQL_Query("SELECT jmeno, online FROM `uzivatele` WHERE online='yes'") |
||
perwin Profil |
#3 · Zasláno: 12. 11. 2010, 21:31:06
Jojo díky
|
||
perwin Profil |
#4 · Zasláno: 12. 11. 2010, 21:39:39
A jak mám udělat, aby se mezi jednotlivými uživateli vypisovala čárka (ale jenom tehdy, když je jich tam víc, ne aby tam byla když tam je jen jeden) a když tam nikdo není aby se tam napsalo 'nikdo'? Děkuji
|
||
TomasJ Profil |
#5 · Zasláno: 12. 11. 2010, 22:01:47
perwin:
zkus: <?php require_once "db.php"; $query = MySQL_Query("SELECT jmeno, online FROM `uzivatele` WHERE '$_SESSION[online]=yes'") or die (mysql_error()); $rows = mysql_num_rows($query); for($i=0;$i<$rows-1 && $rows>1;$i++){ while($Vysledek = mysql_fetch_array($query)){ echo $Vysledek['jmeno'].", "; } } ?> Nevím jestli to bude fungovat, nezkoušel jsem to. |
||
perwin Profil |
#6 · Zasláno: 12. 11. 2010, 22:08:09 · Upravil/a: perwin
TomasJ:
Ne, toto nefunguje,... |
||
LosFilipos Profil |
#7 · Zasláno: 12. 11. 2010, 22:08:54 · Upravil/a: LosFilipos
perwin:
„A jak mám udělat, aby se mezi jednotlivými uživateli vypisovala čárka (ale jenom tehdy, když je jich tam víc, ne aby tam byla když tam je jen jeden) a když tam nikdo není aby se tam napsalo 'nikdo'?“ $vypis = ""; if($rows>0) { while($Vysledek = mysql_fetch_array($query)) { $vypis .= ($vypis=="" ? $Vysledek['jmeno'] : ', '.$Vysledek['jmeno']); } } else { $vypis = 'Nikdo'; } echo 'Online uživatelé: '.$vypis; Tohle funguje... |
||
perwin Profil |
#8 · Zasláno: 12. 11. 2010, 22:11:58
LosFilipos:
Bohužel se mi nevypíšou ti, co jsou právě přihlášení, zůstane tam prostě jenom Online uživatelé: Nikdo |
||
Nox Profil |
#9 · Zasláno: 12. 11. 2010, 22:13:43
TomasJ tam měl ještě starou query, ale tu tam snad nemáš... je teda vlastně někdo online dle DB?
|
||
perwin Profil |
#10 · Zasláno: 12. 11. 2010, 22:15:06 · Upravil/a: perwin
Nox:
Ano, je |
||
perwin Profil |
#11 · Zasláno: 12. 11. 2010, 22:19:23 · Upravil/a: perwin
Zkouším nejrůznější možnosti, ale
<?php require_once "db.php"; $query = MySQL_Query("SELECT jmeno, online FROM `uzivatele` WHERE online = 'yes'") or die (mysql_error()); $vypis = ""; if($rows>0) { while($Vysledek = mysql_fetch_array($query)) { $vypis .= ($vypis=="" ? $Vysledek['jmeno'] : ', '.$Vysledek['jmeno']); } } else { $vypis = 'Nikdo'; } echo '<u>Online uživatelé:</u> '.$vypis; ?> mi nefunguje. Ale jinak děkuji Vám za scripty |
||
LosFilipos Profil |
#12 · Zasláno: 12. 11. 2010, 22:19:34 · Upravil/a: LosFilipos
perwin:
Musí tam být i tohle... $rows = mysql_num_rows($query); |
||
perwin Profil |
#13 · Zasláno: 12. 11. 2010, 22:22:38
LosFilipos:
Děkuji mockrát, nyní mi to již funguje :-) |
||
perwin Profil |
#14 · Zasláno: 13. 11. 2010, 18:30:37
Mám tu další problém: Jak se při loginu uživatele zapisuje do tabulky uzivatele do sloupce online 'yes' a při logoutu 'no', tak jsem při logoutu narazil na problém, a do sloupce online se nenapíše 'no'... script logoutu:
<?php session_start(); $_SESSION[login] = $uziv; ob_start(); // odhlaseni autora if(IsSet($_GET['logout']) and $_GET['logout']=="yes") { Session_Start(); Session_Destroy(); } header ("location: web.php?Alert=7"); $no="no"; $query = mysql_query("UPDATE uzivatele SET online='$no' WHERE jmeno='$uziv' ") or die (mysql_error()); require "db.php"; ob_end_flush(); ?> Děkuji |
||
Nox Profil |
#15 · Zasláno: 13. 11. 2010, 18:41:07
1. Co je v $uziv? Navíc to nevypadá escapovaně
2. Nejsou uvozovky/apostrofy kolem klíče na 3. řádku 3. Ř. 7 duplicitní session_start(); 4. Proč se includuje nějaké db.php až po volání query? 5. Pokud se $no bere skutečně jen z řádku 11, nevidim důvod proč to do query nenapsat rovnou 6. Proč se session ničí jen při podmínce na řádku 6, ale v databázi se označuje jako offline i bez toho? |
||
LosFilipos Profil |
#16 · Zasláno: 13. 11. 2010, 18:45:00 · Upravil/a: LosFilipos
perwin:
Mno já bych to napsat takto: <?php session_start(); if(IsSet($_GET['logout']) and $_GET['logout']=="yes") { $uziv = $_SESSION["login"]; ob_start(); Session_Destroy(); require "db.php"; $query = mysql_query("UPDATE uzivatele SET online='no' WHERE jmeno='$uziv' ") or die (mysql_error()); header ("location: web.php?Alert=7"); ob_end_flush(); } ?> |
||
perwin Profil |
#17 · Zasláno: 13. 11. 2010, 18:45:42
Nox:
Takto vypadal ten script, dokud jsem do něj nedosadil UPLOAD: <?php ob_start(); // odhlaseni autora if(IsSet($_GET['logout']) and $_GET['logout']=="yes") { Session_Start(); Session_Destroy(); } header ("location: web.php?Alert=7"); ob_end_flush(); ?> Jak to mám tedy upravit, aby se UPLOADoval sloupec online na 'no'? db.php je připojení k databázi. Děkuji |
||
LosFilipos Profil |
#18 · Zasláno: 13. 11. 2010, 18:46:30 · Upravil/a: LosFilipos
Nox:
„Co je v $uziv? Navíc to nevypadá escapovaně“ Jelikož se to do $_SESSION ukládá při loginu z databáze, tak bych to ani neescapoval... perwin: Viz můj předchozí post... |
||
perwin Profil |
#19 · Zasláno: 13. 11. 2010, 18:55:25
LosFilipos:
Dekuji, už mi to funguje :-) |
||
perwin Profil |
#20 · Zasláno: 14. 11. 2010, 12:50:22
Problém:
U hodně uživatelů se mi stává, že se ani neodhlásí a přihlášeni vypnou okno prohlížeče. Jenže tím, že nedají Odhlásit se, nestane se UPDATE sloupce online v databázi na 'no', zůstane tam 'yes' a i když už na stránkách nebudou, bude napsáno Online uživatelé: nekdo_kdo_se_neodhlasil. Jak mám zařídit, aby se to změnilo na 'no', když odejde ten dotyčný ze stránek? Děkuji |
||
Nox Profil |
#21 · Zasláno: 14. 11. 2010, 13:05:30
Ukládej si čas posledního kliku a globálně odhlaš všechny co nejsou už nějakou dobu aktivní (mysql datetime;" ... WHERE lastclick < (NOW() - INTERVAL ...)")
|
||
perwin Profil |
#22 · Zasláno: 14. 11. 2010, 13:48:00
Nox:
Něco přesnějšího bys prosím neměl? Třeba script nebo tak... Děkuji |
||
Nox Profil |
#23 · Zasláno: 14. 11. 2010, 13:53:12 · Upravil/a: Nox
perwin:
"Něco přesnějšího bys prosím neměl? Třeba udělat to za mě nebo tak... Děkuji" LosFilipos tě rozmazluje, zkus někdy něco sám, už sem ti to stejně skoro napsal |
||
perwin Profil |
#24 · Zasláno: 15. 11. 2010, 19:37:29 · Upravil/a: perwin
Když mám na stránce tento script:
mysql_query("UPDATE uzivatele SET lastActivity = NOW() WHERE jmeno='$_SESSION[login]' ") or Die(mysql_error()); mysql_query("SELECT lastActivity FROM uzivatele WHERE DATE_SUB(NOW(), INTERVAL 5 MINUTE) > lastActivity ")or Die(mysql_error()); - jak mám udělat, aby stránky provedly logout.php, když je uživatel nečinný déle jak 5 minut? Šlo by něco takového?: if(lastActivity < INTERVAL 5 MINUTE){ header("Location: logout.php?logout=yes"); }else{ } Děkuji |
||
perwin Profil |
#25 · Zasláno: 15. 11. 2010, 20:41:07
Toto já nechápu:
Když zadám: while($result=mysql_fetch_array($query)) { if($result['lastActivity']+300<mktime()) header("Location: logout.php?logout=yes"); } (300 jako 5 minut) - tak proč mě to odhlásí hned jak se přihlásím? |
||
Časová prodleva: 13 let
|
0