Hey guys and girls, have this script setup to when a user visits the site they are given a score.. The users have an id already with them and that ID+score+date gets put into my MySQL DB I am trying to make it so the user can only get the score one time per 24 hours (I want to make it a set time like midnight EST or CMT) so for instance I go to site and get a score of 7, it is already entered into the DB if i go back to the site an hour later it tells me I already received my score today and have to wait until midnight to get a new one.. When I go back tomorrow I get a new score and it is added to the database (I don't want the previous scores to stay in the database also) I got this much so far (this top code is located in my top file) // Check if users exists if( !check_user($user) ) { [B]not sure what to enter here[/B] } Code (markup): my check user function in my userinc file function check_user( $u ) { $res = query("SELECT * FROM `users` WHERE `userid` = $u"); list($total_rows) = mysql_fetch_array($res); if( $total_rows > 0 ) return true; else return false; } Code (markup): then this is where I show the score (aka karma) (this is located in my index) $karmarandom = rand(50,200); $date = date("Y-m-d"); if( !check_user($user) ) { $res = query("UPDATE `users` SET `karma`=(`karma`+$karmarandom) WHERE `userid`=$user"); echo 'Your Daily Karma Today Is '.$karmarandom.''; } else { $res = query("INSERT INTO users VALUES ('$uid', '$user', '$karmarandom', '$date')"); echo 'Your Daily Karma Today Is '.$karmarandom.''; } if ($row[date] > time()) { //Limit the times a user can get Karma. $query = query("SELECT * FROM 'karma' WHERE userid = '$user'"); if (mysql_num_rows($query) >= 1) { echo 'You have received your Daily Karma Today, it was '.$karmarandom.', Come Back Tomorrow for New Karma!'; } } Code (markup): What it currently does is everytime you refresh the page it gives you a new score entering that into the database, today I refreshed hte page 4 times and have 4 scores in the database.. Any suggestions? Thanks, Bill
My brain is fuzzy tonight. I can't read your code. Allow me to ramble and maybe I can inspire you. When the user is created their score is 0 or -1 and the date and time is inserted into 2 fields. Each time they visit if their score is not == to the defalut and 24 hours has passed they get a new score. Their score is updated as is the time and date. Updated not inserted. If their score is == to the default they update as is the time and date. (for first time users) You have to branch your actions based on the score && the elasped time. //if user does not exist take them to the register page I hope this inspires you.
have it check to see if the date and year are a match .. if it is , dont add any more points , if there isn't , then its their first time that day.
so far what i have understood, you can do it with single query as follows.. I hope uid is primary key and if not, you can either make it primary or create a unique key index onto it depending on the structure of the table. insert into karma (uid, dt, karma) values (1, current_date, 3) on duplicate key update karma = if(dt = current_date, karma, 3), dt = current_date Code (markup): let me know if this solves purpose.
i got it guys, using inspiration from colbyt and the code from mastermun and taking a day off from looking at things it finally worked out.. Thanks for your help it is much appreciated! + rep for both of ya