Vamos a crear un calendario con PHP en HTML y agregaremos una paginacion para cada mes con botones para navegar anterior y siguiente.
Anteriormente habiamos creado un calendario con PHP y HTML y lo renderizabamos con un formulario para seleccionar el mes y el año.
Usaremos el codigo similar para generar el calendario, solo cambiara que se removera el formulario y se agregaran los botones de anterior y siguiente.
El boton de anterior retrocedera al mes anterior del mismo año,pero si esta en ENERO retrocedera a DICIEMBRE del año anterior.
El boton de siguiente avanzara un mes del mismo año. Si estamos en DICIEMBRE entonces avanzaremos a enero del año siguiente.
Codigo
La primera parte del codigo es para definir la fecha inicial.
Tambien definimos cuando estamos en otra fecha, obtenemos el mes y año usango GET.
Y creamos las URL para los botones de Anterior y Siguiente.
<?php $start_date = date("Y")."-".date("m")."-01"; $current_year = date("Y"); $current_month = date("m"); $start = strtotime($start_date); if(isset($_GET["m"]) && isset($_GET["y"]) && $_GET["m"]!="" && $_GET["y"]!=""){ $start = strtotime($_GET["y"]."-".$_GET["m"]."-01"); $current_year = $_GET['y']; $current_month = $_GET["m"]; } echo "<h2>".date("F, Y", $start)."</h2>"; $prev_month = $current_month-1; $prev_year = $current_year ; $next_month = $current_month+1; $next_year = $current_year ; if($current_month=="01"){ $prev_month = 12; $prev_year = $current_year -1; }else if($current_month==12){ $next_month = 1; $next_year = $current_year +1; } $prev_url = "index.php?m=$prev_month&y=$prev_year"; $next_url = "index.php?m=$next_month&y=$next_year"; ?>
La siguiente parte del codigo es codigo HTML mezclado con PHP para renderizar la tabla con el calendario y los botones de paginacion Anterior y Siguiente.
<a href="<?php echo $prev_url; ?>">Anterior</a> <a href="<?php echo $next_url; ?>">Siguiente</a> <table border="2"> <thead> <th>Domingo</th> <th>Lunes</th> <th>Martes</th> <th>Miercoles</th> <th>Jueves</th> <th>Viernes</th> <th>Sabado</th> </thead> <?php $index = 0; $startpos =0; $continue2 = 1; for($i=1; $i<=6; $i++): $index++; ?> <tr> <?php for($j=0; $j<7; $j++):?> <td> <?php if($startpos>0 && $continue2<date("t", $start)){ $continue2++; echo "<h4>".$continue2."</h4>"; }?> <?php if($i==1 && $j==date("w", $start)):?> <h4>1</h4> <?php $startpos=$index; endif; ?> </td> <?php endfor;?> </tr> <?php endfor; ?> </table>
Y listo, solo falta agregar el codigo al archivo index.php y ejecutar.
Resultado
El resultado es el siguiente.
Listo.
Happy Coding.