Jump to content

Booking System - Calendar


akshay

Recommended Posts

Hello.

 

I'm trying to make an online booking calendar.

 

I used following code for generating PHP calendar:

(code works fine!  u may skip reading this one)

 

<?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 "Tue": $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); //0 is Calendar Number, Example: Gregorian..,etc.. php.net: $num = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31

echo "<table border=1 width=294>";
echo "<tr><th colspan=7>$title -  $year</th></tr>";
echo "<tr>";

$dz=array("S","M","T","W","T","F","S");
foreach($dz as $value) {
print "<td width=42> $value </td>";
}
echo "</tr>";

$day_count=1;

echo "<tr>";
while ($blank>0) {
echo "<td></td>";
$blank--;
$day_count++;
}

$day_num=1;

while ($day_num<=$days_in_month) {
echo "<td> $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>";


?>

 

But, what about this:

I want in the same calendar, if the dates are 1st,6st,7th,8th (Examplary) , i.e. one from $working_days array, those numbers should be printed in green color and hyperlinked to /book.php?day=(day of month number).

 

But, this code prints all numbers in month as 1,6,7,8 and loops the calendar nonstop!

 

Code:

 

<?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 "Tue": $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); //0 is Calendar Number, Example: Gregorian..,etc.. php.net: $num = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31

echo "<table border=1 width=294>";
echo "<tr><th colspan=7>$title -  $year</th></tr>";
echo "<tr>";

$dz=array("S","M","T","W","T","F","S");
foreach($dz as $value) {
print "<td width=42> $value </td>";
}
echo "</tr>";

$day_count=1;

echo "<tr>";
while ($blank>0) {
echo "<td></td>";
$blank--;
$day_count++;
}

$day_num=1;
$working_days=array(1,6,7,;

while ($day_num<=$days_in_month) {

  foreach($working_days as $wd) {
   if($day_num=$wd)  {
   echo '<td><a href="/book.php?day='.$day_num.'"><font color="darkgreen"> '.$day_num.' </font></a></td>'; 
    } //end if
    else {
    echo "<td> $day_num </td>"; 
    } //end else
} //end foreach
  


$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>";


?>

 

Please help.

 

All i need to do is, if dates are from the array/already specified; print them in green with a hyperlink : /book.php?day=(that day of month, in numbers)

 

Thank you :)

Akshay

Link to comment
https://forums.phpfreaks.com/topic/194481-booking-system-calendar/
Share on other sites

I used a foreach and some slight modification to your code to do that. Hopefully this helps you.

 

What I did was the same as you, except I just created another variable used for printing the the calendar number. $day_num_t so before the foreach it is equal to day_num unless the foreach loop changes it. Your code gets stuck with reference I think (not really sure, maybe someone else here can shed light on that), not sure why so I just took the code for your calendar that worked and did it this method with using unset to reset the foreach reference to $value ($wd in your code).


<?php
//////////////////added code////////////////////////
//special colors 
$special = array(4,9);
/////////////////////added code//////////////////
$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 "Tue": $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); //0 is Calendar Number, Example: Gregorian..,etc.. php.net: $num = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31

echo "<table border=1 width=294>";
echo "<tr><th colspan=7>$title -  $year</th></tr>";
echo "<tr>";

$dz=array("S","M","T","W","T","F","S");
foreach($dz as $value) {
print "<td width=42> $value </td>";
}
echo "</tr>";

$day_count=1;

echo "<tr>";
while ($blank>0) {
echo "<td></td>";
$blank--;
$day_count++;
}

$day_num=1;

while ($day_num<=$days_in_month) {

///////////////////added  code here /////////////////
$day_num_t = $day_num; 	
foreach ($special as $value) 
{
//echo $value."val<br>";
//echo $day_num."num<br>";
 if($value == $day_num)
 {
 	//echo "same<br><br>";
 $day_num_t = '<a href="/book.php?day='.$day_num.'"><font color="darkgreen"> '.$day_num.' </font></a>'; 
 }   
}
unset($value); // break the reference with the last element
///////////added code here ////////////////////////////

//////////////////CHANGED HERE TOO//////////
echo "<td> $day_num_t </td>";
////////////CHANGED HERE TOO///////////////

$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>";


?>

change

while ($day_num<=$days_in_month) {

  foreach($working_days as $wd) {
   if($day_num=$wd)  {
   echo '<td><a href="/book.php?day='.$day_num.'"><font color="darkgreen"> '.$day_num.' </font></a></td>'; 
    } //end if
    else {
    echo "<td> $day_num </td>"; 
    } //end else
} //end foreach

to

while ($day_num<=$days_in_month) {

  //foreach($working_days as $wd) {
   if(in_array($day_num,$working_days))  {
   echo '<td><a href="/book.php?day='.$day_num.'"><font color="darkgreen"> '.$day_num.' </font></a></td>'; 
    } //end if
    else {
    echo "<td> $day_num </td>"; 
    } //end else
//} //end foreach

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.