Jump to content

CALENDAR TUTORIAL PROBLEM


davidguz

Recommended Posts

Hi,

  I did the calendar tutorial, and once I upload to the server, it doesn't display the calender at all, only the header tag. What am I doing wrong ???

Here is the link:

[url=http://www.pacificcollege.edu/PHP_TEST/calender.php]http://www.pacificcollege.edu/PHP_TEST/calender.php[/url]

and here is the php code:

<html>
<head>
<title>PHP CALENDER</title>
<style type="text/css">
<!--
.table.calender { border: 1px solid #000000; border-collapse: collapse; color: #000000; background: #FFFFFF;}
.td.today { border: 1px solid white; color:#000000; background: #EFEFEF; font-weight: bold;}
.td.nomonthdays { border: 1px solid white; color: #000000; background: #EFEFEFEF;}
-->
</style>

</head>

<body>
<h1>PHP CALENDER TUTORIAL</h1>

<?php
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'];
}
$date = date('d', $date);
$month = date('m', $date);
$year = date('y', $date);
// Get friendly month name
$month_name = date('M', $month_start);
// Fiqure 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 day 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 day are in the current month.
$num_day_current = cal_day__in_month(0, $month, $year);
// Build an array for the number of days
// in lsat month.
for($i = 1; $i <= $num_day_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);
}
//The else statement is to prevent building the $offset array.
else {
    $new_count = $num_days_array;
}
// count how many day we have with the two
// previous attays merged together
$current_num = count($new_count);
// Since we will have 5 HTML table rows (TR)
// with 7 table data endries (TD)
// we need to fill in 35 TDs
// so, we will have to fiqure out
// how many days to appended 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 $new_count array
// into weeks. Eack week has 7 day
// so we will array_chunk it into 7 days.
$weeks = array_chunk($new_count, 7);
$previous_link = "<a href=\"".$_SERVER['PHP_SELF']."?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 .= "\"><< Pre</a>";
 
$next_link = "<a href=\"".$_SERVER['PHP_SELF']."?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 .= "\">Next >></a>";

// Build the heading portion of the calendar table
echo "<table border=\"1\" cellpadding=\"2\" cellspacing=\"0\" width=\"300\" class=\"calendar\">\n".
    "<tr>\n".
"<td> colspan=\"7\">".
"<table align=\"center\">".
"<tr>".
"<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\" with\"75\" align=\"right\">$next_link</td>\n".
"</tr>\n".
"</table>\n".
"</td>\n".
"<table>\n".
"</td>\n".
"<tr>\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 eack key of the array
// into a week and create a new table row for each
// week with the day of that week in the talbe date
$i = 0;
foreach($weeks as $week){
    echo "</tr>\n";
foreach($week as $d){
    if($i < $offset_count){
      $day_link = "<a href\"".$_SERVER['PHP_SELF']."?date=".mktime(0,0,0,$month -1,$d,$year)."\">$d</a>";
  echo "<td class=\"nomonthdays\">$day_link</td>\n";
}

if($date == mktime(0,0,0,$month,$d,$year)){
    echo "<td class\"today\">$d</td>\n";
} else {

    echo "<td class=\"days\"><a href=\"".$_SERVER['PHP_SELF']."$date=".mktime(0,0,0,$month,$d,$year)."\">$d</td>\n";
}

$day_link = "<a hre=\"".$_SERVER['PHP_SELF']."?date=".mktime(0,0,0,$month +1,$d,$year)."\">$d</a>";
      echo "<td class=\"nomonthdays\">$day_link</td>\n";
}
$i++;

}
echo "</tr>\n";
// Close out your table and that's it!
echo '<tr><td colspan="7" class="day"></td></tr>';
echo '</table>';    
?>



</body>
</html>

And, my email address: superguz2001@yahoo.com
Link to comment
Share on other sites

Ok, I did what you suggested here is the link:

[url=http://www.pacificcollege.edu/PHP_TEST/calender.php]http://www.pacificcollege.edu/PHP_TEST/calender.php[/url]

But, I'm interning for this company, so I'm just practicing on their servver, so I don't want to mess with their confiquration, and I don't know if the "error reporting level is in your php.ini file or if the display errors is turned off"
Link to comment
Share on other sites

[quote author=redarrow link=topic=102894.msg409166#msg409166 date=1154637376]
post the link were you got this totural please thanks.
[/quote]

Sorry, wrong link. I didn't read you post carefully. Here is the correct to the tutorial:
[url=http://www.phpfreaks.com/tutorials/83/0.php]http://www.phpfreaks.com/tutorials/83/0.php[/url]
Link to comment
Share on other sites


fully tested ok copy past ok

[code]
<html>
<head>
<title>PHP Calendar</title>
<style type="text/css">
<!--
.table.calendar {border: 1px solid #000000; border-collapse: collapse; color: #000000;

background: #FFFFFF; }
.td.today { border: 1px solid white; color: #000000; background: #EFEFEF; font-weight: bold;}
.td.monthdays {border: 1px solid #434470; color: #000000; background: #FFFFFFF; }
.td.nonmonthdays { border: 1px solid white; color: #000000; background: #EFEFEF;}
-->
</style>
<body>

<?php
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);
}

// The else statement is to prevent building the $offset array.
else {
    $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=\"".$_SERVER['PHP_SELF']."?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 .= "\"><< Prev</a>";

$next_link = "<a href=\"".$_SERVER['PHP_SELF']."?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 .= "\">Next >></a>";

// Build the heading portion of the calendar table
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>\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=\"".$_SERVER['PHP_SELF']."?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=\"".$_SERVER['PHP_SELF']."?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=\"".$_SERVER['PHP_SELF']."?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>';
?>
</body>
</html>
[/code]
Link to comment
Share on other sites

[quote author=davidguz link=topic=102894.msg409172#msg409172 date=1154637891]
[quote author=redarrow link=topic=102894.msg409166#msg409166 date=1154637376]
post the link were you got this totural please thanks.
[/quote]

I'm just a beginner at this, and I would like to practice on the scripting. so that's why I'm doing the tutorials on this site to gain some understanding.

Sorry, wrong link. I didn't read you post carefully. Here is the correct to the tutorial:
[url=http://www.phpfreaks.com/tutorials/83/0.php]http://www.phpfreaks.com/tutorials/83/0.php[/url]
[/quote]
Link to comment
Share on other sites

[quote]I'm just a beginner at this, and I would like to practice on the scripting. so that's why I'm doing the tutorials on this site to gain some understanding.[/quote]

There is a special forum for help with PHPFreaks tutorials as well as a Third-Party Scripts forum.  All of this is outlined in the guidelines.
Link to comment
Share on other sites

Well, I'm going to take a break from this, been at it all day, and I still don't see the calendar, anyways I took it down, so it wont display. Anyways, here is my other question before I leave. In order for me to have this work, I have to install php.ini and where do I install at in my machine or the server? Like I said I'm totally new at this, and if I can have someone guide me thru this, I would greatly appreciate it! Anyways, thanks guys for trying to help me out with this, you guys ROCK! Now, off to my Kung-Fu lesson.
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.