Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 16:49

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Check ob user heute eingeloggt ist

Discussion on Check ob user heute eingeloggt ist within the Web Development forum part of the Coders Den category.

Reply
 
Old   #1
 
Cc_Cc_Cc's Avatar
 
elite*gold: 0
Join Date: Mar 2011
Posts: 423
Received Thanks: 17
Check ob user heute eingeloggt ist

Hi Com,

ich wollte es so machen dass, wenn man 3 tage hintereinander eingeloggt ist , man eine Trophäe erhaltet.

Jetzt habe ich eine Tabelle erstellt namens: Logged_in_a_row

Wenn man sich einloggt, kommt ein Eintrag rein mit der User_id und den Datum.

Bevor aber der Datensatz eingetragen wird muss ich ja eine Abfrage machen ob sich der User am letzen Tag noch angemeldet hat, falls nicht werden alle Einträge wieder gelöscht, weil wenn der User sich 2 tage hintereinander eingeloggt hat, und nach 3 Tagen sich wieder einloggt, gilt es ja nicht mehr.

Jetzt frage ich mich ob es dafür ein SQL-Code gibt.

Ich habe es bisher so geschrieben:

Quote:
PHP Code:
SELECT `user_id`,`dateFROM `logged_in_a_rowWHERE `user_id` = :session_id AND `date` > DATE_SUB(CURDATE(), INTERVAL 1 DAYORDER BY `dateDESC LIMIT 1
Der sagt aber ja ob innerhalb der letzen 24 Stunden sich der User eingeloggt hat. Wollte es aber so machen dass, wenn der Tag vorbei ist , direkt ein neuer Datensatz eingetragen wird, wenn sich gestern einer eingeloggt hat ist egal ob es um 23:59 war und direkt der nächste Tag beginnt. Geht das überhaupt mit SQL? Hoffe ihr habt mich verstanden<.<
Cc_Cc_Cc is online now  
Old 05/15/2019, 01:22   #2
 
Warnuk3r's Avatar
 
elite*gold: 307
Join Date: Jul 2009
Posts: 1,091
Received Thanks: 434
So macht man das nicht, diese Logik hat in der SQL-Query nichts zu suchen.

Du legst 1 Datensatz an mit UserID, Datum und Anzahl Tage. Wenn der User sich einloggt, ziehst du dir das Datum und dann überprüfst du ob das Datum 1 Tag zurück liegt. Falls ja, dann +1 bei Anzahl Tage und überprüfen, ob man dann bei 3 wäre. Falls das Datum nicht 1 Tag zurück liegt, dann überprüfst du ob das Datum 2+ Tage zurück liegt und falls ja, dann Anzahl Tage auf 1 setzen, da die "Einlog-Serie" dann wieder von neu los geht.

So wie du es machen willst hättest du pro User bis zu 2 Datensätze und müsstest beim Abbruch einer "Einlog-Serie" dann 2 Datensätze löschen + 1 wieder erstellen. Das ist ineffektiv.
Warnuk3r is offline  
Thanks
1 User
Old 05/15/2019, 01:50   #3
 
Cc_Cc_Cc's Avatar
 
elite*gold: 0
Join Date: Mar 2011
Posts: 423
Received Thanks: 17
Quote:
Originally Posted by Warnuk3r View Post
So macht man das nicht, diese Logik hat in der SQL-Query nichts zu suchen.

Du legst 1 Datensatz an mit UserID, Datum und Anzahl Tage. Wenn der User sich einloggt, ziehst du dir das Datum und dann überprüfst du ob das Datum 1 Tag zurück liegt. Falls ja, dann +1 bei Anzahl Tage und überprüfen, ob man dann bei 3 wäre. Falls das Datum nicht 1 Tag zurück liegt, dann überprüfst du ob das Datum 2+ Tage zurück liegt und falls ja, dann Anzahl Tage auf 1 setzen, da die "Einlog-Serie" dann wieder von neu los geht.

So wie du es machen willst hättest du pro User bis zu 2 Datensätze und müsstest beim Abbruch einer "Einlog-Serie" dann 2 Datensätze löschen + 1 wieder erstellen. Das ist ineffektiv.
Nehmen wir mal an er hat sich eingeloggt und ich zähle dann den Tag +1. Er loggt sich aus und nach 2 Minuten loggt er sich wieder ein. Dann wird der Tag ja wieder +1 gemacht.
Cc_Cc_Cc is online now  
Old 05/15/2019, 03:15   #4
 
Mikesch01's Avatar
 
elite*gold: 203
Join Date: Sep 2007
Posts: 732
Received Thanks: 190
Prüf dann zusätzlich noch ob das Datum eben das heutige Datum schon ist. Wenn ja, dann zähle es nicht mehr.
Mikesch01 is offline  
Thanks
1 User
Old 05/15/2019, 12:20   #5


 
False's Avatar
 
elite*gold: 0
The Black Market: 243/0/0
Join Date: Apr 2011
Posts: 11,115
Received Thanks: 2,436
Hol dir einfach alle Datensätze die <= 3 Tage alt sind und gruppier diese nach dem Tag.
Somit kannst du leicht prüfen ob er 3 Tage hintereinander eingeloggt war.

Mit dieser Lösung wäre es auch egal wenn er sich 10 Mal pro Minute einloggt, da du das Datum ja gruppierst.
Ebenso müsstest du auch keine Datensätze löschen, da wenn er ein Tag nicht eingeloggt war, maximal 2 Tage aus der Query zurück kommen können.
False is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
User bereits eingeloggt >.<
07/10/2011 - WarRock - 7 Replies
Hey n Kumpel von mir hat gestern Nickchange gemacht während er noch eingeloggt war. Jetzt kommt er nichtmehr auf den Server. Gibts ne möglichkeit den irgendwie vom Server zu hauen ohne n Admin oder Ticket zu schreiben? Thx schonmal
[Hilfe]" Der Account ist bereits eingeloggt "
08/20/2010 - WarRock - 16 Replies
Hi liebe Com., ich habe ein Problem. Ebend hatte ich mich eingeloggt, wollte Famas auswählen weil xm8 Ausgewählt war und das ging nicht. Dann wollt ich reloggen aber dann stand ganze zeit Der Acc sei eingeloggt-.- Need Help, gebe Thanks ! <3 MfG



All times are GMT +2. The time now is 16:50.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.