Re: Last visitors

From: Date: Tue, 19 Apr 2005 14:08:56 +0000
Subject: Re: Last visitors
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-213368@lists.php.net to get a copy of this message
Petar Nedyalkov wrote: <snip>
You can store only 10 records for each user by using the following logic: mysql> show create table profile_log\G *************************** 1. row ***************************
       Table: profile_log
Create Table: CREATE TABLE profile_log ( profile_id int(10) default NULL, user_id int(10) default NULL, timestamp timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP ) ENGINE=MyISAM DEFAULT CHARSET=utf8 1 row in set (0.00 sec) When you create a profile you fill 10 blank records with timestamp 0000-00-00 00:00:00. Then if a user sees a profile: PSEUDO SQL: $SQL = "UPDATE profile_log SET user_id=".$userId." WHERE profile_id=". $profileId." ORDER BY timestamp ASC LIMIT 1"; This way you: 1. automatically get the new timestamp 2. have no more than 10 records per user.
What version of MySQL does that work in? I tried pasting that create table directly into MySQL and get an error... #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP ) ENGINE=MyISA Query used : CREATE TABLE profile_log ( profile_id int( 10 ) default NULL , user_id int( 10 ) default NULL , timestamp timestamp NOT NULL default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE = MYISAM DEFAULT CHARSET = utf8 I can't find a reference to this on MySQL's site...would you have a link to the documentation? Thanks. -- John C. Nichel ÜberGeek KegWorks.com 716.856.9675 john@kegworks.com

« previous php.general (#213368) next »