bschultz Posted December 16, 2008 Share Posted December 16, 2008 I have a calendar that draws info from a MYSQL database and spits it out into a table. It's a combination of several php calendars that I've found. I do, however, need some help altering it to do more than one moth at a time. I'd like it to show the next 6 months. Here's the code: <?php $m = date(m); $d = date(d); $y = date(Y); // get this month and this years as an int $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 ) ?> <table> <tr> <td colspan="7"><div align="center"><strong><?php echo "$monthname $thisyear"; ?></strong></div></td> </tr> <tr> <td><strong>Sunday</strong></td> <td><strong>Monday</strong></td> <td><strong>Tuesday</strong></td> <td><strong>Wednesday</strong></td> <td><strong>Thursday</strong></td> <td><strong>Friday</strong></td> <td><strong>Saturday</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 valign='top'>$counter<br />"; //do your normal mysql setup and connection calls $dbc = mysql_pconnect('xxx','xxx','xxx'); mysql_select_db('refs',$dbc); //now get stuff from a table $sql = "SELECT * FROM calendar WHERE date='$y-$m-$counter'"; $rs = mysql_query($sql,$dbc); $matches = 0; while ($row = mysql_fetch_assoc($rs)) { $matches++; echo "---------------------<br />"; echo "$row[time]"." <br /><strong>$row[gender]"." $row[visitor]"." at "."$row[home]</strong><br />"; echo "$row[ref1] "."$row[ref2] "."$row[ref3] "."$row[ref4]<br />"; } if (! $matches) { echo "---------------------"; } echo ""; echo "</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> </table> </body> </html> Any help to send me in the right direction would be appreciated. Thanks! Link to comment https://forums.phpfreaks.com/topic/137144-solved-calendar-problem/ Share on other sites More sharing options...
ngreenwood6 Posted December 16, 2008 Share Posted December 16, 2008 The only thing that I can tell you is that you may want to look into mktime. Link to comment https://forums.phpfreaks.com/topic/137144-solved-calendar-problem/#findComment-716387 Share on other sites More sharing options...
bschultz Posted December 16, 2008 Author Share Posted December 16, 2008 I decided that changing the code to use a GET variable would be much easier than printing out the calendar for six months at a time. Thanks for the help, though!... For those that want the code: <?php // get this month and this years as an int $thismonth = $_GET["thismonth"]; $thisyear = $_GET["thisyear"]; // 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, $thismonth, date( 1 ), $thisyear ); // 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 ) ?> <table> <tr> <td colspan="7"><div align="center"><strong> <?php if($_GET[thismonth]=='01') echo('January'); else if($_GET[thismonth]=='02') echo('February'); else if($_GET[thismonth]=='03') echo('March'); else if($_GET[thismonth]=='04') echo('April'); else if($_GET[thismonth]=='05') echo('May'); else if($_GET[thismonth]=='06') echo('June'); else if($_GET[thismonth]=='07') echo('July'); else if($_GET[thismonth]=='08') echo('August'); else if($_GET[thismonth]=='09') echo('September'); else if($_GET[thismonth]=='10') echo('October'); else if($_GET[thismonth]=='11') echo('November'); else if($_GET[thismonth]=='12') echo('December'); else echo ""; echo " $thisyear"; ?></strong></div></td> </tr> <tr> <td><strong>Sunday</strong></td> <td><strong>Monday</strong></td> <td><strong>Tuesday</strong></td> <td><strong>Wednesday</strong></td> <td><strong>Thursday</strong></td> <td><strong>Friday</strong></td> <td><strong>Saturday</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 valign='top'>$counter<br />"; //do your normal mysql setup and connection calls $dbc = mysql_pconnect('xxx','xxx','xxx'); mysql_select_db('refs',$dbc); //now get stuff from a table $sql = "SELECT * FROM calendar WHERE date='$thisyear-$thismonth-$counter'"; $rs = mysql_query($sql,$dbc); $matches = 0; while ($row = mysql_fetch_assoc($rs)) { $matches++; echo "---------------------<br />"; echo "$row[time]"." <br /><strong>$row[gender]"." $row[visitor]"." at "."$row[home]</strong><br />"; echo "$row[ref1] "."$row[ref2] "."$row[ref3] "."$row[ref4]<br />"; } if (! $matches) { echo "---------------------"; } echo ""; echo "</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> </table> </body> </html> Link to comment https://forums.phpfreaks.com/topic/137144-solved-calendar-problem/#findComment-716604 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.