Logo - MyWebsolution.de
User gesamt  :  1967857
User online  :  2
KubaSeoTräume, PHP Forum, PHP Community and more ... MyWebsolution.de!
   
   
 
Registrieren Login User F.A.Q Suche Home

eingeloggt bleiben

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
Profil ansehen
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";


Profil ansehen Mail senden
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.
Profil ansehen
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 :D


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 :rolleyes:


Profil ansehen Mail senden
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
Profil ansehen
Seite: <  1 2 3  > no reply
Powered by Pascal Landau © 2006 MyWebsolution.de
Designed by Pascal Landau © 2006 MyWebsolution.de
 
 
 
 
Home Email Impressum Disclaimer Statistik