Toon posts:

[php/mysql] Kolom elke 24 uur resetten..

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey, ik weer..
Ik heb nog ff een vraagje. In een mysql-db/tabel hou ik bij hoeveel hits een bepaalde pagina krijgt. Met zoiets als:
PHP:
1
2
3
4
5
6
7
8
<?
$result=mysql_query("SELECT * FROM Users WHERE userid='$id'");
    $row2 = mysql_fetch_array($result);
    $hits = $row2['hits'];

        $hits++;
    mysql_query("UPDATE Users SET hits='$hits' WHERE userid = '$id'");
?>

Dit werkt aardig voor het bijhouden van een topsites-list :) Alleen nu de service al langere tijd bestaat en de aantallen aardig beginnen te groeien, is het voor een nieuwkomer haast onmogelijk om nog in de top10 te komen.. Snappie?! En dus wil ik nu een list per dag bij gaan houden. Dus maak ik een nieuwe kolom in m'n mysql-tabel. Deze moet dan om de 24 uur (bijv altijd om 0.00) weer terug op 0 worden gezet. Alleen hier loop ik vast.. Hoe moet ik dit aanpakken?!

Alvast bedankt!

Verwijderd

Ik zou een nieuwe tabel maken met daarin een userid en de hitgegevens, tijd, ip weet-ik-veel-wat.

Pak vervolgens een query en genereer de overzichten die je wilt, per dag, per week, per user, alles bijmekaar... zo hou je 't lekker flexibel.

Verwijderd

offtopic:
misschien scheelt:
[php]<?
mysql_query("UPDATE Users SET hits=hits+1 WHERE userid = '$id'");
?>[/php]
ipv
[php]<?
$result=mysql_query("SELECT * FROM Users WHERE userid='$id'");
$row2 = mysql_fetch_array($result);
$hits = $row2['hits'];

$hits++;
mysql_query("UPDATE Users SET hits='$hits' WHERE userid = '$id'");
?>[/php]
je wat regels code en performance

Verwijderd

Topicstarter
Op vrijdag 26 oktober 2001 11:56 schreef TheGentleman het volgende:
Ik zou een nieuwe tabel maken met daarin een userid en de hitgegevens, tijd, ip weet-ik-veel-wat.

Pak vervolgens een query en genereer de overzichten die je wilt, per dag, per week, per user, alles bijmekaar... zo hou je 't lekker flexibel.
Ja oke, das op zich wel aardig ja :)
Wat kan ik dan het handigste voor de datum/tijd gebruiken in mysql denk je (DATETIME/TIMESTAMP/TIME) en hoe ziet dan een query er uit voor bijvoorbeeld afgelopen week??

Iig al bedankt voor de reacties!

Verwijderd

Topicstarter
Op vrijdag 26 oktober 2001 14:13 schreef FizzGig het volgende:
offtopic:
misschien scheelt:
[php]<?
mysql_query("UPDATE Users SET hits=hits+1 WHERE userid = '$id'");
?>[/php]
ipv
[php]<?
$result=mysql_query("SELECT * FROM Users WHERE userid='$id'");
$row2 = mysql_fetch_array($result);
$hits = $row2['hits'];

$hits++;
mysql_query("UPDATE Users SET hits='$hits' WHERE userid = '$id'");
?>[/php]
je wat regels code en performance
Joh, dat wist ik nog niet ;)

Verwijderd

Op vrijdag 26 oktober 2001 14:25 schreef WebMasterMike het volgende:

[..]

Joh, dat wist ik nog niet ;)
Just checkin' :P

Verwijderd

Op vrijdag 26 oktober 2001 14:24 schreef WebMasterMike o.a het volgende:

[..]

Wat kan ik dan het handigste voor de datum/tijd gebruiken in mysql denk je (DATETIME/TIMESTAMP/TIME) en hoe ziet dan een query er uit voor bijvoorbeeld afgelopen week??
check http://www.mysql.com/doc/D/a/Date_calculations.html eens

Verwijderd

Op vrijdag 26 oktober 2001 14:24 schreef WebMasterMike het volgende:

[..]

Ja oke, das op zich wel aardig ja :)
Wat kan ik dan het handigste voor de datum/tijd gebruiken in mysql denk je (DATETIME/TIMESTAMP/TIME) en hoe ziet dan een query er uit voor bijvoorbeeld afgelopen week??

Iig al bedankt voor de reacties!
Ik zat te denken aan

SELECT * FROM users LEFT JOIN hitdata ON users.userid=hitdata.userid WHERE hitdata.datum>'20011019'

of zoiets. Wat betreft de types... 'k zou het eerlijk gezegd niet weten welke de beste is.

  • TiG
  • Registratie: Maart 2001
  • Laatst online: 29-06 14:19

TiG

Over die types:
Ik gebruik een integer als datatype en sla daarin een Unix timestamp op. Vind ik zelf het makkelijkst werken omdat je in PHP handige functies hebt om met een Unix timestamp om te gaan.

U gaat door voor de retorische vraag...


Verwijderd

Topicstarter
heb nog ff wat dingen geprobeert maar die lijken mij een beetje omslachtig.. Is het echt niet mogelijk om op een bepaalde tijd een kolom te wissen??

Verwijderd

Cronjobs is de meest nette oplossing, alleen moet je wel telnet toegang hebben tot een unix/linux machine. Cronjobs zijn scripts die op een bepaald tijdstip worden gedraad door de server. Als je hierin zet dat de kolom leeggegooid moet worden en de cronjob insteld op 0.00 uur, dan doet ie dat elke dag om precies 0.00 uur. Meer info over cronjobs op http://www.phpfreakz.com/artikelen.php?aid=44

  • besmart
  • Registratie: April 2000
  • Laatst online: 05-10-2015

besmart

fanta share the fun

Of in je PHP script neerzetten een controle bij elke keer als een bezoeker langskomt, checken wat voor tijd het is en of hij gereset/geleegd moet worden en zo ja of dat al gebeurd is, zoniet effe alter table delete of zoiets.


suc6

BeSmart! Everything goes well | photographs by Canon EOS 5D - Canon L 24-70 USM - Canon 70-300 USM IS

Pagina: 1