blueman378 Posted March 3, 2008 Share Posted March 3, 2008 hi guys well ive got a calender code im modifying to add a next month/previous feature, so heres the code <?php $next = $_GET["next"]; $back = $_GET["back"]; $max = "12"; $min = "1"; // get this month and this years as an int if (isset($next)) { $next++; $thismonth = $next; } elseif (isset($back)) { $back--; $thismonth = $back; } else { $thismonth = ( int ) date( "m" ); } $thisyear = date( "Y" ); // find out the number of days in the month $numdaysinmonth = cal_days_in_month( CAL_GREGORIAN, $thismonth, $thisyear ); // create a calendar object $jd = cal_to_jd( CAL_GREGORIAN, date( "m" ),date( 1 ), date( "Y" ) ); // get the start day as an int (0 = Sunday, 1 = Monday, etc) $startday = jddayofweek( $jd , 0 ); // get the month as a name // $monthname = jdmonthname( $jd, 1 ) if ($thismonth == "1") { $monthname = "January"; } elseif ($thismonth == "2") { $monthname = "February"; } elseif ($thismonth == "3") { $monthname = "March"; } elseif ($thismonth == "4") { $monthname = "April"; } elseif ($thismonth == "5") { $monthname = "May"; } elseif ($thismonth == "6") { $monthname = "June"; } elseif ($thismonth == "7") { $monthname = "July"; } elseif ($thismonth == "8") { $monthname = "August"; } elseif ($thismonth == "9") { $monthname = "September"; } elseif ($thismonth == "10") { $monthname = "October"; } elseif ($thismonth == "11") { $monthname = "November"; } elseif ($thismonth == "12") { $monthname = "December"; } else { echo "Unknown month"; } ?> <table> <tr> <td colspan="7"><div align="center"><strong><?= $monthname ?></strong></div></td> </tr> <tr> <td><strong>S</strong></td> <td><strong>M</strong></td> <td><strong>T</strong></td> <td><strong>W</strong></td> <td><strong>T</strong></td> <td><strong>F</strong></td> <td><strong>S</strong></td> </tr> <tr> <?php // put render empty cells $emptycells = 0; for( $counter = 0; $counter < $startday; $counter ++ ) { echo "\t\t<td>-</td>\n"; $emptycells ++; } // renders the days $rowcounter = $emptycells; $numinrow = 7; for( $counter = 1; $counter <= $numdaysinmonth; $counter ++ ) { $rowcounter ++; echo "\t\t<td>$counter</td>\n"; if( $rowcounter % $numinrow == 0 ) { echo "\t</tr>\n"; if( $counter < $numdaysinmonth ) { echo "\t<tr>\n"; } $rowcounter = 0; } } // clean up $numcellsleft = $numinrow - $rowcounter; if( $numcellsleft != $numinrow ) { for( $counter = 0; $counter < $numcellsleft; $counter ++ ) { echo "\t\t<td>-</td>\n"; $emptycells ++; } } ?> </tr> <tr> <td colspan="3"><form action="<?php $_server['php_self']; ?>"> <input type="hidden" name="back" value="<?php echo "$thismonth"; ?>" /> <?php if ($thismonth > $min){ echo '<input type="submit" value="Back" />'; } ?> </form> </td><td><?php echo "$thismonth";?></td><td colspan="3"> <form action="<?php $_server['php_self']; ?>"> <input type="hidden" name="next" value="<?php echo "$thismonth"; ?>" <?php if ($thismonth < $max){ echo '<input type="submit" value="Next" />'; } ?> </form></td> </tr> </table> which is working ok on first run, however when you click next/ back the day the month starts on stays the same, eg this month is march so the calander looks like this (first image) but when i click back (february) i get (second image) any ideas? cheers Link to comment https://forums.phpfreaks.com/topic/94148-calander-code-semi-working/ Share on other sites More sharing options...
blueman378 Posted March 3, 2008 Author Share Posted March 3, 2008 ah heres some better images, notice how the start days are the same on both, they are correct for march as thats what they start on, but they dont update for other months Link to comment https://forums.phpfreaks.com/topic/94148-calander-code-semi-working/#findComment-482270 Share on other sites More sharing options...
blueman378 Posted March 3, 2008 Author Share Posted March 3, 2008 well i believe i must modify this line: // create a calendar object $jd = cal_to_jd( CAL_GREGORIAN, date( "m" ),date( 1 ), date( "Y" ) ); i think i need to define the "m" as whatever month it is eg something like this // create a calendar object $jd = cal_to_jd( CAL_GREGORIAN, date( "$thismonth" ),date( 1 ), date( "Y" ) ); jsut dabling not to sure help appreciated (so is code optimization Link to comment https://forums.phpfreaks.com/topic/94148-calander-code-semi-working/#findComment-482274 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.