Suggestion how to Check for action
Moderator: General Moderators
Suggestion how to Check for action
Hey everyone I dont think the title is a good one but I need some suggestions how to do something. I have the general idea but the date thing is what I am not sure about.
I have 3 options
Day - 1
Week - 7
Month - 30
Now on my script I want to limit a action to that many days.
Ex say they request a withdrawal well I have the limit at week(7) so their for they can only do this one time per 7 days and same with day and month now my question is..
Would I just have it check the date against the past 7 days or future? I am thinking past but just need to have all my facts before I attempt this.
If anyone can help me out that would be great.
if you need more details let me know
Thanks
I have 3 options
Day - 1
Week - 7
Month - 30
Now on my script I want to limit a action to that many days.
Ex say they request a withdrawal well I have the limit at week(7) so their for they can only do this one time per 7 days and same with day and month now my question is..
Would I just have it check the date against the past 7 days or future? I am thinking past but just need to have all my facts before I attempt this.
If anyone can help me out that would be great.
if you need more details let me know
Thanks
- flying_circus
- Forum Regular
- Posts: 732
- Joined: Wed Mar 05, 2008 10:23 pm
- Location: Sunriver, OR
Re: Suggestion how to Check for action
I would probably use a timestamp.
Code: Select all
<?php
#Variables
$day = 86400 // Number of seconds in 1 day
$week = 604800 // Number of seconds in 7 days
$month = 2592000 // Number of seconds in 30 days
#Check Window of Opportunity
if($last_withdrawl > now() - $day) {
# A day has not passed since last withdrawl
} else {
# More than a day has passed since the last withdrawl
}
?>Re: Suggestion how to Check for action
Thanks for the reply.
the variable $last_withdrawal would be like the date of the last withdrawal correct?
Thanks
the variable $last_withdrawal would be like the date of the last withdrawal correct?
Thanks
- flying_circus
- Forum Regular
- Posts: 732
- Joined: Wed Mar 05, 2008 10:23 pm
- Location: Sunriver, OR
Re: Suggestion how to Check for action
Exactly.nite4000 wrote:Thanks for the reply.
the variable $last_withdrawal would be like the date of the last withdrawal correct?
Thanks
Store it as a timestamp in a database, or whatever you are using to keep track of withdrawl history.
Re: Suggestion how to Check for action
Thats what I thought but I like to double check sometimes.
I am actually have trouble getting it to say todays date as a time stamp in the database its comming up 0000-00-00 00-00-00
Thanks
Don
I am actually have trouble getting it to say todays date as a time stamp in the database its comming up 0000-00-00 00-00-00
Thanks
Don
- flying_circus
- Forum Regular
- Posts: 732
- Joined: Wed Mar 05, 2008 10:23 pm
- Location: Sunriver, OR
Re: Suggestion how to Check for action
Don, I use the database field type integer (length 10). In php you can use the time() function to grab the current timestamp.nite4000 wrote:Thats what I thought but I like to double check sometimes.
I am actually have trouble getting it to say todays date as a time stamp in the database its comming up 0000-00-00 00-00-00
Thanks
Don
So, your withdrawl function might look like:
Code: Select all
<?php
function withdrawl($user_id)
{
# Get Current Timestamp
$time = time();
# Update the database with the current timestamp of the withdrawl:
$query = "UPDATE `users` SET `last_withdrawl`='{$time}' WHERE `user_id`='{$user_id}' LIMIT 1";
// .. your code here .. //
}
?>
print "Human Friendly Data: " . date('F d, Y', $last_withdrawl);
Another option is to use mysql's (I assume you are using mysql, if not, your database *should* offer similar functionality) unix timestamp features. You can check them out here:
http://dev.mysql.com/doc/refman/5.5/en/ ... -timestamp
Re: Suggestion how to Check for action
hey this is what i got
got the saving to db working right
but here is my code and I will explain to you can follow
I think i have something backwards and its not giving the error msg like it should.
any suggestions what to correct?
Don
got the saving to db working right
but here is my code and I will explain to you can follow
Code: Select all
if($f_settings['en_co_limit']=="1") //check to see if the cashout feature is enabled
{
if($f_settings['limitperiod']=='1')//1 means day
{
$day = 86400; // Number of seconds in 1 day
if($wdcount['request'] > $time - $day) { //subtract the last recorded time from the day
if ($wd_count >= $f_settings['co_limit']) { // check the number of time that are found against the limit
$query=mysql_query("Select count(*) from withdrawal_count WHERE username ='{$_SESSION['m_user']}'")or die(mysql_query());
list($wd_count) = mysql_fetch_row(mysql_query($query));
$error = TRUE;
$msg .= 'Opps! You are only allowed '.$f_settings['co_limit'].' cashout request per day';
}
}
}
}
any suggestions what to correct?
Don
- flying_circus
- Forum Regular
- Posts: 732
- Joined: Wed Mar 05, 2008 10:23 pm
- Location: Sunriver, OR
Re: Suggestion how to Check for action
I got a little turned around in your code, it looked like you were trying to reference $wd_count before you created it. I am not sure I completely understand what the code is supposed to do, but I have cleaned it up and hopefully between this and what you have, you can make it work for your needs.
Code: Select all
<?php
function withdrawal_count($user_id, $period)
{
# Define Time: Now
$time = time();
# Count Number of User Withdrawals Within Last Period
$query = sprintf("SELECT count(*) FROM `withdrawal_count` WHERE `username` ='%s' AND UNIX_TIMESTAMP(`withdrawal_time`) > '%d' LIMIT 1;",
mysql_real_escape_string($user_id),
mysql_real_escape_string($time - $period));
# Fetch Records
list($wd_count) = mysql_fetch_row(mysql_query($query));
return $wd_count;
}
if($f_settings['en_co_limit']=="1") { // check to see if the cashout feature is enabled
# If Limit Period Exists, Check Withdrawal Count Within Period
if(isset($f_settings['limitperiod'])) {
switch($f_settings['limitperiod']) {
case '1':
$period_name = "Day";
$withdrawal_count = withdrawal_count($_SESSION['m_user'], 86400);
break;
case '7':
$period_name = "Week";
$withdrawal_count = withdrawal_count($_SESSION['m_user'], 604800);
break;
case '30':
$period_name = "Month";
$withdrawal_count = withdrawal_count($_SESSION['m_user'], 2592000);
break;
}
}
# If Withdrawal Count Is Greater Than 0, User Has Made a Withdrawal Within The Specified Period, Deny
if($withdrawal_count > 0) {
$error = TRUE;
$msg .= "Opps! You are only allowed {$f_settings['co_limit']} cashout request per {$period_name}";
}
}
?>Re: Suggestion how to Check for action
hey thanks for the reply and sorry for the confusion. I tried ya code however i am getting errors.
Here is what I am trying to do exactly
i have a option in admin panel that enables the limit system for the withdrawals
if enabled the admin can set the number of times say 2 which is the co_limit and then set the limitperiod which is 1,7,30 which is day,week,month
from there it would limit how many times a use can input a withdrawal within that time frame.
I did put this code inside a if POST since its a form so is that ok?
i have the limit set at 2 but yet i have done it more then 2 times.. I also thought about just having the form hidden until the time expired and they can request a cashout again but not sure if that would be good idea or not
i hope i will get this working soon thanks
Don
Here is what I am trying to do exactly
i have a option in admin panel that enables the limit system for the withdrawals
if enabled the admin can set the number of times say 2 which is the co_limit and then set the limitperiod which is 1,7,30 which is day,week,month
from there it would limit how many times a use can input a withdrawal within that time frame.
I did put this code inside a if POST since its a form so is that ok?
i have the limit set at 2 but yet i have done it more then 2 times.. I also thought about just having the form hidden until the time expired and they can request a cashout again but not sure if that would be good idea or not
i hope i will get this working soon thanks
Don