|
|
User gesamt
|
:
|
2443557
|
User online
|
:
|
3
|
|
KubaSeoTräume, PHP Forum, PHP Community and more ... MyWebsolution.de!
|
|
|
|
MyWebsolution.de Foren » Workshops » Autologout
Seite:
|
<
1
2
3
>
|
Posts pro Seite: 5
10
20
|
Autor
|
Thread
|
27.03.2009 10:29 Uhr
|
|
strolch_007
|
Forenuser
|
|
registriert
|
16.03.2009
|
wohnt in
|
|
Beiträge
|
40
|
|
Hab das Problem weitgehend gelöst, nur das mit der "Mitnahme" des eingestellten selects auf andere Seiten bekomme ich nicht hin. Weiß da jemand wie das geht?
Gruss
strolch_007
|
|
|
28.03.2009 13:10 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
naja packs doch einfach mit in die Sessions
$_SESSION['user_status'] = "beschäftigt";
|
|
|
31.03.2009 04:13 Uhr
|
|
strolch_007
|
Forenuser
|
|
registriert
|
16.03.2009
|
wohnt in
|
|
Beiträge
|
40
|
|
Hallo,
ich habe da jetzt alles mit php und mehr oder weniger umfangreichen if Anweisungn gelöst. Klappt zu 100% finds aber extrem aufwändig. Mit in eine Session packen funktioniert nur bedingt, wegen der Startseite!
Vielleicht könnte ich da mal ein Ergänzungsscript zu der Seite im Workshop posten. Online-Status der User anzeigen. Is ne recht schicke Sache, wie ich finde. Gibt ja hier so einen Bereich um Scripte zu posten. Allerdings wirds da sicher eine bedeutend kürzere Lösung geben als die Meine.
Mir ist etwas bei dem Script aufgefallen bzw. hat mich stark beschäftigt, weil ich zu keiner Lösung gekommen bin (bis jetzt). Da probier ich schon seit Tagen dran rum.
Irgendwie kann ich nicht nachvollziehen warum z. B. die "letzte_aktion" in einem INT in der DB abgespeichert wurde. Dadurch gehen doch (wenn ich Mysql richtig verstanden habe) sämtliche Vorteile die eine DB so bietet in Beziehung zu Zeitabfragen flöten. Ich habe nämlich eine simple Abfrage sortiert nach Männern oder Frauen unter Berücksichtigung der letzten Aktivität abfragen wollen (ähnlich wie die angebotene Userliste). Konkret sind 3 User bei mir jetzt angemeldet. So jetzt möchte ich raus filtern wer länger als 20 Minuten nicht online war und draus eine Anzeige x Männer online, x Frauen online und Gesamt online. Mysql würde da mit
PHP:
$sql = "SELECT COUNT(anrede) FROM xxxxx WHERE anrede = 'Frau' AND letzte_aktion < DATE_SUB(NOW(), INTERVAL 20 MINUTE
arbeiten. Das auch noch für Männer und Gesamt verpackt und batsch alles wird gut. Nun habe ich aber ein INT Feld in der DB stehen und alles ist auf dieses Feld ausgerichtet.
Somit funktioniert diese Anweisung logischerweise nicht. - Und einfach mal schnell ändern in timestamp oder Datetime is nicht.
Also muß ich das wohl doch wieder über viele PHP Anweisungen basteln, oder gibts da irgend einen Geheimtipp den ich nicht kenne?:-)
Mir schwant das ich da die Liste der User-online umschreiben muss und mit count abfragen, dann Männer und Frauen noch irgendwie raus wurschteln, weil es ja um die Anzahl geht. :-)
Eines muß ich aber trotzdem sagen. Das Script arbeitet (soweit ich das bis jetzt beurteilen kann) sehr zuverlässig. - Und das ist ja wohl das Wichtigste.
Gruss
strolch_007
Dieser Beitrag wurde am 31.03.2009 um 04:26:33 Uhr von strolch_007 zum 4. Mal editiert.
|
|
|
31.03.2009 09:06 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Ja, man könnte genausogut mit DATETIME als Felddeklakration und NOW() als Wert arbeiten, wäre egal 
Ich hab beide Varianten gesehen und ausprobiert, ich seh weder Vor- noch Nachteile und würdes als persönliche Präferenz bezeichnen 
PHP:
<?php
$sql = "SELECT COUNT(anrede)
FROM xxxxx
WHERE anrede = 'Frau'
AND letzte_aktion > ".time()-20*60."
";
?>
also für mich ist das genau eine PHP Anweisung
|
|
|
01.04.2009 06:51 Uhr
|
|
strolch_007
|
Forenuser
|
|
registriert
|
16.03.2009
|
wohnt in
|
|
Beiträge
|
40
|
|
hallo,
ist ein schöner SELECT Befehl (kannte ich so gar nicht), nur leider zeigt er bei mir nach wie vor 2 Frauen 1 Mann und gesamt 3 an. Irgendwie will er die Zeit bei mir nicht berücksichtigen, obwohl ich jetzt alles mögliche getestet habe (INT in der DB wurde nicht verändert, Ist als INT(11) drin, viel. auf 14 ändern?). Die Ausgabe aus dem SELECT heraus ist und bleibt ohne Berücksichtigung der Zeit. Komisch das ich das mit der Zeit jetzt einfach nicht hin bekomme. Hab sogar das Feld letzte_aktion ausgelesen und getestet. Alles ok mit der Zeit die da drin steht!
PHP:
// Abfrage wieviel Frauen in den letzten 20 Minuten aktiv waren und somit als online gewertet
// werden
$sql = "SELECT COUNT(anrede) FROM user_daten WHERE anrede = 'Frau' AND letzte_aktion > '.time() -20*60.'" ;
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
$row = mysql_fetch_row($result);
$wife_online = $row[0];
Er liefert mir immer die Zahl 2 (bei Frauen, nämlich die registrierten). Bei num_rows...immer eine 1 bei allen dreien...array, assoc, und object gehen hier ja nicht, weil als Ausgabe Array angezeigt wird. Eine if Anweisung oder while Schleife wäre ja überflüssig, wenn ich das richitg sehe. Der SELECT sollte ja bereits den richtigen Wert liefern. Will er aber nicht:-)
Ach und bzgl Datetime oder INT - na gut dann schließ ich mich einfach mal der persönlichen Präferenz an. Ehrlich gesagt mag ich auch gar nicht an einem Script rumfingern, das wunderbar funktioniert.
Ich seh jetzt auch immer mehr die Vorteile alles mit echo zu machen gegenüber meinem...Muss aufpassen wie ein Schießhund, weil sonst hauts mir die undefinierten Variablen nur so um die Ohren. Das Problem gibts bei deinem Script schon mal nicht.
Wenn man aber so im Internet liest raten die meisten davon ab alles in PHP zu schreiben. Naja ich habe gelernt und sehe es mittlerweile etwas anders. So jetzt ist die Nacht auch wieder rum.
Einen guten morgen wünsch ich mal
Gruss
strolch_007
|
|
|
Seite:
|
<
1
2
3
>
|
|
|
Powered by
|
Pascal Landau
|
© 2006
|
MyWebsolution.de
|
Designed by
|
Pascal Landau
|
© 2006
|
MyWebsolution.de
|
|
|
|
|
|