Hi, everyone,
I had managed to make use of the date link from a simple calendar script to my query table. When I click on the date's link or Prev and Next Month link, The table first row will be that link's day and onwards.
I have a problem with the page link part that it won't advance to the next page according but go back according to today's date.
This is the calender script section[PHP] // Display Calandar
error_reporting('0');
ini_set('display_errors', '0');
// Gather variables from
// user input and break them
// down for usage in our script
if(!isset($_REQUEST['date'])){
$date = mktime(0,0,0,date('m'), date('d'), date('Y'));
} else {
$date = $_REQUEST['date'];
}
$day = date('d', $date);
$month = date('m', $date);
$year = date('Y', $date);
// Get the first day of the month
$month_start = mktime(0,0,0,$month, 1, $year);
// Get friendly month name
$month_name = date('M', $month_start);
// Figure out which day of the week
// the month starts on.
$month_start_day = date('D', $month_start);
switch($month_start_day){
case "Sun": $offset = 0; break;
case "Mon": $offset = 1; break;
case "Tue": $offset = 2; break;
case "Wed": $offset = 3; break;
case "Thu": $offset = 4; break;
case "Fri": $offset = 5; break;
case "Sat": $offset = 6; break;
}
// determine how many days are in the last month.
if($month == 1){
$num_days_last = cal_days_in_month(0, 12, ($year -1));
} else {
$num_days_last = cal_days_in_month(0, ($month -1), $year);
}
// determine how many days are in the current month.
$num_days_current = cal_days_in_month(0, $month, $year);
// Build an array for the current days
// in the month
for($i = 1; $i <= $num_days_current; $i++){
$num_days_array[] = $i;
}
// Build an array for the number of days
// in last month
for($i = 1; $i <= $num_days_last; $i++){
$num_days_last_array[] = $i;
}
// If the $offset from the starting day of the
// week happens to be Sunday, $offset would be 0,
// so don't need an offset correction.
if($offset > 0){
$offset_correction = array_slice($num_days_last_array, -$offset, $offset);
$new_count = array_merge($offset_correction, $num_days_array);
$offset_count = count($offset_correction);
} else {
// The else statement is to prevent building the $offset array.
$offset_count = 0;
$new_count = $num_days_array;
}
// count how many days we have with the two
// previous arrays merged together
$current_num = count($new_count);
// Since we will have 5 HTML table rows (TR)
// with 7 table data entries (TD)
// we need to fill in 35 TDs
// so, we will have to figure out
// how many days to appened to the end
// of the final array to make it 35 days.
if($current_num > 35){
$num_weeks = 6;
$outset = (42 - $current_num);
} elseif($current_num < 35){
$num_weeks = 5;
$outset = (35 - $current_num);
}
if($current_num == 35){
$num_weeks = 5;
$outset = 0;
}
// Outset Correction
for($i = 1; $i <= $outset; $i++){
$new_count[] = $i;
}
// Now let's "chunk" the $all_days array
// into weeks. Each week has 7 days
// so we will array_chunk it into 7 days.
$weeks = array_chunk($new_count, 7);
// Build Previous and Next Links
$previous_link = "<a href=\"/modules.php?name=event&date=";
if($month == 1){
$previous_link .= mktime(0,0,0,12,$day,($year -1));
} else {
$previous_link .= mktime(0,0,0,($month -1),$day,$year);
}
$previous_link .= "\"><< "._PREVMON."</a>";
$next_link = "<a href=\"/modules.php?name=event&date=";
if($month == 12){
$next_link .= mktime(0,0,0,1,$day,($year + 1));
} else {
$next_link .= mktime(0,0,0,($month +1),$day,$year);
}
$next_link .= "\">"._NEXTMON." >></a>";
// Build the heading portion of the calendar table
echo "<center>";
echo "<table border=\"1\" cellpadding=\"2\" cellspacing=\"0\" width=\"300\" class=\"calendar\">\n".
"<tr>\n".
"<td colspan=\"7\">\n".
"<table align=\"center\">\n".
"<tr>\n".
"<td colspan=\"2\" width=\"75\" align=\"left\">$previous_link</td>\n".
"<td colspan=\"3\" width=\"150\" align=\"center\">$month_name $year</td>\n".
"<td colspan=\"2\" width=\"75\" align=\"right\">$next_link</td>\n".
"</tr>\n".
"</table>\n".
"</td>\n".
"<tr bgcolor=\"$bgcolor2\">\n".
"<td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td>\n".
"</tr>\n";
// Now we break each key of the array
// into a week and create a new table row for each
// week with the days of that week in the table data
$i = 0;
foreach($weeks AS $week){
echo "<tr>\n";
foreach($week as $d){
if($i < $offset_count){
$day_link = "<a href=\"modules.php?name=event&date=".mktime(0,0,0, $month -1,$d,$year)."\">$d</a>";
echo "<td class=\"nonmonthdays\">$day_link</td>\n";
}
if(($i >= $offset_count) && ($i < ($num_weeks * 7) - $outset)){
$day_link = "<a href=\"modules.php?name=event&date=".mktime(0,0,0, $month,$d,$year)."\">$d</a>";
if($date == mktime(0,0,0,$month,$d,$year)){
echo "<td class=\"today\">$d</td>\n";
} else {
echo "<td class=\"days\">$day_link</td>\n";
}
} elseif(($outset > 0)) {
if(($i >= ($num_weeks * 7) - $outset)){
$day_link = "<a href=\"modules.php?name=event&date=".mktime(0,0,0, $month +1,$d,$year)."\">$d</a>";
echo "<td class=\"nonmonthdays\">$day_link</td>\n";
}
}
$i++;
}
echo "</tr>\n";
}
// Close out your table and that's it!
echo '<tr><td colspan="7" class="days"> </td></tr>';
echo '</table></center>';
echo "<br>";[/PHP]This is my query to the database table[PHP] // sort table colum
$sort_order = 'date asc';
if( isset( $_GET['order']) ){
$order = $_GET['order'];
switch ($order) {
case "A_date":
$sort_oredr = 'date asc';
break;
case "D_date":
$sort_order = 'date desc';
break;
case "A_place":
$sort_order = 'place asc';
break;
case "D_place":
$sort_order = 'place desc';
break;
}
}
$d = date("Y-m-d", $date); // this will return today's date as calendar
$where_field = "date >= '$d'";
// Set max number of row for Paging tableORDER by".$sort_order."
$max_results = 15;
if(!isset($_GET['page'])){
$page = 1;
} else {
$page = $_GET['page'];
}
$from = (($page * $max_results) - $max_results);
$result = $db->sql_query("SELECT * FROM ".$prefix."_event_cat WHERE $where_field ORDER by $sort_order LIMIT $from, $max_results") or die("Error: " . $db->sql_error());
if($db->sql_numrows($result) == 0){
echo(""._NODATA."");
}[/PHP]and finally this is my paging link section[PHP] // Page Numbering
$total_results = mysql_result($db->sql_query("SELECT COUNT(*) as date FROM ".$prefix."_event_cat WHERE $where_field"),0);
$total_pages = ceil($total_results / $max_results);
$sort_order = $_GET['order'];
// Build Previous Link
echo "<center>";
if($page > 1){
$prev = ($page - 1);
echo "<a href=\"/modules.php?name=event&page=1&order=$sort_order\"> <img src=\"images/dl_arrow.gif\" alt=\""._FIRST."\" title=\""._FIRST."\" border=\"0\"></a> ";
echo " <a href=\"/modules.php?name=event&page=$prev&order=$sort_orde r\"><img src=\"images/l_arrow.gif\" alt=\""._PREV."\" title=\""._PREV."\" border=\"0\"></a> ";
}
for($i = 1; $i <= $total_pages; $i++){
if(($page) == $i){
echo " [$i] ";
} else {
echo "<a href=\"/modules.php?name=event&page=$i&order=$sort_order\" > $i </a> ";
}
}
// Build Next & Last page Link
if($page < $total_pages){
$next = ($page + 1);
echo " <a href=\"/modules.php?name=event&page=$next&order=$sort_orde r\"><img src=\"images/r_arrow.gif\" alt=\""._NEXT."\" title=\""._NEXT."\" border=\"0\"></a> ";
$last = $total_pages;
echo " <a href=\"/modules.php?name=event&page=$last&order=$sort_orde r\"><img src=\"images/dr_arrow.gif\" alt=\""._LASTPAGE."\" title=\""._LASTPAGE."\" border=\"0\"></a>";
}
echo "</center>";
echo "<br>";[/PHP]
line 106 of the 1st section of code : is the link created by the calendar script
line 21 of the 2nd section of code : is where I define and convert the date to put into the query
Please help me to make the paging link work along with the date link from the calendar.
Also I would like to have the calendar go along with the page link when the page advance to the next month, the calender would change to the next month accordingly.
Thanks in advance