User Online anzeige, problem

Also ich hab es hinbekommen das die User angezeigt werden, jetzt möchte ich allerdings auch, das die Profile der User angezeigt werden ich hab das ganze so gelöst, allerdings schaut euch das Problem an g:

[code]<?php
$qry = mysql_query(“SELECT ID, Username, last_activity FROM users WHERE last_activity >= (UNIX_TIMESTAMP() - 40000)”);
$user_online = array();
while( $get = mysql_fetch_array($qry) )
{
$id[] = $get[‘ID’];
$user_online[] = $get[‘Username’];
}
?>

<?php foreach( $user_online as $name ) { foreach( $id as $uid ) echo '' .$name. ', '; } } ?> [/code]

Die Ausgabe ist dann allerdings wenn 2 User Online sind

<a href="members.php?action=user&amp;id=1">User</a>, <a href="members.php?action=user&amp;id=2">User</a>, <a href="members.php?action=user&amp;id=1">User1</a>, <a href="members.php?action=user&amp;id=2">User1</a>,

Ich hoffe ihr könnt mir hier helfen, danke im vorraus! :slight_smile:

Warum arbeitest du denn so kompliziert mit arrays und foreach schleifen?
Du kannst es doch auch gleich in der While schleife ausgeben.

MfG
BeenGreen

Und das könnte ich wie? (Sry bin nochn ziemlicher php noob)

Moin,

Also ich würd ja einfach die mysql-Werte nehmen …

while( $get = mysql_fetch_array($qry) )
{
echo "<strong><a href='members.php?action=user&amp;id='".$get['ID']."'>".$get['Username']."</a></strong>,"; 
}

Falls du aber dabei bleiben willst:
ich gehe mal davon aus, dass die Nutzeranzahl stimmt. Das bedeutet, dass theorethisch die Anzahl im Array $user_online und $id stimmen sollte. Daraus würde folgen, dass du das Array auch mit Hilfe einer simplen for()-Schleife auslesen kannst.

<?php
for($i=0;count($id); $i++) {
 echo "<strong><a href="members.php?action=user&amp;id=".$id[$i].">".$user_online[$i]."</a></strong>,"; }

Was wird getan? Du zählst alle Einträge, die es im Array $id gibt und gibs diese nacheinander aus. Da die jeweilige ID dem dazugehörigen Nutzernamen entspricht, kannst du natürlich genauso drauf zugreifen.

Ansonsten könntest du dir überlegen, dass ganze als assoziatives Array zu betrachen. Ein Ansatz dazu …

$user_online[] = $get['ID'];
$user_online[$get['ID']] = $get['Username']; //vllt. auch mal so schreiben: $user_online[{$get['ID']}] = $get['Username'];
// weiteres
foreach($user_online AS $uid => $username) { 
echo "<strong><a href=\"members.php?action=user&amp;id=".$uid.">".$username."</a></strong>,";
}

Das Ganze ist natürlich ungetestet …

MfG
myPages

Ich habs nun so gelöst, danke an myPages!

<?php $qry = mysql_query("SELECT ID, Username, last_activity FROM users WHERE last_activity >= (UNIX_TIMESTAMP() - 40000)"); while( $get = mysql_fetch_array($qry) ) { echo "<strong><a href=\"members.php?action=user&amp;id=".$get['ID']."\">".$get['Username']."</a></strong>, "; } ?>

Kann dann geschlossen werden!