Online status wordt niet goed weergegeven
die de online status van de user moet laten weergeven.
heb 2 users online
maar 1 zegt ie online de andere geeft aan offline.
dit is de code
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$user1 = mysql_query("SELECT * FROM users")or die (mysql_error());
while($user = mysql_fetch_object($user1))
{
$dbres = mysql_query("SELECT * FROM users WHERE UNIX_TIMESTAMP(NOW())
-UNIX_TIMESTAMP(online) < 20000") or die (mysql_error());
$online2 = mysql_fetch_object($dbres);
if($online2->login == $user->login)
{
$online = "plaatje online";
}
else
{
$online = "plaatje offline";
}
}
echo $online;
?>
$user1 = mysql_query("SELECT * FROM users")or die (mysql_error());
while($user = mysql_fetch_object($user1))
{
$dbres = mysql_query("SELECT * FROM users WHERE UNIX_TIMESTAMP(NOW())
-UNIX_TIMESTAMP(online) < 20000") or die (mysql_error());
$online2 = mysql_fetch_object($dbres);
if($online2->login == $user->login)
{
$online = "plaatje online";
}
else
{
$online = "plaatje offline";
}
}
echo $online;
?>
Maar als ik dit zo doe dan geeft ie altijd de offline weer.
Hoe kan ik dit toch goed krijgen
Gewijzigd op 13/06/2010 21:15:21 door Thomas de vries
SELECT *
FROM users
WHERE UNIX_TIMESTAMP(NOW())
UNIX_TIMESTAMP(online) < 20000
Je maakt zo ie zo al de fout om met UNIX_TIMESTAMP te gebruiken
Kijk nu eens naar de gewone datum/tijd functies
Dan laat ie de resultaten gewoon zien.
mysql_fetch_object is hier volgensmij ook niet nodig. assoc of array zou toch ook wel werken?
Waarom gebruik je een wildcard (*) en niet gewoon roepen wat je nodig hebt voor die pagina?
Wel dan wil ik wel eens weten welke query jij opvoert aan phpmyadmin in ieder geval niet de query welke uit jouw openingspost is af te leiden.
gerbuikt. heb met alle drie gedaan zelfde resultaat.
Heb nu ook dit gedaan
voor de laatse afsluit accolade echo $online2->login;
dan krijg ik deze resultaten
blaat
blaat
en het moet dit zijn
blaat
blaat2
dus op 1 van de manieren gaat het niet goed en ik zie de fout niet?
misschien 1 van jullie
@Noppes Homeland
Het is dezelfde code
$dbres = mysql_query("SELECT * FROM users WHERE UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(online) < 200000") or die (mysql_error());
Gewijzigd op 13/06/2010 21:23:33 door thomas de vries
Thomas de vries op 13/06/2010 21:22:20:
Het maakt voor dit probleem niet veel uit of je nu assoc/array of object
gerbuikt. heb met alle drie gedaan zelfde resultaat.
gerbuikt. heb met alle drie gedaan zelfde resultaat.
Voor het probleem niet nee.
Maar qua snelheid is assoc de beste. In deze code is die traagheid van object nergens voor nodig
Olie koning op 13/06/2010 21:26:00:
Voor het probleem niet nee.
Maar qua snelheid is assoc de beste. In deze code is die traagheid van object nergens voor nodig
Thomas de vries op 13/06/2010 21:22:20:
Het maakt voor dit probleem niet veel uit of je nu assoc/array of object
gerbuikt. heb met alle drie gedaan zelfde resultaat.
gerbuikt. heb met alle drie gedaan zelfde resultaat.
Voor het probleem niet nee.
Maar qua snelheid is assoc de beste. In deze code is die traagheid van object nergens voor nodig
Nee dit kan altijd verandert worden.
Heb nu veel dingen gezien op dit topic maar niet het antwoord wat het kan zijn.
Srry hiervoor.
Maar als ik vraag of assoc beter is dan object dan vraag ik erom.
Maar dit vraag ik nu niet.
Thomas de vries op 13/06/2010 21:29:24:
Nee dit kan altijd verandert worden.
Heb nu veel dingen gezien op dit topic maar niet het antwoord wat het kan zijn.
Srry hiervoor.
Maar als ik vraag of assoc beter is dan object dan vraag ik erom.
Maar dit vraag ik nu niet.
Olie koning op 13/06/2010 21:26:00:
Voor het probleem niet nee.
Maar qua snelheid is assoc de beste. In deze code is die traagheid van object nergens voor nodig
Thomas de vries op 13/06/2010 21:22:20:
Het maakt voor dit probleem niet veel uit of je nu assoc/array of object
gerbuikt. heb met alle drie gedaan zelfde resultaat.
gerbuikt. heb met alle drie gedaan zelfde resultaat.
Voor het probleem niet nee.
Maar qua snelheid is assoc de beste. In deze code is die traagheid van object nergens voor nodig
Nee dit kan altijd verandert worden.
Heb nu veel dingen gezien op dit topic maar niet het antwoord wat het kan zijn.
Srry hiervoor.
Maar als ik vraag of assoc beter is dan object dan vraag ik erom.
Maar dit vraag ik nu niet.
We mogen je niet wijzen op andere verbeteringen voor je script?
als ook de oplossing maar komt dan vindt ik het goed.
Maar zal je een hint geven. Waar is je where?
Hoe weet hij nu in de 2e query met wat hij moet vergelijken.
logischer zou zijn iets in de trend van:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$sQuery = "SELECT * FROM users"; // Al snap ik je unix_timestamp niet echt.. Leer de standaard mysql functions in combo met php function. Dan zou je 2e query overbodig worden...
$oSql = mysql_query($sQuery);
while($aFetch = mysql_fetch_assoc($oSql)) {
$sWhileQuery = "SELECT * FROM users WHERE UNIX_TIMESTAMP(NOW())
-UNIX_TIMESTAMP(online) < 20000 AND userid=".$aFetch['userid'];
$oWhileSql = mysql_query($sWhileQuery);
$iWhileNum = mysql_num_rows($oWhileSql); //of een fetch_assoc
if($iWhileNum == 0) {
// NIET ONLINE
} else {
// ONLINE
}
}
?>
$sQuery = "SELECT * FROM users"; // Al snap ik je unix_timestamp niet echt.. Leer de standaard mysql functions in combo met php function. Dan zou je 2e query overbodig worden...
$oSql = mysql_query($sQuery);
while($aFetch = mysql_fetch_assoc($oSql)) {
$sWhileQuery = "SELECT * FROM users WHERE UNIX_TIMESTAMP(NOW())
-UNIX_TIMESTAMP(online) < 20000 AND userid=".$aFetch['userid'];
$oWhileSql = mysql_query($sWhileQuery);
$iWhileNum = mysql_num_rows($oWhileSql); //of een fetch_assoc
if($iWhileNum == 0) {
// NIET ONLINE
} else {
// ONLINE
}
}
?>
Toevoeging;
Daarnaast echo je de online NA je while. Dus enkel de laatste users zal worden getoond (zijn status dan)
Gewijzigd op 13/06/2010 22:03:15 door Remco nvt