Jump to content

[SOLVED] Not really a problem, but rather a question.


jrws

Recommended Posts

Hey all,

But your surprised that its not a problem XD. Well anyway, I have just completed a tutorial about a simple calendar, and I was wondering how would I make it highlight the current day? I was thinking using span tags, and an if, but it didn't work. (Crashed firefox XD)

So here's the code, mind you I didn't edit anything 'cept for the center tag in the table.

<?php
$date = time();
$day = date('d', $date);
$month = date('m', $date);
$year = date('y', $date);
$first_day = mktime(0, 0, 0, $month, 1, $year);
$title = date('F', $first_day);
$day_of_week = date('D', $first_day);
switch ($day_of_week)
{
    case 'Sun':
        $blank = 0;
        break;
    case 'Mon':
        $blank = 1;
        break;
    case 'Tus':
        $blank = 2;
        break;
    case 'Wed':
        $blank = 3;
        break;
    case 'Thu':
        $blank = 4;
        break;
    case 'Fri':
        $blank = 5;
        break;
    case 'Sat':
        $blank = 6;
        break;
}
$days_in_month = cal_days_in_month(0, $month, $year);
echo '<table border = "6" width = "394">';
echo '<tr><th colspan ="60">' . $title . ' ' . $year . '</th></tr>';
echo '<tr><td width = "62">Su</td><td width = "62">M</td><td width = "62">Tu</td><td width = "62">W</td><td width = "62">Th</td><td width = "62">F</td><td width = "62">Sa</td></tr>';
$day_count = 1;
echo '<tr>';
while ($blank > 0)
{
    echo '<td></td>';
    $blank -= 1;
    $day_count++;
}
$day_num = 1;
while ($day_num <= $days_in_month)
{
    
        echo '<td style="text-align:center">' . $day_num . '</td>';
        $day_num++;
        $day_count++;

        if ($day_count > 7)
        {
            echo '</tr><tr>';
            $day_count = 1;
        }
    
}
while ($day_count > 1 && $day_count <= 7)
{
    echo '<td></td>';
    $day_count++;
}
echo '</tr></table>';

?> 

So any help with this is much appreciated!

EDIT: Sorry just realized this would be classified as a third party script, so could a mod move it please?

Link to comment
Share on other sites

The code below sets a style for the current day. Also reduced the amount of code needed and corrected some minor issues (e.g. creating a 'blank' row if the month ends on a saturday).

 

<?php
$date = time();
$day = date('d', $date);
$month = date('m', $date);
$year = date('y', $date);
$title = date('F', $date);
$first_day = mktime(0, 0, 0, $month, 1, $year);
$day_of_week = date('N', $first_day);
$days_in_month = cal_days_in_month(0, $month, $year);
//Counter for the weekday position
$day_count = 1;
//Start the table
echo "<table border=\"6\" width=\"394\">\n";
echo "<tr><th colspan=\"7\">{$title} {$year}</th></tr>\n";
echo "<tr><th width=\"62\">Su</th><th width=\"62\">M</th><th width=\"62\">Tu</th><th width=\"62\">W</th><th width=\"62\">Th</th><th width=\"62\">F</th><th width=\"62\">Sa</th></tr>\n";
echo "<tr>\n";
//Create empty days as needed for beginning of month
while ($day_count <= $day_of_week)
{
    echo "<td></td>\n";
    $blank -= 1;
    $day_count++;
}
//Create the days of the month
for ($day_num=1; $day_num<=$days_in_month; $day_num++)
{
        //Open row if first day of week
        if ($day_count==1) { echo "<tr>\n"; }
        $style = ($day_num==$day) ? ' style="background-color:#00ff00;"' : '';
        echo "<td style=\"text-align:center\"{$style}>{$day_num}</td>\n";
        $day_count++;
        //Close row if last day of week
        if ($day_count > 7) { echo "</tr>\n"; $day_count = 1; }
}
//Create empty days as needed for end of month
if ($day_count>1)
{
    for($day_count; $day_count<=7; $day_count++)
    {
        echo "<td></td>\n";
    }
    echo "</tr>\n";
}
//Close the table
echo "</table>\n";

?> 

Link to comment
Share on other sites

Had some minor errors that I found. Here is updated code

<?php
$date = time();
$month = date('m', $date) + 2;
$year = date('y', $date);
$title = date('F', $date);
$days_in_month = cal_days_in_month(0, $month, $year);

//Start the table
echo "<table border=\"6\" width=\"394\">\n";
echo "  <tr><th colspan=\"7\">{$title} {$year}</th></tr>\n";
echo "  <tr>\n";
echo "    <th width=\"62\">Su</th><th width=\"62\">M</th><th width=\"62\">Tu</th>\n";
echo "    <th width=\"62\">W</th><th width=\"62\">Th</th><th width=\"62\">F</th><th width=\"62\">Sa</th>\n";
echo "  </tr>\n";
//Create empty days as needed for beginning of month
for ($empty=0; $empty<(date('N', mktime(0, 0, 0, $month, 1, $year))%7); $empty++)
{
    if ($empty == 0) { echo "<tr>\n"; }
    echo "    <td></td>\n";
}
//Create the days of the month
for ($day=1; $day<=$days_in_month; $day++)
{
    $dow = date('N', mktime(0, 0, 0, $month, $day, $year)) % 7;
    //Open row if first day of week
    if ($dow == 0) { echo "  <tr>\n"; }
    $style = ($day==date('d', $date)) ? ' style="background-color:#00ff00;"' : '';
    echo "    <td style=\"text-align:center\"{$style}>{$day}</td>\n";
    //Close row if last day of week
    if ($dow == 6) { echo "  </tr>\n"; }
}
//Create empty days as needed for end of month
for ($dow; $dow<6; $dow++)
{
    echo "    <td></td>\n";
    if ($dow == 5) { echo "  </tr>\n"; }
}
//Close the table
echo "</table>\n";

?> 

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.