Online status wordt niet goed weergegeven

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thomas de vries

thomas de vries

13/06/2010 20:50:40
Quote Anchor link
Goedendag ik heb een probleempje ik ben bezig met een script
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)
PHP script in nieuw venster Selecteer het PHP script
1
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;
?>

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
 
PHP hulp

PHP hulp

22/12/2024 19:19:38
 
Noppes Homeland

Noppes Homeland

13/06/2010 21:01:01
Quote Anchor link
Maak ons eens deelgenood van de sql foutmelding die je zal moeten krijgen op:

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
 
Thomas de vries

thomas de vries

13/06/2010 21:11:11
Quote Anchor link
helaas geen foutmelding van die query ook niet als ik hem in phpmyadmin stop.
Dan laat ie de resultaten gewoon zien.
 
Crude Oil

Crude Oil

13/06/2010 21:12:57
Quote Anchor link
mysql_fetch_object is hier volgensmij ook niet nodig. assoc of array zou toch ook wel werken?
 
Erik Kraijenoord

Erik Kraijenoord

13/06/2010 21:16:31
Quote Anchor link
Waarom gebruik je een wildcard (*) en niet gewoon roepen wat je nodig hebt voor die pagina?
 
Noppes Homeland

Noppes Homeland

13/06/2010 21:17:22
Quote Anchor link
voorkeur gaat uiteraard uit naar assoc.

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.
 
Thomas de vries

thomas de vries

13/06/2010 21:22:20
Quote Anchor link
Het maakt voor dit probleem niet veel uit of je nu assoc/array of object
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
 
Crude Oil

Crude Oil

13/06/2010 21:26:00
Quote Anchor link
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.


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

thomas de vries

13/06/2010 21:29:24
Quote Anchor link
Olie koning op 13/06/2010 21:26:00:
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.


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.
 
Crude Oil

Crude Oil

13/06/2010 21:37:26
Quote Anchor link
Thomas de vries op 13/06/2010 21:29:24:
Olie koning op 13/06/2010 21:26:00:
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.


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?
 
Thomas de vries

thomas de vries

13/06/2010 21:43:22
Quote Anchor link
tuurlijk mag dat. heb ik geen probleem mee.
als ook de oplossing maar komt dan vindt ik het goed.
 
Remco nvt

Remco nvt

13/06/2010 22:01:22
Quote Anchor link
Vind het gewoon te vies hoe hier deze code in elkaar zit.
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)
PHP script in nieuw venster Selecteer het PHP script
1
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
}
}

?>


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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.