Anwendungsentwickler Geschrieben 24. Juni 2009 Geschrieben 24. Juni 2009 Hat jemand eine Idee wie ich immer die AKtuelle Mitgliederanzahl die ich in 2 Tabellen(user_p, user_f) habe die aber auf einem Webspace sind, direkt auf meiner Startseite immer aktuell anzeigen lassen kann! Hat da jemand ein PHP Code Vorschlag? Zitieren
elSusto Geschrieben 24. Juni 2009 Geschrieben 24. Juni 2009 hol dir die hoechste ID von beiden und addiere sie(wenn die IDs ohne lücken sind) sonst Mit Select * alle user raus holen und inner schleife gucken wie viel du bekommen hast und mit der anderen table auch und dann addieren. mfg Zitieren
flashpixx Geschrieben 24. Juni 2009 Geschrieben 24. Juni 2009 Warum benutzt Du nicht Sessions und liest aus dem Sessionpfad die gültigen Sessiondateien bzw deren Anzahl einfach aus Phil Zitieren
Shadowman Geschrieben 24. Juni 2009 Geschrieben 24. Juni 2009 Viel einfacher: $num1 = mysql_fetch_array(mysql_query("SELECT Count(*) FROM user_p")); $num2 = mysql_fetch_array(mysql_query("SELECT Count(*) FROM user_f")); echo $num1+$num2;[/PHP] Zitieren
flashpixx Geschrieben 24. Juni 2009 Geschrieben 24. Juni 2009 @Shadowman: Das setzt voraus, dass in beiden Tabellen nur aktuell eingeloggte User habe und das wäre dann wohl sehr seltsam, warum man zwei Tabellen mit gleichen Inhalt hat Phil Zitieren
xm22 Geschrieben 24. Juni 2009 Geschrieben 24. Juni 2009 (bearbeitet) Ich habe so etwas mal so gelöst, dass bei jedem Seitenaufruf bzw. alle 15 Sek. einem Ajax-Request die aktuelle Zeit in Verbindung mit dem aktuellen User gesetzt wird. Jetzt kann man ganz einfach alle User aus dieser Tabelle Abfragen, bei denen der Zeitpunkt <= 15 Sekunden in der Vergangenheit liegt. Setzt zwar Javascript für den Ajax-Request voraus, aber das hat ja mittlerweile fast jeder an und alternativ könnte man das auch mit einem IFrame erledigen. Das ist die einzige Möglichkeit, verlässlich die aktuellen User anzuzeigen. EDIT: Ein Kumpel hat mir eben noch eine andere Möglichkeit gezeigt - im Prinzip aber nur eine andere Variante: Und zwar speichert er alle BenutzerIDs von den Usern, die online sind im memcache mit einer Verfallszeit von ~3min. Jetzt kann man alle User auslesen, die noch online sind, da alle anderen durch das Timeout aus dem Memcache gefallen sind. Bearbeitet 24. Juni 2009 von xm22 Zitieren
Shadowman Geschrieben 24. Juni 2009 Geschrieben 24. Juni 2009 @Shadowman: Das setzt voraus, dass in beiden Tabellen nur aktuell eingeloggte User habe und das wäre dann wohl sehr seltsam, warum man zwei Tabellen mit gleichen Inhalt hat Phil Davon, dass die Benutzer aufgeführt werden sollen, die eingeloggt sind ist nicht beschrieben. Mit der Abfrage gehe ich nicht davon aus, dass die gleichen Inhalte in den 2 Tabellen stehen, sondern genau unterschiedliche. Dies würde zum Beispiel auftreten, wenn man ein Forum und eine Contentpage hat, auf denen eine getrennte Registration möglich ist. Indikatoren hierfür waren die Namen: user_f (User Forum) user_p (User Page) Zitieren
Anwendungsentwickler Geschrieben 24. Juni 2009 Autor Geschrieben 24. Juni 2009 Also mir gehts garnicht um online user oder offline user will immer nur die aktuelle anzahl wieviel mitglieder ich habe anzeigen Zitieren
Shadowman Geschrieben 24. Juni 2009 Geschrieben 24. Juni 2009 Dann sollte dir der Code von mir weiterhelfen Beim nächsten mal könnten ein angebrachter Titel und eine bessere Formulierung der Fragestellung die Hilfe für die Helfer einfacher gestalten Zitieren
elSusto Geschrieben 25. Juni 2009 Geschrieben 25. Juni 2009 wenn man jetzt allerdings online user auch anzeigen moechte, koennte man dann nicht einfach ein feld machen loggedIn in der Datenbank und dann die abfrage von Shadowman einfach ein bisschen erweitern : $num1 = mysql_fetch_array(mysql_query("SELECT Count(*) FROM user_p WHERE loggedIn = 'true'")); $num2 = mysql_fetch_array(mysql_query("SELECT Count(*) FROM user_f WHERE loggedIn = 'true'")); [/PHP] oder wären da sessions die bessere wahl? bwz. wo liegen da die vor und nachteile zwischen den verschiedenen Varianten ? mache erst seid nen paar tagen php und da ich sowas auch gerne mal realisieren moechte wäre das gut zu wissen, nicht das ich gleich den letzten müll programmiere der überhaupt nix taugt :eek p.s. hab gedacht das passt hier ganz gut rein, ist ja villt auch für andere von bedeutung^^ Zitieren
Shadowman Geschrieben 25. Juni 2009 Geschrieben 25. Juni 2009 (bearbeitet) das mit nur einem Feld in der Usertable zu realisieren ist nicht sinnvoll, da die Aktualisierung nicht 100% ist. In diesem Fall würde ich eine zusätzliche Tabelle anlegen, in der jeder Benutzer der eingeloggt ist seine IP rein schreibt (automatisch beim login des Benutzers) mit einem Timestamp von {now}+15 min. Dann würde ich auf einer globalen Seite die dauerhaft verwendet wird, oder in jede page included wird automatisch alle aus dieser Tabelle löschen lassen, deren Timestamp in der Tabelle kleiner {now} ist. Somit bleiben Benutzer 15 Minuten nach verlassen der Seite noch online, werden dann aber definitiv ausgeloggt. Bei jeder aktion des Benutzers sollte dann natürlich der Timestamp wieder auf {now}+15 min aktualisiert werden anhand der IP. Dies lässt sich dann auch zu einer Statistik erweitern Bearbeitet 25. Juni 2009 von Shadowman Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.