Autor Zpráva
perwin
Profil
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
perwin:
 $query = MySQL_Query("SELECT jmeno, online FROM `uzivatele` WHERE  online='yes'")
perwin
Profil
Jojo díky
perwin
Profil
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
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
TomasJ:
Ne, toto nefunguje,...
LosFilipos
Profil
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
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
TomasJ tam měl ještě starou query, ale tu tam snad nemáš... je teda vlastně někdo online dle DB?
perwin
Profil
Nox:
Ano, je
perwin
Profil
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
perwin:
Musí tam být i tohle...
$rows = mysql_num_rows($query);
perwin
Profil
LosFilipos:
Děkuji mockrát, nyní mi to již funguje :-)
perwin
Profil
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
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
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
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
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
LosFilipos:
Dekuji, už mi to funguje :-)
perwin
Profil
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
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
Nox:
Něco přesnějšího bys prosím neměl? Třeba script nebo tak... Děkuji
Nox
Profil
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
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
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?

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0