[PHP] Interval na including php file

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik heb op m'n site een bezoekers teller die een aantal gegevens in de database zet, waaronder het ip, en het aantal keer dat hij de pagina opend,

nu is het zo, elke keer als je op de index.php komt, dat ie gelijk 1 bij het 'aantal' bijschrijft,

hoe doe ik dit, dat hij pas na 5 minuten weer 1 mag bij tellen? ik kon nergens iets vinden wat hier op lijkt, of ik heb verkeerde termen gebruikt.

m'n velden in database:

TABEL: iplog
VELDEN: id, datum, tijd, ipadres, aantal


dus na 5 minuten, mag hij weer 1 bij aantal optellen (ongeacht page-refresh of niet)

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Is dat 5 minuten per bezoeker of in het algemeen. In het eerste geval zul je dat met sessies, cookies of ip's op moeten gaan lossen. In het tweede geval zul je de laatste update tijd bij moeten houden en alleen updaten als die langer dan 5 minuten terug is. Ik vermoed echter dat je de eerste wilt hebben. Als je genoegen neemt met IP lijkt het me niet zo lastig om een datum + 5 minuten < now() toe te voegen aan de where toch?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wat voor code gebruik je dan precies voor het inserten?

En heb je er bij nagedacht om het als volgt op te lossen:

SQL:
1
2
// pseudo code
select * from iplog where ipadres = '_ipadres_' and datum < (datum - 5 minuten)


Als je daar resultaat uitkrijgt, dan hoef je geen insert uit te voeren ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • PieperM
  • Registratie: September 2005
  • Laatst online: 15:34
Nou weet ik natuurlijk niet hoe jou script precies in elkaar zit, maar je schrijft dus een tijd weg, gezien je table.

Als je die tijd nu vergelijkt met de huidige tijd, en zodra het verschil groter is dan 5 min voer je je functie uit anders niet. Snap je?

Hier meer over de funtion date():
http://nl3.php.net/manual/nl/function.date.php

edit: net weer te laat O-)

[ Voor 5% gewijzigd door PieperM op 07-03-2007 17:28 ]

"Non scholae sed vitae discimus"


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Haha, dank jullie wel,

hier is mn script trouwens;

PHP:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?
include ("connect.php");
error_reporting(E_ALL);
#Als het de eerste keer is dat je op deze site komt
#Zet dan IP in de database met overige gegevens

$query = mysql_query("SELECT * FROM iplog"); 
while($object = mysql_fetch_assoc($query)){ 
    $logip = $object['ipadres'];
    $aantal = $object['aantal'];
    $id = $object['id'];
    $cur_datum = date("d-m-Y");
    $huidigip = $_SERVER['REMOTE_ADDR'];
    }


if ($huidigip != $logip) {


    $sql = "INSERT INTO iplog (datum, tijd, ipadres, aantal) VALUES ('$cur_datum', NOW(), '$huidigip', '1')";
    
    mysql_query($sql) or die("<b>A fatal MySQL error occured</b>.\n<br /><b>Query:</b> " . $sql . "<br />\nError: (" . mysql_errno() . ") " . mysql_error());

}


# als je hier vaker komt, zet dan AANTAL + 1

if ($huidigip == $logip) {
$nieuwaantal = $aantal + '1';
$sql = " 
    UPDATE 
      iplog
    SET 
     datum = '$cur_datum',
     ipadres = '$logip',
     tijd = NOW(),
     aantal = '$nieuwaantal'
    WHERE 
     ipadres = '$huidigip'
";
        mysql_query($sql) or die("<b>A fatal MySQL error occured</b>.\n<br /><b>Query:</b> " . $sql . "<br />\nError: (" . mysql_errno() . ") " . mysql_error());
    }
    
    ?>

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
yes het is me gelukt, beetje op de manier als pieper, hier is de complete source

PHP:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?
include ("connect.php");
error_reporting(E_ALL);
#Als het de eerste keer is dat je op deze site komt
#Zet dan IP in de database met overige gegevens

$query = mysql_query("SELECT * FROM iplog"); 
while($object = mysql_fetch_assoc($query)){ 
    $logip = $object['ipadres'];
    $aantal = $object['aantal'];
    $id = $object['id'];
    $cur_datum = date("d-m-Y");
    $cur_tijd = date("Hi");
    $tijdid = $object['tijdid'];
    $huidigip = $_SERVER['REMOTE_ADDR'];
    $tijd = $object['tijd'];
    }


if ($huidigip != $logip) {


    $sql = "INSERT INTO iplog (datum, tijd, tijdid, ipadres, aantal) VALUES ('$cur_datum', NOW(), '$cur_tijd', '$huidigip', '1')";
    
    mysql_query($sql) or die("<b>A fatal MySQL error occured</b>.\n<br /><b>Query:</b> " . $sql . "<br />\nError: (" . mysql_errno() . ") " . mysql_error());

}

if ($huidigip == $logip) {
if ($cur_tijd < $tijdid + '5') {
echo "kleiner dan 5 min dus niet updaten";
echo $tijdid + '5';
}
else {
$nieuwaantal = $aantal + '1';
$sql = " 
    UPDATE 
      iplog
    SET 
     datum = '$cur_datum',
     ipadres = '$logip',
     tijdid = '$cur_tijd',
     tijd = NOW(),
     aantal = '$nieuwaantal'
    WHERE 
     ipadres = '$huidigip'
";
    echo $tijd + '00:05';
    mysql_query($sql) or die("<b>A fatal MySQL error occured</b>.\n<br /><b>Query:</b> " . $sql . "<br />\nError: (" . mysql_errno() . ") " . mysql_error());
    }
    }
    ?>
Pagina: 1