Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/11/2010, 06:46
frmfernando
 
Fecha de Ingreso: junio-2008
Mensajes: 287
Antigüedad: 15 años, 11 meses
Puntos: 1
Ayuda con un calendario

Hola buenos días.

En mi web quiero poner un calendário, en el que me marque fechas de eventos que ya tengo en una tabla en mysql.

Encontré hace unos días un código de calendário pero no recuerdo en que web, pido disculpas al autor, si lee este post le agradecería que me lo haga saber para poder nombrarlo.

El código es el siguiente.

Código PHP:
<?php
function CalendarioPHP($year$month$day_heading_length 3){
// Parametros de aspecto del calendario
$nombreFichero basename($_SERVER['PHP_SELF']);
$ColorFondoCelda '#fff';
$ColorFondoTabla '#eee';
$ColorFondoCeldasDiaSemana '#e67817';
$ColorFondoCeldasFestivo '#fff';
$ColorFondoCeldaDiaActual '#eee';
$ColorDiaLaboral '#000';
$ColorDiaFestivo '#000';
$ColorDiaActual '#000';
$TamanioFuente '1';
$TipoFuente 'Arial, Helvetica, sans-serif';
$AnchoCalendario '100%';
$AltoCalendario '100%';
$AnchoCeldas '1%';
$AltoCeldas '1%';
$AlineacionHorizontalTexto 'center';
$AlineacionVerticalTexto 'center';


// ----------- INICIO Dias Festivos ----------
$DiasFestivos[0] = '1/1'// 1 de enero
$DiasFestivos[1] = '6/1'// 6 de enero
$DiasFestivos[2] = '19/3'// 19 de marzo
$DiasFestivos[3] = '1/5'// 1 de mayo
$DiasFestivos[4] = '15/8'// 15 de agosto
$DiasFestivos[5] = '12/10'// 12 de octubre
$DiasFestivos[6] = '1/11'// 1 de noviembre
$DiasFestivos[7] = '6/12'// 6 de diciembre
$DiasFestivos[8] = '25/12'// 25 de diciembre
// festivos Regionales
$DiasFestivos[9] = '25/7'// 25 de julio
$DiasFestivos[10] = '3/8'// 3 de agosto
$DiasFestivos[11] = '3/12'// 3 de Diciembre
// Semana Santa
$DiasFestivos[12] = '17/4'// Jueves Santo
$DiasFestivos[13] = '18/4'// Viernes Santo
// ----------- FIN Dias Festivos ----------

//Calculo la fecha actual
$dia_actual=date("j",time());
$mes_actual=date("n",time());
$anio_actual=date("Y",time());

$first_of_month mktime (0,0,0$month1$year);
# Recordar que mktime corregerá automáticamente si las fechas no es válidaa se introducen
# Por ejemplo, mktime (0,0,0,12,32,1997) será la fecha de 01 de enero 1998
# Esto proporciona una construida en "redondeo" para generate_calendar ()

static $day_headings = array('Lunes','Martes','Miercoles','Jueves','Viernes','Sabado','Domingo');
$maxdays date('t'$first_of_month); #número de días en el mes
$date_info getdate($first_of_month); #obtener información sobre el primer día del mes
$month $date_info['mon'];
$year $date_info['year'];

//Traduzco los meses de ingles a Español
switch ($date_info['mon']) {
case 
"January" $date_info[$month]="Enero";break;
case 
"February" $date_info[$month]="Febrero";break;
case 
"March" $date_info[$month]="Marzo";break;
case 
"April" $date_info[$month]="Abril";break;
case 
"May" $date_info[$month]="Mayo";break;
case 
"June" $date_info[$month]="Junio";break;
case 
"July" $date_info[$month]="Julio";break;
case 
"August" $date_info[$month]="Agosto";break;
case 
"September"$date_info[$month]="Septiembre";break;
case 
"October" $date_info[$month]="Octubre";break;
case 
"November" $date_info[$month]="Noviembre";break;
case 
"December" $date_info[$month]="Diciembre";break;
};

//Comienzo la tabla que contiene el calendario
$calendar = ("<table ").
(
"border='0' ").
(
"height='".$AltoCalendario."' ").
(
"width='".$AnchoCalendario."' ").
(
"cellspacing='1' cellpadding='2' ").
(
"bgcolor='".$ColorFondoTabla."'>\n");

//Cabecera de la tabla calendario
//Use the <caption> tag or just a normal table heading. Take your pick.
//$calendar .= "<caption class=\\"month\\">$date_info[month], $year</caption>\n";
$calendar .= ("<tr>\n").
(
"<th height='".$AltoCeldas."' colspan='7'>").
(
"<font color='".$ColorDiaFestivo."' size=".$TamanioFuente." face='".$TipoFuente."'>").
(
"$date_info[month], $year").
(
"</font>").
(
"</th>\n</tr>\n");

// Imprime los dias de la semana "Lun", "Mar", etc.
// Si day_heading_length es 4, aparecerá el nombre entero del dia
// si no, solo imprime los n primeros caracteres
if($day_heading_length and $day_heading_length <= 4){
$calendar .= "<tr>\n";
foreach(
$day_headings as $day_heading){
$calendar .= ("<th height='".$AltoCeldas."' abbr='".$day_heading."' class='dayofweek' bgcolor='".$ColorFondoCeldasDiaSemana."'>").
(
"<font color='".$ColorDiaLaboral."' size='".$TamanioFuente."' face='".$TipoFuente."'>").
(
$day_heading_length != substr($day_heading0$day_heading_length) : $day_heading).
(
"</font>").
(
"</th>\n");
}
$calendar .= "</tr>\n";
}
$calendar .= "<tr>\n";

//$weekday = $date_info['wday']; //Para que sea el Domingo el primer dia de la semana
$weekday $date_info['wday']-1#weekday (zero based) of the first day of the month
if ($weekday==-1$weekday=6//Por si el Domingo es el dia 1 del mes
$day 1#starting day of the month

// Cuidadin con los primeros dias "vacios" del mes
if($weekday 0){
$calendar .= ("<td bgcolor='".$ColorFondoTabla).
(
"' colspan='".$weekday."'></td>\n");
}

//Imprimimos los dias del mes
while ($day <= $maxdays){
if(
$weekday == 7){ //Empieza una nueva semana
$calendar .= "</tr>\n<tr>\n";
$weekday 0;
}

//Miro si el dia que voy a pintar es festivo
$esFestivo 0;
$tmp_date=$day."/".$month;
for (
$i=0;$i<14;$i++) {
if (
$tmp_date==$DiasFestivos[$i]) {$esFestivo=1;break;}
}

$calendar .= ("<td width='".$AnchoCeldas).
(
"' height='".$AltoCeldas).
(
"' align='".$AlineacionHorizontalTexto).
(
"' valign='".$AlineacionVerticalTexto).
(
"' ");

// Coloreo el fondo dependiendo del dia en el que nos encontremos
$calendar .= "bgcolor='";
if ((
$day==$dia_actual) and
(
$month==$mes_actual) and
(
$year==$anio_actual)) { //Si el dia es el de hoy
$calendar .= $ColorFondoCeldaDiaActual;
} else { 
// Si el dia no es el de hoy
if (($weekday == 5) or ($weekday == 6) or ($esFestivo==1)) { // Si estoy en fin de semana weekday=5,6
$calendar .= $ColorFondoCeldasFestivo;
} else {
$calendar .= $ColorFondoCelda;
};
};
Aqui es donde veo que es donde enlaza con la base de datos
Código PHP:
// Aqui es donde le pongo lo que tiene que hacer en caso de exista enlace
$link = (basename($_SERVER["PHP_SELF"]))."?fecha=".$month."/".$day."/".$year;
$calendar .= "'><a href='".$link."'><font color='"
Código PHP:
if (($day==$dia_actual) and ($month==$mes_actual) and ($year==$anio_actual)) { //Si el dia es el de hoy
$calendar .= $ColorDiaActual;
} else { 
// Si el dia no es el de hoy
if (($weekday == 5) or ($weekday == 6) or ($esFestivo==1)) { // Si estoy en fin de semana weekday=5,6
$calendar .= $ColorDiaFestivo;
} else {
$calendar .= $ColorDiaLaboral;};
};
$calendar .= ("' ").
(
"size='".$TamanioFuente."' ").
(
"face='".$TipoFuente."'><strong>".$day).
(
"</strong></font></a>").
(
"</td>\n");
$day++;
$weekday++;
}

//Cuidadin con los ultimos dias vacios del mes
if($weekday != 7){
$calendar .= '<td bgcolor="'.$ColorFondoTabla.'" colspan="' . ($weekday) . '"></td>';
}

//Chinnnnn pon, devolvemos toda la cadena calendario
return $calendar "</tr>\n</table>\n";
// Fin de la funcion CalendarioPHP(año, mes, caracteres del dia)


//variables para comprovar el año y el mes en el que estamos
$anio=date("Y");
$mes=date("m");

echo 
CalendarioPHP($anio$mes3);
?> 

En mi base de datos solo tengo cuatro campos, ID, Fecha, Titulo, Concepto

Lo que pretendo hacer es que cuando tengún evento en el més en el que estoy me lo marque en el calendario, y que si pincho en esa fecha me lo muestre en una página nueva.

Alguien me puede decir como lo puedo hacer?

Hay alguna manera más sencilla de hacerlo?

Muchas gracias una vez más.

Fernando.