Benutzerliste
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzahl
anzeigen
argument
ausgeben
benutzer
bessere idee
boxen
code
dank
datenbank
frage
krieg
limit
liste
ordern
testen
url
voraussetzung
zeigen
zusammensetzen
-
kann mir jemand Helfen
und zwar ich habe eine benutzerliste und ich will die in seitenbox einbaun
Frage
wie kriege die liste senkrecht, und wie kriege ich wenn die benutzerliste beschtimte anzahl zb 30 benutzer scrollen
das die liste nicht so lang ist
<?php echo "Benutzerliste\n"; echo"<br>\n"; echo"<br>\n"; $sql = "SELECT ID, SessionID, Nickname, Letzte_Aktion FROM User ORDER BY Nickname ASC "; $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); while ($row = mysql_fetch_assoc($result)) { if($row['SessionID'] AND (time()-60*2 < $row['Letzte_Aktion'])) $online = "green"; else $online = "red"; echo "<a href=\"profil.php?id=".$row['ID']."\" style='color:".$online."'>".$row['Nickname']."</a>\n"; ?> }
Danke
Beitrag zuletzt geändert: 13.2.2013 13:03:57 von tshaika -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wenn ich dich richtig verstanden habe, möchtest du ab einer bestimmten Anzahl von Benutzern, die du hast / aus der DB ausgelesen hast, dass nur ein bestimmter Teil dieser User angezeigt wird. Sagen wir 30 Benutzer sind in der DB eingetragen und die ersten 20 davon möchtest du anzeigen lassen. Dann musst du zuerst schauen wie viele du ausgelesen hast - immerhin liest du mit deiner jetzigen Query ALLE Benutzer aus, die du hast. Das tust du mit mysql_affected_rows() und schaust dann einfach ob die Anzahl > 20 liegt. Wenn dem so ist, starte eine for Schleife, mit der du nur die ersten 20 User ausgibst. Eine andere und bessere Möglichkeit wäre deine Query so anzupassen, dass direkt nur die ersten 20 User ausgelesen werden. Das erreichst du mit LIMIT. Einfach danach googeln.
Und wie du das ganze senkrecht bekommst? Einfach <br> benutzen zwischen den einzelnen Einträgen oder was genau verstehe ich da jetzt nicht?
EDIT: Noch der Hinweis, dass die normale MySQL Erweiterung deprecated ist seit PHP 5.5 und in (ferner) Zukunft entfernt wird, weswegen du auf MySQLi umsteigen solltest.
Beitrag zuletzt geändert: 13.2.2013 13:16:50 von midwar -
hi,
zb so:
<?php echo '<div style="height:400px;overflow:auto;">'; echo '<p>Benutzerliste<br><br>'; $sql = 'SELECT ID, SessionID, Nickname, Letzte_Aktion FROM User ORDER BY Nickname ASC '; $result = mysql_query($sql) or die("<pre>\n".$sql."</pre>\n".mysql_error()); while($row=mysql_fetch_assoc($result)) { if($row['SessionID'] and (time()-60*2 < $row['Letzte_Aktion'])) { $online = 'green'; }else { $online = 'red'; } } echo '<a href="profil.php?id='.$row['ID'].'" style="color:'.$online.'">'.$row['Nickname'].'</a><br>'; echo '</p>'; echo '</div>'; ?>
-
midwar
nein nicht die erste 20 benutzer zeigen
ab 20 benutzer soll seitenbox scrollen -
tshaika schrieb:
midwar
nein nicht die erste 20 benutzer zeigen
ab 20 benutzer soll seitenbox scrollen
Du hast also eine Seitenbox, in der du das alles ausgibst. Dann sorge mit der CSS Eigenschaft overflow dafür, wie mit übergroßem Inhalt umgegangen werden soll, nachdem du der Seitenbox eine feste Größe (width und height) zugewiesen hast. Hast du diese 3 CSS Werte sinnvoll festgelegt, wird auch ab dem 20. Benutzer gescrollt.
Beitrag zuletzt geändert: 13.2.2013 13:21:48 von midwar -
zum Einschränken auf eine bestimmte Anzahl genügt ein Blick in die MySQL-Doku:
Die LIMIT-Klausel kann zur Beschränkung der Anzahl der von der SELECT-Anweisung zurückgegebenen Datensätze verwendet werden. LIMIT nimmt ein oder zwei numerische Argumente entgegen, die (außer bei Verwendung vorbereiteter Anweisungen) beide nichtnegative Integer-Konstanten sein müssen.
Von den beiden Argumenten gibt das erste den Versatz des ersten zurückzugebenden Datensatzes an, das zweite die maximale Anzahl zurückzugebender Datensätze. Der Versatz des ersten Datensatzes ist 0 (nicht 1):
SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15
Um alle Datensätze beginnend bei einem bestimmten Versatz bis zum Ende der Ergebnismenge zurückzugeben, können Sie als zweiten Parameter eine sehr große Zahl angeben. Die folgende Anweisung ruft alle Datensätze beginnend beim 96. bis zum letzten Datensatz ab:
SELECT * FROM tbl LIMIT 95,18446744073709551615;
Sofern nur ein Argument angegeben ist, gibt der Wert die Anzahl der Datensätze an, die beginnend beim ersten Datensatz zurückgegeben werden sollen:
SELECT * FROM tbl LIMIT 5; # Retrieve first 5 rows
Anders gesagt, ist LIMIT row_count äquivalent zu LIMIT 0, row_count.
Quelle: http://dev.mysql.com/doc/refman/5.1/de/select.html -
hcms schrieb:
hi,
zb so:
<?php echo '<div style="height:400px;overflow:auto;">'; echo '<p>Benutzerliste<br><br>'; $sql = 'SELECT ID, SessionID, Nickname, Letzte_Aktion FROM User ORDER BY Nickname ASC '; $result = mysql_query($sql) or die("<pre>\n".$sql."</pre>\n".mysql_error()); while($row=mysql_fetch_assoc($result)) { if($row['SessionID'] and (time()-60*2 < $row['Letzte_Aktion'])) { $online = 'green'; }else { $online = 'red'; } } echo '<a href="profil.php?id='.$row['ID'].'" style="color:'.$online.'">'.$row['Nickname'].'</a><br>'; echo '</p>'; echo '</div>'; ?>
er zeigt keine Benutzer
aber ich habe bessere idee
kann man machen ?
in seiten box nur die benutzer zeigen die nur Online sind ?
-
tshaika schrieb:
hcms schrieb:
hi,
zb so:
<?php echo '<div style="height:400px;overflow:auto;">'; echo '<p>Benutzerliste<br><br>'; $sql = 'SELECT ID, SessionID, Nickname, Letzte_Aktion FROM User ORDER BY Nickname ASC '; $result = mysql_query($sql) or die("<pre>\n".$sql."</pre>\n".mysql_error()); while($row=mysql_fetch_assoc($result)) { if($row['SessionID'] and (time()-60*2 < $row['Letzte_Aktion'])) { $online = 'green'; }else { $online = 'red'; } } echo '<a href="profil.php?id='.$row['ID'].'" style="color:'.$online.'">'.$row['Nickname'].'</a><br>'; echo '</p>'; echo '</div>'; ?>
er zeigt keine Benutzer
aber ich habe bessere idee
kann man machen ?
in seiten box nur die benutzer zeigen die nur Online sind ?
Wenn er dir keine Benutzer ausgibt, dann hast du irgendeinen Fehler im Code. Such ihn! Hier wird dir keiner alles Stück für Stück vorkauen, bis er / sie dir eine fertige Lösung produziert hat. Das musst du schon selber machen. Ist in deiner Datenbank überhaupt ein Benutzer / mehrere hinterlegt? Steht eine Verbindung zur Datenbank? Hast du dir zum Testen ausgeben lassen, was die Query aus der DB ausliest? Hast du dir mit var_dump() die Variablen in deinem Skript zum Testen ausgeben lassen? Was hälst du von error_reporting(E_ALL);?
Und um auf deine andere Frage zu antworten: Natürlich kannst du dir in deiner Benutzerliste auch nur diejenigen Anzeigen lassen, die Online sind. Wie das geht ist ganz einfach, du hast alle Voraussetzungen dafür bereits in deinem bisherigem Code geschaffen. In
if($row['SessionID'] and (time()-60*2 < $row['Letzte_Aktion'])) { $online = 'green'; }else { $online = 'red'; }
legst du fest wer als Online gilt und wer nicht. Benutze diese Information, um aus deiner Benutzerliste diejenigen nur anzuzeigen, die du selber als online kategorisiert hast. Logisch gesprochen:
if($BenutzerListe[$i]["online"] == true) { echo $BenutzerListe[$i]["Name"]; }
So oder so benötigt das ganze ein bisschen Aufwand deinerseits - keiner wird dir hier alles Zusammensetzen. -
ähhh.... ja:
<?php echo '<div style="height:400px;overflow:auto;">'; echo '<p>Aktive Benutzer<br><br>'; $sql = 'SELECT ID, SessionID, Nickname FROM User WHERE Letzte_Aktion>'.(time()-60*2).' ORDER BY Nickname ASC '; $result = mysql_query($sql) or die("<pre>\n".$sql."</pre>\n".mysql_error()); while($row=mysql_fetch_assoc($result)) { echo '<a href="profil.php?id='.$row['ID'].'" style="color:green">'.$row['Nickname'].'</a><br>'; } echo '</p>'; echo '</div>'; ?>
wobei das ja die benutzer sind die in den letzten 2 minuten eine aktion gemacht haben, also eventuell nicht alle die online sind...
Beitrag zuletzt geändert: 13.2.2013 13:39:18 von hcms -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage