phpabcd Posted November 29, 2010 Share Posted November 29, 2010 <? for ($i = 1; $i <= $first_day_of_month-1; $i++) { $days_so_far = $days_so_far + 1; $count_boxes = $count_boxes + 1; echo "<td width=\"125\" height=\"100\" class=\"beforedayboxes\"></td>\n"; } for ($i = 1; $i <= $days_in_month; $i++) { $days_so_far = $days_so_far + 1; $count_boxes = $count_boxes + 1; IF($_GET['month'] == $todays_month+1){ IF($todays_date == $day){ $class = "publicholidayhighlightedboxes"; } ELSE { $class = "dayboxes"; } } ELSE { IF($i == $todays_date){ $class = "highlighteddayboxes"; } ELSE { $class = "dayboxes"; } } The problem is I can only display one highlighted box in one month. For example, in November, there are two public holidays, but only 1 public holiday box is highlighted. Would appreciate if someone can help me out asap. Thank you Link to comment https://forums.phpfreaks.com/topic/220127-make-the-calendar-box-highlighted-if-it-is-a-public-holiday/ Share on other sites More sharing options...
intellix Posted November 29, 2010 Share Posted November 29, 2010 I don't think you've provided enough code in your example for me to accurately help you but I'm guessing this part of the code is the bit that highlights a public holiday and the problematic code: IF($todays_date == $day){ $class = "publicholidayhighlightedboxes"; } ELSE { $class = "dayboxes"; } What is the value of $day? I would have thought if you were looping through a calendar and had multiple days then $day would actually be an array of dates that are public holidays and you would test it by doing // List of holidays $array_of_holiday_dates = array(1,6,; // Loop through dates loop{ // If todays date is in the array of holiday dates then highlight it if (in_array($todays_date, $array_of_holiday_dates)){ $class = "publicholidayhighlightedboxes"; } else { $class = "dayboxes"; } } As shown here: http://php.net/manual/en/function.in-array.php Link to comment https://forums.phpfreaks.com/topic/220127-make-the-calendar-box-highlighted-if-it-is-a-public-holiday/#findComment-1140881 Share on other sites More sharing options...
phpabcd Posted November 29, 2010 Author Share Posted November 29, 2010 $day= info['0'] do i need to insert the day in my array? Link to comment https://forums.phpfreaks.com/topic/220127-make-the-calendar-box-highlighted-if-it-is-a-public-holiday/#findComment-1140901 Share on other sites More sharing options...
intellix Posted November 29, 2010 Share Posted November 29, 2010 I'm not quite sure what you mean, I'm guessing $info contains a list of the holidays.... I just mean that it looks like you're setting $day to a single value so if you're looping through loads of days, it could only ever be true once... $day = 5; // Loop through each and put a box around if number == day 1,2,3,4,[5],5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 but if $day is an array of multiple items, it could highlight multiple things like: $day = array(5,7,21); // Loop through each and put a box around if number is in the day array 1,2,3,4,[5],5,6,[7],8,9,10,11,12,13,14,15,16,17,18,19,20,[21],22,23,24,25,26,27,28,29,30,31 Link to comment https://forums.phpfreaks.com/topic/220127-make-the-calendar-box-highlighted-if-it-is-a-public-holiday/#findComment-1140909 Share on other sites More sharing options...
phpabcd Posted November 29, 2010 Author Share Posted November 29, 2010 IF(!isset($_GET['year'])){ $_GET['year'] = date("Y"); } IF(!isset($_GET['month'])){ $_GET['month'] = date("n")+1; } $month = addslashes($_GET['month'] - 1); $year = addslashes($_GET['year']); $query = "SELECT ph_date, ph_id, ph_type FROM Public_Holiday WHERE ph_month ='$month' AND ph_year = '$year'"; //this is the query for publicholiday $query_result = mysql_query($query, $conn); while ($info = mysql_fetch_row($query_result)) { $day = $info['0']; $event_id = $info['1']; $events[$day][] = $info['1']; $event_info[$event_id]['0'] = substr($info['2'], 0, 20); } //this is to insert the value into the calendar by running the query $todays_date = date("j"); $todays_month = date("n"); $days_in_month = date ("t", mktime(0,0,0,$_GET['month'],0,$_GET['year'])); $first_day_of_month = date ("w", mktime(0,0,0,$_GET['month']-1,1,$_GET['year'])); $first_day_of_month = $first_day_of_month + 1; $count_boxes = 0; $days_so_far = 0; IF($_GET['month'] == 13){ $next_month = 2; $next_year = $_GET['year'] + 1; } ELSE { $next_month = $_GET['month'] + 1; $next_year = $_GET['year']; } IF($_GET['month'] == 2){ $prev_month = 13; $prev_year = $_GET['year'] - 1; } ELSE { $prev_month = $_GET['month'] - 1; $prev_year = $_GET['year']; } ?> <br /> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Welcome to Department of Anaesthesiology</title> <link href="calendarstyle.css" rel="stylesheet" type="text/css" /> <script language="JavaScript" type="text/JavaScript"> <!-- function MM_jumpMenu(targ,selObj,restore){ //v3.0 eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'"); if (restore) selObj.selectedIndex=0; } function MM_openBrWindow(theURL,winName,features) { //v2.0 window.open(theURL,winName,features); } //--> </script> <link href="calendarstyle.css" rel="stylesheet" type="text/css"> </head> <br /> <body> <div align="center"><font color="#00CC99" size="+2" face="Verdana, Arial, Helvetica, sans-serif">Overall Day-Duty Roster</font></div> <br /> <div align="center"><font size="4">Departmental duties for the month:</font></div> <div align="center"> <div align="center"><span class="currentdate"><? echo date ("F Y", mktime(0,0,0,$_GET['month']-1,1,$_GET['year'])); ?></span><br> <br> </div> <div align="center"><br> <table width="700" border="0" cellspacing="0" cellpadding="0"> <tr> <td><div align="right"><a href="<? echo "monthlyoverallroster2.php?month=$prev_month&year=$prev_year"; ?>"><<</a></div></td> <td width="300"><div align="center"> <select name="month" id="month" onChange="MM_jumpMenu('parent',this,0)"> <? for ($i = 1; $i <= 12; $i++) { $link = $i+1; IF($_GET['month'] == $link){ $selected = "selected"; } ELSE { $selected = ""; } echo "<option value=\"monthlyoverallroster2.php?month=$link&year=$_GET[year]\" $selected>" . date ("F", mktime(0,0,0,$i,1,$_GET['year'])) . "</option>\n"; } ?> </select> <select name="year" id="year" onChange="MM_jumpMenu('parent',this,0)"> <? //Define parameters $startdate= 2000; $enddate= date("Y"); $dated = getdate(); $year = $dated['year']; //for loop for the dropdown list(year) for ($year = $startdate; $year<=$enddate; $year++) { IF($year == $_GET['year']){ $selected = "selected"; } ELSE { $selected = ""; } echo "<option value=\"monthlyoverallroster2.php?month=$_GET[month]&year=$year\" $selected>$year</option>\n"; } ?> </select> </div></td> <td><div align="left"><a href="<? echo "monthlyoverallroster2.php?month=$next_month&year=$next_year"; ?>">>></a></div></td> </tr> </table> <br> </div> <table width="875" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#000000"> <tr> <td><table width="100%" border="0" cellpadding="0" cellspacing="1"> <tr class="topdays"> <td><div align="center">Sunday</div></td> <td><div align="center">Monday</div></td> <td><div align="center">Tuesday</div></td> <td><div align="center">Wednesday</div></td> <td><div align="center">Thursday</div></td> <td><div align="center">Friday</div></td> <td><div align="center">Saturday</div></td> </tr> <tr valign="top" bgcolor="FFFFFF"> <? for ($i = 1; $i <= $first_day_of_month-1; $i++) { $days_so_far = $days_so_far + 1; $count_boxes = $count_boxes + 1; echo "<td width=\"125\" height=\"100\" class=\"beforedayboxes\"></td>\n"; } for ($i = 1; $i <= $days_in_month; $i++) { $days_so_far = $days_so_far + 1; $count_boxes = $count_boxes + 1; IF($_GET['month'] == $todays_month+1){ IF($todays_date == $day){ $class = "publicholidayhighlightedboxes"; } ELSE { $class = "dayboxes"; } } ELSE { IF($i == $todays_date){ $class = "highlighteddayboxes"; } ELSE { $class = "dayboxes"; } } echo "<td width=\"125\" height=\"100\" class=\"$class\">\n"; $link_month = $_GET['month'] - 1; echo "<div align=\"right\"><span class=\"toprightnumber\">\n<a href=\"javascript:MM_openBrWindow('event_add.php?day=$i&month=$link_month&year=$_GET[year]','','width=500,height=300');\">$i</a> </span></div>\n"; IF(isset($events[$i])){ echo "<div align=\"left\"><span class=\"eventinbox\">\n"; while (list($key, $value) = each ($events[$i])) { echo " <a href=\"javascript:MM_openBrWindow('event.php?id=$value','','width=500,height=200');\">" . $event_info[$value]['1'] . " " . $event_info[$value]['0'] . "</a>\n<br>\n"; } echo "</span></div>\n"; } echo "</td>\n"; IF(($count_boxes == 7) AND ($days_so_far != (($first_day_of_month-1) + $days_in_month))){ $count_boxes = 0; echo "</TR><TR valign=\"top\">\n"; } } $extra_boxes = 7 - $count_boxes; for ($i = 1; $i <= $extra_boxes; $i++) { echo "<td width=\"125\" height=\"100\" class=\"afterdayboxes\"></td>\n"; } $time_end = getmicrotime(); $time = round($time_end - $time_start, 3); ?> Link to comment https://forums.phpfreaks.com/topic/220127-make-the-calendar-box-highlighted-if-it-is-a-public-holiday/#findComment-1140911 Share on other sites More sharing options...
intellix Posted November 29, 2010 Share Posted November 29, 2010 I didn't test your code but I could immediately tell it was the problem I mentioned earlier... Here is the code that should fix it <?php IF(!isset($_GET['year'])){ $_GET['year'] = date("Y"); } IF(!isset($_GET['month'])){ $_GET['month'] = date("n")+1; } $month = addslashes($_GET['month'] - 1); $year = addslashes($_GET['year']); $day = array(); $query = "SELECT ph_date, ph_id, ph_type FROM Public_Holiday WHERE ph_month ='$month' AND ph_year = '$year'"; //this is the query for publicholiday $query_result = mysql_query($query, $conn); while ($info = mysql_fetch_row($query_result)) { $day[] = $info['0']; $event_id = $info['1']; $events[$day][] = $info['1']; $event_info[$event_id]['0'] = substr($info['2'], 0, 20); } //this is to insert the value into the calendar by running the query $todays_date = date("j"); $todays_month = date("n"); $days_in_month = date ("t", mktime(0,0,0,$_GET['month'],0,$_GET['year'])); $first_day_of_month = date ("w", mktime(0,0,0,$_GET['month']-1,1,$_GET['year'])); $first_day_of_month = $first_day_of_month + 1; $count_boxes = 0; $days_so_far = 0; IF($_GET['month'] == 13){ $next_month = 2; $next_year = $_GET['year'] + 1; } ELSE { $next_month = $_GET['month'] + 1; $next_year = $_GET['year']; } IF($_GET['month'] == 2){ $prev_month = 13; $prev_year = $_GET['year'] - 1; } ELSE { $prev_month = $_GET['month'] - 1; $prev_year = $_GET['year']; } ?> <br /> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Welcome to Department of Anaesthesiology</title> <link href="calendarstyle.css" rel="stylesheet" type="text/css" /> <script language="JavaScript" type="text/JavaScript"> <!-- function MM_jumpMenu(targ,selObj,restore){ //v3.0 eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'"); if (restore) selObj.selectedIndex=0; } function MM_openBrWindow(theURL,winName,features) { //v2.0 window.open(theURL,winName,features); } //--> </script> <link href="calendarstyle.css" rel="stylesheet" type="text/css"> </head> <br /> <body> <div align="center"><font color="#00CC99" size="+2" face="Verdana, Arial, Helvetica, sans-serif">Overall Day-Duty Roster</font></div> <br /> <div align="center"><font size="4">Departmental duties for the month:</font></div> <div align="center"> <div align="center"><span class="currentdate"><? echo date ("F Y", mktime(0,0,0,$_GET['month']-1,1,$_GET['year'])); ?></span><br> <br> </div> <div align="center"><br> <table width="700" border="0" cellspacing="0" cellpadding="0"> <tr> <td><div align="right"><a href="<? echo "monthlyoverallroster2.php?month=$prev_month&year=$prev_year"; ?>"><<</a></div></td> <td width="300"><div align="center"> <select name="month" id="month" onChange="MM_jumpMenu('parent',this,0)"> <? for ($i = 1; $i <= 12; $i++) { $link = $i+1; IF($_GET['month'] == $link){ $selected = "selected"; } ELSE { $selected = ""; } echo "<option value=\"monthlyoverallroster2.php?month=$link&year=$_GET[year]\" $selected>" . date ("F", mktime(0,0,0,$i,1,$_GET['year'])) . "</option>\n"; } ?> </select> <select name="year" id="year" onChange="MM_jumpMenu('parent',this,0)"> <? //Define parameters $startdate= 2000; $enddate= date("Y"); $dated = getdate(); $year = $dated['year']; //for loop for the dropdown list(year) for ($year = $startdate; $year<=$enddate; $year++) { IF($year == $_GET['year']){ $selected = "selected"; } ELSE { $selected = ""; } echo "<option value=\"monthlyoverallroster2.php?month=$_GET[month]&year=$year\" $selected>$year</option>\n"; } ?> </select> </div></td> <td><div align="left"><a href="<? echo "monthlyoverallroster2.php?month=$next_month&year=$next_year"; ?>">>></a></div></td> </tr> </table> <br> </div> <table width="875" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#000000"> <tr> <td><table width="100%" border="0" cellpadding="0" cellspacing="1"> <tr class="topdays"> <td><div align="center">Sunday</div></td> <td><div align="center">Monday</div></td> <td><div align="center">Tuesday</div></td> <td><div align="center">Wednesday</div></td> <td><div align="center">Thursday</div></td> <td><div align="center">Friday</div></td> <td><div align="center">Saturday</div></td> </tr> <tr valign="top" bgcolor="FFFFFF"> <? for ($i = 1; $i <= $first_day_of_month-1; $i++) { $days_so_far = $days_so_far + 1; $count_boxes = $count_boxes + 1; echo "<td width=\"125\" height=\"100\" class=\"beforedayboxes\"></td>\n"; } for ($i = 1; $i <= $days_in_month; $i++) { $days_so_far = $days_so_far + 1; $count_boxes = $count_boxes + 1; IF($_GET['month'] == $todays_month+1){ IF(in_array($todays_date,$day)){ $class = "publicholidayhighlightedboxes"; } ELSE { $class = "dayboxes"; } } ELSE { IF($i == $todays_date){ $class = "highlighteddayboxes"; } ELSE { $class = "dayboxes"; } } echo "<td width=\"125\" height=\"100\" class=\"$class\">\n"; $link_month = $_GET['month'] - 1; echo "<div align=\"right\"><span class=\"toprightnumber\">\n<a href=\"javascript:MM_openBrWindow('event_add.php?day=$i&month=$link_month&year=$_GET[year]','','width=500,height=300');\">$i</a> </span></div>\n"; IF(isset($events[$i])){ echo "<div align=\"left\"><span class=\"eventinbox\">\n"; while (list($key, $value) = each ($events[$i])) { echo " <a href=\"javascript:MM_openBrWindow('event.php?id=$value','','width=500,height=200');\">" . $event_info[$value]['1'] . " " . $event_info[$value]['0'] . "</a>\n<br>\n"; } echo "</span></div>\n"; } echo "</td>\n"; IF(($count_boxes == 7) AND ($days_so_far != (($first_day_of_month-1) + $days_in_month))){ $count_boxes = 0; echo "</TR><TR valign=\"top\">\n"; } } $extra_boxes = 7 - $count_boxes; for ($i = 1; $i <= $extra_boxes; $i++) { echo "<td width=\"125\" height=\"100\" class=\"afterdayboxes\"></td>\n"; } $time_end = getmicrotime(); $time = round($time_end - $time_start, 3); ?> Link to comment https://forums.phpfreaks.com/topic/220127-make-the-calendar-box-highlighted-if-it-is-a-public-holiday/#findComment-1140914 Share on other sites More sharing options...
phpabcd Posted November 29, 2010 Author Share Posted November 29, 2010 it doesnt work. it comes out error showing one whole list of [function.in-array] outside the calendar Link to comment https://forums.phpfreaks.com/topic/220127-make-the-calendar-box-highlighted-if-it-is-a-public-holiday/#findComment-1140931 Share on other sites More sharing options...
intellix Posted November 29, 2010 Share Posted November 29, 2010 I realise you also use the variable somewhere else: $events[$day][] = $info['1']; to $events[$info['0']][] = $info['1']; Link to comment https://forums.phpfreaks.com/topic/220127-make-the-calendar-box-highlighted-if-it-is-a-public-holiday/#findComment-1140935 Share on other sites More sharing options...
phpabcd Posted November 29, 2010 Author Share Posted November 29, 2010 I have changed the array and the events variables. However, the same problem still occurs and i can't resolve it. Link to comment https://forums.phpfreaks.com/topic/220127-make-the-calendar-box-highlighted-if-it-is-a-public-holiday/#findComment-1140948 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.