verschil in tijd berekenen...

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jason  van der Zeeuw

Jason van der Zeeuw

13/06/2011 20:24:50
Quote Anchor link
Hallo allemaal,

ik heb een script dat van elke gebruiker de laatste activiteit opslaat..
als een gebruiker de browser afsluit blijft deze op ingelogd staan..
maar als een andere gebruiker of bezoeker een actie uitvoert,
wordt er ALTIJD meteen gecheckt of er toevallig een gebruiker online is,
die al 30 minuten of langer geen activiteit heeft gehad..

ik heb nu de laatste_activiteit in de database bij één user op
2011-06-13 19:05:29 gezet..

nu moet er gekeken worden of dat verschil met de tijd van nu meer dan 30 minuten is.. maar hoe?

ik heb al een aantal manieren geprobeerd, maar zonder succes..
dit heb ik nu:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
function check_activity() {
    include('db_connection.php');
    //alle lidnummers en laatste activiteiten opvragen van leden
    //die op ingelogd staan, en een laatste_activiteit hebben

    $query = mysql_query("SELECT lidnummer, laatste_activiteit
                          FROM lid
                          WHERE ingelogd = '1'
                          AND laatste_activiteit != 'NULL'"
);
    for ($i = 1; $i <= mysql_num_rows($query); $i++) {
        $row = mysql_fetch_assoc($query);
        //laatste activiteit
        $last_activity = $row['laatste_activiteit'];
        //lidnummer
        $lidnummer = $row['lidnummer'];
        //datum + tijd van dit moment
        $datetime = date("Y-m-d H:i:s");
        
        //hier moet ik het verschil uitrekenen
        $verschil = "HELP?";

        if ($verschil >= 30) {
            $query2 = mysql_query("Update lid
                          SET ingelogd = '0'
                          where lidnummer = "
. $lidnummer);
        }
    }
}

?>
Gewijzigd op 13/06/2011 20:27:19 door Jason van der Zeeuw
 
PHP hulp

PHP hulp

18/04/2024 15:58:16
 
- SanThe -

- SanThe -

13/06/2011 20:43:23
Quote Anchor link
Dit kan veel simpeler.
Gewoon 1 query.
UPDATE lid SET ingelogd = '0' WHERE DATE_ADD(laatste_activiteit, INTERVAL 30 MINUTE) < NOW()
Ik hoop dat ie helemaal correct is, maar ik heb niks getest.
 
Jason  van der Zeeuw

Jason van der Zeeuw

13/06/2011 20:57:56
Quote Anchor link
@SanThe, bedankt voor je reactie!

dit heb ik nu:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
function check_activity() {
    include('db_connection.php');
    //alle lidnummers en laatste activiteiten opvragen van leden
    //die op ingelogd staan, en een laatste_activiteit hebben

    $query = mysql_query("SELECT lidnummer
                          FROM lid
                          WHERE ingelogd = '1'
                          AND DATE_ADD(laatste_activiteit, INTERVAL 30 MINUTE) < NOW()"
);
    for ($i = 1; $i <= mysql_num_rows($query); $i++) {
        $row = mysql_fetch_assoc($query);
        //lidnummer
        $lidnummer = $row['lidnummer'];

        $query2 = mysql_query("Update lid
                          SET ingelogd = '0'
                          where lidnummer = "
. $lidnummer);
    }
}

?>


en het werkt perfect!
hartstikke bedankt alweer!
alweer wat geleerd :)

phphulp zou eigenlijk een feedback functie moeten hebben haha ;)
 
- SanThe -

- SanThe -

13/06/2011 21:05:17
Quote Anchor link
Maar waarom eerst selecteren en dan pas updaten. Dat selecteren is overbodig. Gewoon alleen de update query is genoeg.

Edit: Stel er zijn 10 mensen niet actief meer, dan kost dat met jouw script 11 query's en met mijn oplossing gewoon nog steeds 1 query.
Gewijzigd op 13/06/2011 21:06:52 door - SanThe -
 
Jason  van der Zeeuw

Jason van der Zeeuw

13/06/2011 21:09:10
Quote Anchor link
@SanThe,

geniaal! haha dat ik dat niet door had!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
function check_activity() {
    include('db_connection.php');
    mysql_query("Update lid
                 SET ingelogd = '0'
                 WHERE ingelogd = '1'
                 AND DATE_ADD(laatste_activiteit, INTERVAL 30 MINUTE) < NOW()"
);
}

?>


mijn functie is nu behoorlijk overzichtelijk geworden :)!
danku nogmaals!
Gewijzigd op 13/06/2011 21:11:46 door Jason van der Zeeuw
 
- SanThe -

- SanThe -

13/06/2011 21:13:06
Quote Anchor link
Jason van der Zeeuw op 13/06/2011 21:09:10:
mijn functie is nu behoorlijk overzichtelijk geworden :)!


En zo hoort het. ;-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.