This is a piece of my old code. I used it against fake download counter.
DB should be filled for required records quantity with blank data before using.
Quote:
CREATE TABLE Hits (
Hit int(10) NOT NULL default '0',
Program smallint(6) unsigned NOT NULL default '0',
Expiration_Date int(10) NOT NULL default '0',
PRIMARY KEY (Hit,Program),
KEY Program (Program),
KEY Expiration_Date (Expiration_Date)
) TYPE=MyISAM MIN_ROWS=100 MAX_ROWS=100 PACK_KEYS=1 ROW_FORMAT=FIXED;
|
MIN_ROWS and MAX_ROWS have no sense at all. only for appearance... :-)
PHP Code:
if($hits_count)
{
$query='SELECT 1 FROM `Hits` WHERE `Hit`='.$user->ip.' AND `Program`='.$this->program['Program'].' LIMIT 1';
$r=&$db->query(&$query);
if(!$db->num_rows(&$r))
{
$query='SELECT `Hit`,`Program` FROM `Hits` ORDER BY `Expiration_Date` LIMIT 1';
$r=&$db->query(&$query);
list($hit,$program)=$db->fetch_row(&$r);
$db->free_result(&$r);
$query='UPDATE `Hits` SET `Hit`='.$user->ip.',`Program`='.$this->program['Program'].',`Expiration_Date`='.time().' WHERE `Hit`='.$hit.' AND `Program`='.$program.' LIMIT 1';
$db->query(&$query);
$query='UPDATE `Programs` SET `Real_Hits_Count`=`Real_Hits_Count`+1 WHERE `Program`='.$this->program['Program'].' LIMIT 1';
$db->query(&$query);
}
}
...there I'm using 'update' instead 'insert'....
Regards