Hola buenas tardes, hace un tiempo combine un calendario JavaScript con PHP para que me mostrara eventos que recogia de la base de datos y los marcaba en el calendario.
El problema es que el calendario no tiene la funcion de avanzar o retroceder de mes al hacer clic en algun boton, y no se me ocurre como hacerlo, necesito un poco de su tiempo ;)
Aqui el codigo para que lo revisen y por si alguien lo quiere utilizar:
Código Javascript
:
Ver original<script LANGUAGE="JavaScript">
<!-- Begin
monthnames = new Array(
"Enero",
"Febrero",
"Marzo",
"Abril",
"Mayo",
"Junio",
"Julio",
"Agosto",
"Septiembre",
"Octubre",
"Noviembre",
"Diciembre");
var linkcount=0;
function addlink(month, day, href) {
var entry = new Array(3);
entry[0] = month;
entry[1] = day;
entry[2] = href;
this[linkcount++] = entry;
}
Array.prototype.addlink = addlink;
linkdays = new Array();
monthdays = new Array(12);
monthdays[0]=31;
monthdays[1]=28;
monthdays[2]=31;
monthdays[3]=30;
monthdays[4]=31;
monthdays[5]=30;
monthdays[6]=31;
monthdays[7]=31;
monthdays[8]=30;
monthdays[9]=31;
monthdays[10]=30;
monthdays[11]=31;
todayDate=new Date();
thisday=todayDate.getDay();
thismonth=todayDate.getMonth();
thisdate=todayDate.getDate();
thisyear=todayDate.getYear();
thisyear = thisyear % 100;
thisyear = ((thisyear < 50) ? (2000 + thisyear) : (1900 + thisyear));
if (((thisyear % 4 == 0)
&& !(thisyear % 100 == 0))
||(thisyear % 400 == 0)) monthdays[1]++;
startspaces=thisdate;
while (startspaces > 7) startspaces-=7;
startspaces = thisday - startspaces + 0;
if (startspaces < 0) startspaces+=7;
<?
$conexion=mysql_connect($mysql_server,$mysql_login,$mysql_pass) or die ("Error en la conexion");
mysql_select_db("bd",$conexion);
$diames = date(j);
$numeromes=date(n);
$sql="SELECT * FROM calendario";
$consulta=mysql_query($sql,$conexion);
while($fila=mysql_fetch_array ($consulta)){
$fecha=$fila['fecha'];
$dia=date("d",strtotime($fecha));
$mes=date("m",strtotime($fecha));
echo( "linkdays.addlink(".$mes.",".$dia.", 'eventos.php?&id=".$fila[0]."');" );
}
?>
document.write('<table id="calendar" class="calendar" cellspacing="0" cellpadding="0" ');
document.write("<caption>"
+ monthnames[thismonth] + " " + thisyear
+ " </caption>");
document.write("<tr>");
document.write("<th scope='col'>Lu</th>");
document.write("<th scope='col'>Ma</th>");
document.write("<th scope='col'>Mi</th>");
document.write("<th scope='col'>Ju</th>");
document.write("<th scope='col'>Vi</th>");
document.write("<th scope='col'>Sa</th>");
document.write("<th scope='col'>Do</th>");
document.write("</tr>");
document.write("<tr>");
for (s=0;s<startspaces;s++) {
document.write("<td> </td>");
}
count=1;
no="";
while (count <= monthdays[thismonth]) {
for (b = startspaces;b<7;b++) {
linktrue=false;
document.write("<td");
for (c=0;c<linkdays.length;c++) {
if (linkdays[c] != null) {
if ((linkdays[c][0]==thismonth + 1) && (linkdays[c][1]==count)) {
if(count==thisdate){
document.write(" class='today'><a href=\"" + linkdays[c][2] + "\">");
linktrue=true;
no="no";
}
else{
document.write("><a href=\"" + linkdays[c][2] + "\">");
linktrue=true;}
}
}
}
if ((count==thisdate) && (no!="no")) {
document.write(" class='today'>" + count);
}
else{
if (count <= monthdays[thismonth]) {
document.write(">" + count);
}
else {
document.write(" ");
}
}
if (linktrue)
document.write("</a>");
document.write("</td>");
count++;
}
document.write("</tr>");
document.write("<tr>");
startspaces=0;
}
document.write("</table></p>");
// End -->
</script>