Author: Dan Thanh
Posted on: 2015-09-07
Package: PHP Sweepstakes
Read this article to learn how to use the PHP Sweepstakes package to solve a real world example of the problem.
Contents
A Real World Problem
The Implementation Algorithm
The PHP Date Functions
Example Tutorial
Creating the Class Object
Changing to the User Time Zone
Installation
The Complete Example Code
Example package output
Conclusion
A Real World Problem
To demonstrate how to solve the scheduling problems, nothing like a real world example. For instance a weekly and/or monthly distributed magazine that also organizes regular sweepstakes, such as word game where you have to answer test questions with multiple choice answers.
The reader then can use the browser and navigate to the page that uses this package and choose his magazine to enter the winning word along with his personal data to participate to the sweepstakes.
The package shows all the current sweepstakes and also the previous sweepstakes, so that the reader can participate on the sweepstakes a week or a month later.
This image shows an example screenshot. In the first row all the magazines from the 35 week of the year and in the second row all the magazines from the 34 week of the year.
The Implementation Algorithm
It uses an algorithm that simply loops over the given range of days starting from a given day. Then it compares each day with each sweepstakes to find the right sweepstakes. So, it is all gathered in two loops.
The PHP Date Functions
The exact calendar (time and date) calculations are very difficult. Fortunately PHP offers several functions, like for instance strtotime(), mktime(), date() and DateTime(), that help the developers to solve problems like this.
For instance the mktime() function can return the current timestamp or any other timestamp. This is useful to change the reference time of the programming system or testing server.
The date() function can return the day of the week, the week number and the month number. For instance date("D") returns the day of the week and it is useful because the sweepstakes starts at specific day.
The DateTime() function is useful to return the UNIX timestamp with respect to the users time zone. For instance echo $d->modify("monday this week") returns the UNIX timestamp of the monday of this week. The method modify() is needed because the DateTime() functions needs a UNIX timestamp to initialize the class object similar to a seed for a random generator.
The PHP date functions can also parse english text to unix timestamp. For instance strtotime('14:00 today');
Basically these 4 php functions are needed to change the reference clock of the user system needed for testing and also for production without actually change the time of the server operating system.
Example Tutorial
array(
"title" => "Sweepstake 1",
"uid" => "1",
"day" => "2",
"cycle" => "0",
"end" => "0",
"table" => array( array
(
"ST" => "18 December",
"SD" => 1355785200,
),
array
(
"ST" => "24 December",
"SD" => 1356303600,
),
array
(
"ST" => "2 October",
"SD" => 1349128800,
)
)
)
In addition there is the table array that holds the list of exceptions which is simply a date (timestamp). An event can then be saved with many other events together to feed the main function.
Creating the Class Object
$s = new sweepstake();
$result = $s->main($table,31);
echo $result;
Changing to the User Time Zone
Installation
The PHP Sweepstakes package requires PHP 5.3 or later. Download the package from phpclasses.org and save the files to where you can include the file main.php.
The Complete Example Code
require ("main.php"); $table = array( array( "title" => "Sweepstake 1", "uid" => "1", "day" => "2", "cycle" => "0", "end" => "0", "table" => array( array ( "ST" => "18 December", "SD" => 1355785200, ), array ( "ST" => "24 December", "SD" => 1356303600, ), array ( "ST" => "2 October", "SD" => 1349128800, ) ) ) ); $s = new sweepstake(); $result=$s->main($table,31); echo $result;
Example package output
In the example package output above you can see 5 weekly sweepstakes magazines and 1 monthly sweepstake magazine at the start day 1.
You can also see new and old issues when new is the current week and old is the previous week. In day 3 you can see old is empty because the participation on the sweepstake magazine is terminated and/or the magazine is not available anymore.
Conclusion
The PHP Sweepstakes package makes much simpler the calculation of periodical events when you have more complicated factors to take in account, like multiple days span or exception days like holidays.
If you like this article or have a question about to use this class to solve the problem of scheduling periodical events, post a comment to this article.
You need to be a registered user or login to post a comment
1,345,758 PHP developers registered to the PHP Classes site.
Be One of Us!
Login Immediately with your account on:
Comments:
No comments were submitted yet.