<? 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
Wat wil je precies bereiken?
nouw, deze code zit in mijn ledenlijst verwerkt, hij print alle leden uit de database (tabel leden), het is de bedoeling dat hij dan elk lid apart doet vergelijken met een andere tabel (online) elke keer als een lid actief is wordt dit hierin opgeslagen, dus als dat lid in de database online voorkomt, moet het plaat online.gif zijn en anders offline.gif
Ik denk dat je bedoelt dat je twee tabellen hebt en niet twee databases? Als dat zo is, en als je datamodel goed is, kun je het waarschijnlijk met één query af.
owja, sorry, tabelle moet het idd zijn 8-)

hoe doe je dat dan met één query? met left join?
dit snap ik nog niet zo goed:P daarom probeer ik het altijd anders te doen:P
kun je me misschien voorbeeldje geven, of heb je dan meer info nodig?
Ja, geef even de structuur van je twee tabellen? Dan kan ik een voorbeeld geven.
CREATE TABLE `online` (
`id` int(11) NOT NULL default '0',
`user` text NOT NULL,
`lastactive` datetime NOT NULL default '0000-00-00 00:00:00',
`ip` varchar(15) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `leden` (
`id` int(5) NOT NULL auto_increment,
`userid` varchar(50) NOT NULL default '',
`password` varchar(32) NOT NULL default '',
`email` text NOT NULL,
`valideermail` varchar(32) NOT NULL default '0',
`valideersessie` varchar(32) NOT NULL default '0',
`homepage` text,
`name` text,
`lastname` text,
`relatie` text,
`woonplaats` text,
`day` text,
`month` text,
`year` text,
`prive` text,
`extra` text,
`level` text,
`photo` text,
`geslacht` text,
`lastupdate` text NOT NULL,
`lastactive` datetime default NULL,
`registered` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `userid` (`userid`)
) ENGINE=MyISAM AUTO_INCREMENT=28 DEFAULT CHARSET=latin1 AUTO_INCREMENT=28 ;

en dan moeten de beide id's met elkaar vergeleken worden, als het id van de leden tabel dan in de online tabel voorkomt, moet het plaatje online zijn anders offline
SELECT l.userid
FROM leden AS l, online AS o
WHERE l.userid = o.id

Nog wel een paar vraagtekens:
- Je hebt geen auto_increment veld in je tabel online
- Waarom gebruik je zo vaak het type TEXT voor je velden? In de meeste gevallen is dat overkill en kun je volstaan met een type VARCHAR(255).
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.
je mist een accolade-sluiten ('}') ???
Jan Koehoorn schreef op 02.01.2007 17:44
SELECT l.userid
FROM leden AS l, online AS o
WHERE l.userid = o.id

Nog wel een paar vraagtekens:
- Je hebt geen auto_increment veld in je tabel online
- Waarom gebruik je zo vaak het type TEXT voor je velden? In de meeste gevallen is dat overkill en kun je volstaan met een type VARCHAR(255).


nouw, ik gebruik geen auto_increment in de tabel online, omdat die id's in de tabel online, de id's van de gebruikers zijn, ik heb een id met auto_increment nergens voor nodig

ik gebruik text, omdat ik niet weet wat de rest inhoud:P (van weinige maar)

nu krijg ik dus alle userid's waarvan de id's overeen komen ofniet?
maar ik moet ook de andere userid's hebben, moet alle leden weergeven

http://www.de-menner.nl/index.php?p=memberslist

kun je dit ook doen voor een bepaald id?
dus die query uitvoeren

Reageren