NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Zobrazovanie užívateľov online

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Marek Burda
Člen
Avatar
Marek Burda:18.3.2016 21:59

Zdravím. Na svojej stránke chcem zaviesť zobrazovanie užívateľov ktorý sú online. Kódy už mám no niečo nefunguje. Prvá chyba : ked je id hráča(prihlaseny) zo sessionu číslo 1, tak to do druhej db zapíše číslo 0 netuším prečo. Druhá chyba je to, že čas je tam nereálny a zorbazuje to niekoľko miliónov sekúnd. Prikaldám kódy. Poprípade budem rád za nejaký funkčný návod ako vytvoriť zobrazovanie hráčov ktorý sú online.

function update(){
if(isset($_SESSION["prihlaseny"])){

$time = time();
$query = "REPLACE INTO status(id_hraca,activity) VALUES ('".$SESSION["prihlaseny"]."','".$time."');";
$res = mysql_query($query) or die(mysql_error());
}
}

function getOnline(){
$casAktivity = 300;

$time = time()-$casAktivity;

$query = "DELETE FROM status WHERE activity < ".$time.";";
$res = mysql_query($query) or die(mysql_error());

$query = "SELECT p.id_hraca as id_hraca , p.meno as meno FROM status s, players p WHERE p.id_hraca = s.id_hraca;";
$res = mysql_query($query) or die(mysql_error());
$online = array();

while ($riadok = mysql_fetch_assoc($res))
$online[] = $riadok;

return $online;
}

Zorbazovanie :

$online = getOnline();

echo "Online hráči: <br>";

if(sizeof($online) >0) {
        foreach ($online as $hrac) {
                echo "ID hráča: {$hrac["id_hraca"]} ";
                echo "Meno hráča: {$hrac["meno"]} <br>";
        }
}else{
        echo"Nikto nieje online.";
}
 
Odpovědět
18.3.2016 21:59
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Marek Burda
Jan Lupčík:19.3.2016 7:05

Ty tam vkládáš $SESSION, ne $_SESSION. Čas je v pořádku, vrací ti Unix timestamp (nevím, jak to nazvat česky), mrkni se na tu funkci: http://php.net/…ion.time.php. Stačí ho jen naformátovat např.

date("d.m.Y", $time);

Btw. začni používat místo mysql_query() mysqli_query() či PDO. Přečti si něco o nich. :)

Nahoru Odpovědět
19.3.2016 7:05
TruckersMP vývojář
Avatar
Marek Burda
Člen
Avatar
Marek Burda:19.3.2016 11:51

Ďakujem veľmi pekne za pomoc :) Už to funguje. Stačí vynechať jeden znak a už to nebude klapať :) Ďakujem aj za spomenutú radu určite sa nato pozriem :)

 
Nahoru Odpovědět
19.3.2016 11:51
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Marek Burda
Jan Lupčík:19.3.2016 13:38

Není zač, ale IDE by tě mělo na to upozornit. :)
Btw. příště použij tlačítko Odpovědět, ať mi přijde upozornění o tvé zprávě.

Nahoru Odpovědět
19.3.2016 13:38
TruckersMP vývojář
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.