<? php
while($row = mysql_fetch_assoc($query))
{
   $id = $row['id'];
   while($on_off = mysql_fetch_assoc($on_off_select))
   {
      if($id == $on_off['id'])
      {
         $image = "images/design/online.gif";
      }
      else
      {
         $image = "images/design/offline.gif";
      }
   }
?>

dit lukt niet, hoe kan dat wel? nu doet hij die vergelijking namelijk maar 1 keer, want alle plaatjes zijn hetzelfde, terwijl dit niet zo moet zijn
ik dacht aan zoiets, maar dit werkt niet :(
<?php $on_off_select = mysql_query("SELECT l.id FROM leden AS l, online AS o WHERE o.id = '".$row['id']."'") or die(mysql_error());
			$result = mysql_result($on_off_select);
			$on_off = mysql_fetch_assoc($on_off_select);
			if(!empty($result))
			{
				$image = "images/design/online.gif";
			}
			else
			{
				$image = "images/design/offline.gif";
			}
?>
Jim schreef op 02.01.2007 18:05
je mist een accolade-sluiten ('}') ???


klopt, hier in t voorbeeld wel, maar ik heb hem op de site wel ;)
Willem vp schreef op 02.01.2007 17:55
WHERE l.userid = o.id
Error: incompatible types? ;-)

Als online.id overeenkomt met leden.id kan dat een verklaring zijn waarom online.id niet auto-increment is; dat zou dan zelfs ongewenst zijn. Je zou je dan wel af kunnen vragen of je die tabel dan niet beter kunt mergen met de leden-tabel.

Ja klopt, die l.userid was een foutje. En de noodzaak voor twee verschillende tabellen ontgaat me hier ook enigszins ;-)
Jan Koehoorn schreef op 02.01.2007 18:53
Ja klopt, die l.userid was een foutje. En de noodzaak voor twee verschillende tabellen ontgaat me hier ook enigszins ;-)


nouw die zijn wel nodig(volgens mij), want de gasten worden ook geregistreerd in de online tabel, maar jan, hoe kan ik jouw voorbeeld verwerken, heb al iets gepost hierboven..
is het misschien niet eenvoudiger om in je leden-tabel uit te breiden met een veldje 'online' of 'actief' int(1) of set (als boolean)?

Int -> Integer (n) --> Een getal met n als maximaal aantal tekens,
Bool -> Boolean --> is een (Y/N). Een boolean bestaat als type niet in MySQL, dan kan je een Set gebruiken met 1 en 0 en 0 als default.

Succes.
Het lijkt me nog eenvoudiger om je leden tabel uit te breiden met een kolom waarin je opslaat wanneer een lid voor het laatst actief was. Op die manier kun je bepalen of een lid in de laatste 5 minuten bijvoorbeeld nog actief en dus online was.

Het nadeel namelijk van het neerzetten of een gebruiker online is of niet, is het bepalen van het feit of een gebruiker online is of niet. Gebruiker zullen namelijk 9 van de 10 keer niet uitloggen alsze je website verlaten, dus hoe weet jij dan welke gebruiker nog online is en welke niet...
Jim, ik dacht precies hetzelfde, was al bezig ;)
waar ik eerst keek of ze al online waren, en dit update, zet ik het nu ook in de leden tabel!
alleen moet ik nu nog iets maken, dat als je langer dan 10 minuten bijv niet actief bent, dit weer op 0 wordt gezet
Ron schreef op 02.01.2007 19:02
alleen moet ik nu nog iets maken, dat als je langer dan 10 minuten bijv niet actief bent, dit weer op 0 wordt gezet
Oplossing: de tijd wanneer ze voor het laatst actief waren opslaan in je database. Zie ook mijn vorige reactie ;)
Aanvulling: let er op dat je dus niet alleen je tabel update wanneer men inlogt. Elke keer als een user een pagina opvraagt moet je tabel geupdate worden!
precies:P ik had jullie reacties al gecombineerd:P tis idd nogal onzin om aan te geven of iemand online of niet is, als je de laatst actieve tijd toch opslaat:P nu elke keer als een gebruiker een pagina opent, gebeurd er dit:

$sql = "UPDATE leden SET online=1, lastactive=NOW() WHERE id=".$_SESSION['je_id']."'";

$sql = "UPDATE leden SET online=0 WHERE NOW()-lastactive > 600";

en niet te vergeten, op mijn ledenlijst pagina:
if(!empty($row['online']))
{
$image = "images/design/online.gif";
}
else
{
$image = "images/design/offline.gif";
}

@jan, daar had ik al aangedacht ;)

Reageren