[PHP] Timestamp update, foute berekening..

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een website te maken, deze website heeft een kleine nieuws sectie. Om te zorgen dat er een nieuw ander icoon te zien is voor de gebruiker heb ik het volgende bedacht(eerst in mondjesmatige uitleg, daarna in code).

De user_table heeft 2 extra waardes gekregen, visit_prev en visit_active.
Zodra een gebruiker iets bekijkt, dan wordt in de user_table gekeken of de visit_prev X seconden verschilt met de visit_active. Als de visit_prev b.v. niet 10 minuten verschil heeft dan zet hij de visit_active op de timestamp( php-> time(); ).
Als de visit_prev en visit_active een groter verschil dan 10 minuten heeft dan wordt eerst de visit_prev overschreven door visit_active, en DAARNA de timestamp in visit_active geschreven.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function UdUsrVstTime($id) {
    global $dbp,$config;
    $tmp1 = mysql_fetch_array(mysql_query("SELECT 
visit_active, visit_prev FROM {$dbp}_users WHERE id='$id';"));
    
    $timestamp = time();

    //secondes * minuten uit config
    $tussentijd = 60*$config["timebeforevisitprevupdate"]; 
// 10 is de waarde @ config

    //kijken of tijd geupdate moet worden(visit_prev).
    if ($timestamp-$tussentijd<=$tmp1["visit_prev"]) {
        mysql_query("UPDATE {$dbp}_users 
SET visit_prev=visit_active WHERE id='$id';");
    }
    
    //Active timestamp updaten
    mysql_query("UPDATE {$dbp}_users 
SET visit_active='$timestamp' WHERE id='$id';");
}


Ik blijf hangen bij deze code:
PHP:
1
if ($timestamp-$tussentijd<=$tmp1["visit_prev"]) {

Eerst had ik het tekentje < als een > staan, toen update hij het bij iedere visit. Nou zou hij het na 10 minuten niet actief moetten updaten door je laatste active visit. Alleen dit doet hij niet.

Dus ik maak een echo van alle data:
code:
1
2
3
4
nu->        1058359151
tussen->    600
nu-tussen-> 1058358551              (nu minus tussen is nu-tussen)
db-prev->   1058352952

Dan zie je dat de nu-tussen groter is dan db-prev.

Maar hij blijft hem foutief updaten.
Dus ik heb ook nog deze 2 codes geprobeerd.
PHP:
1
2
3
4
5
6
7
8
//iedere hit = bijde update.
if ($timestamp>=$tmp1["visit_prev"]-$tussentijd) {

//en deze

//helemaal GEEN updates(niet na 10 
//minuten, niet na 30, gewoon NIET)
if ($timestamp<=$tmp1["visit_prev"]-$tussentijd) {


Iemand enig idee hoe dat ik de berenkening zo in php kan krijgen dat hij wel werkt? Het zit hem ergens in die ene if regel (denk ik).

[ Voor 5% gewijzigd door Verwijderd op 16-07-2003 17:18 . Reden: typo @ script ]


Acties:
  • 0 Henk 'm!

Verwijderd

Probeer deze eens:

-----

//edit
ik moet eerst testen voordat ik post.

Code werkt gewoon bij mij. Lijkt erop dat $tmp1["visit_prev"] niet goed is gedifineerd.

[ Voor 255% gewijzigd door Verwijderd op 17-07-2003 14:45 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Je moet alleen updaten wanneer "visit_prev" ouder is dan "(timestamp-tussentijd)":

PHP:
1
if ($tmp1["visit_prev"]<=$timestamp-$tussentijd) {

[ Voor 15% gewijzigd door Verwijderd op 17-07-2003 14:54 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 17 July 2003 @ 14:38:
[knip]
Code werkt gewoon bij mij. Lijkt erop dat $tmp1["visit_prev"] niet goed is gedifineerd.
Ik echo de pure data altijd bij dit sooryt problemen, dus niets behalve die waardes(dus ook de $tmp1["visit_prev"]), dit uit gewoonte voor goeie debugging ;)
Verwijderd schreef op 17 July 2003 @ 14:54:
Je moet alleen updaten wanneer "visit_prev" ouder is dan "(timestamp-tussentijd)":

PHP:
1
if ($tmp1["visit_prev"]<=$timestamp-$tussentijd) {
Hmz, even 10 minuten wachten wordt dat dan(tja beter goed getest dan half ;) ).

Ik had hem al via deze code getest
PHP:
1
2
3
if ($timestamp-$tussentijd<=$tmp1["visit_prev"]) {
//en
if ($timestamp-$tussentijd>=$tmp1["visit_prev"]) {

De laatste is toch gelijk aan jou code behalve dat de volgorde omgedraaid is toch?!

Het lijkt te werken, tnx.

[ Voor 49% gewijzigd door Verwijderd op 17-07-2003 17:33 . Reden: typo(35%) ]