Problem mit online Usern

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
timo111
Mitglied
Beiträge: 220
Registriert: 03.02.2004 21:03

Problem mit online Usern

Beitrag von timo111 »

Hey

Hab ein kleines Script geschrieben welches alle angemeldeten User ausliest die gerade online sind. Das Ganze wird dann in einer Dropdown-Liste ausgegeben:

Code: Alles auswählen

<?
$sql = "SELECT u.user_id, u.username, s.session_logged_in, s.session_time
		FROM phpbb_users u, phpbb_sessions s
		WHERE u.user_id = s.session_user_id
		AND s.session_time >= ".( time() - 300 ) . " AND u.user_id != -1
		ORDER BY u.username ASC, s.session_ip ASC";  

$result = mysql_query($sql);

print "<form name='form1' method='post' action=''>";
print   "<select name='select'>";

while ($row = mysql_fetch_array($result)) {
print    "<option value='t'>" . $row[1] . "</option>";
	}
	
print  "</select>";
print "</form>";

?>
Soweit funktioniert auch alles wunderbar! Das Problem ist nur, dass User welche die Seite in mehreren Browserfenstern geöffnet haben auch öfter aufgeführt werden.
Wenn ich also mit drei offenen Fenstern auf der Seite surfe dann werde ich auch dreimal in der liste geführt.
Weiss jemand warum bzw. was ich dagegen tun kann?
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Beitrag von D@ve »

Änder doch einfach die Abfrage in:

Code: Alles auswählen

SELECT DISTINCT u.user_id, u.username...
...ist zwar nicht die feine englische Art, aber funktioniert meistens.

Gruß, Dave
There are only 10 types of people in the world: Those who understand binary, and those who don't
timo111
Mitglied
Beiträge: 220
Registriert: 03.02.2004 21:03

Beitrag von timo111 »

Hey

Bringt leider nichts. Die User werden immernoch doppelt aufgeführt
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

versuche mal nachfolgendes SQL Statment (ungetestet)
allerdings muss der Unix Timestamp noch ausgeschlossen werden dein time() blabla

Code: Alles auswählen

Select * FROM phpbb_users U
RIGHT JOIN phpbb_sessions S on U.user_id=S.session_user_id
WHERE S.session_user_id != -1
group by S.session_user_id
order by U.username,S.session_ip
timo111
Mitglied
Beiträge: 220
Registriert: 03.02.2004 21:03

Beitrag von timo111 »

Geht nicht. Gibt ca. 350mal 1 aus! :wink:

Den entscheidenden Hinweis hast du aber trotzdem gegeben. Und zwar "GROUP BY". Hatte ich irgendwie garnicht dran gedacht. Damit müsste es aber eigentlich gehen
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

timo111 hat geschrieben:Geht nicht. Gibt ca. 350mal 1 aus! :wink:
Sicher?

Habs gerade bei mir getestet und hatte dabei 2mal den selben User und 3 weitere verschiedene und hatte genau das Ergebnis was du wolltest
nämlich 4 Datensätze.....

kann das nicht nachvollziehen :roll:

[edit]
bei MySQL passt alles.........
[/edit]
Antworten

Zurück zu „Coding & Technik“