Foros del Web » Programando para Internet » PHP »

Dudas con calendario

Estas en el tema de Dudas con calendario en el foro de PHP en Foros del Web. Hola,, amigos Tengo este calendario del mes en curso Código PHP: style type="text/css"> <!-- .diassemana { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 7pt; text-decoration: none; } --> </style> <body bgcolor="#FFFFFF"> <? # o--------------------------------------------------------------------------o # Funcion que despliega la fecha en formato de texto # Ejemplo Lunes, Octubre 22 de 2001 ...
  #1 (permalink)  
Antiguo 12/06/2005, 13:37
 
Fecha de Ingreso: enero-2003
Mensajes: 516
Antigüedad: 21 años, 3 meses
Puntos: 0
Pregunta Dudas con calendario

Hola,, amigos
Tengo este calendario del mes en curso
Código PHP:
style type="text/css">
<!--
.diassemana {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 7pt;
text-decoration: none;
}
-->
</style>
<body bgcolor="#FFFFFF">
<?
# o--------------------------------------------------------------------------o
# Funcion que despliega la fecha en formato de texto
# Ejemplo Lunes, Octubre 22 de 2001
# Creada por Exequiel Contreras Luna
# Contáctame en : [email][email protected][/email]
# Libre distribución, siempre que no se borre la nota de Creditos al autor.
# o--------------------------------------------------------------------------o

$dayarray=array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sábado","Domingo");
$montharray=array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
$diasemanadate("w");
$diamesdate("d");
$mesdate("m");
$mesantdate("m")-1;
$anodate("Y");
$diasdelmes=date("t");
$diamesant=date($mesant);

// en ésta variable se almacena la fecha en modo de texto, se puede mostrar usando un echo o print o lo ke kieran.
$lafecha=$dayarray[$diasemana].", ".$montharray[$mes-1]." ".$diames." de ".$ano;
// se puede alterar el orden si lo deseas
$festenero=array(1);
$festfebrero=array();
$festmarzo=array();
$festabril=array(18,19);
$festmayo=array(1,21);
$festjunio=array(16);
$festjulio=array();
$festagosto=array(15);
$festsept=array(18,19);
$festoct=array();
$festnov=array(1);
$festdic=array(8,25);



$festivos=array(18,19); // escoge los días festivos de acuerdo a tu país, tb puedes incluir Domingos y sábados

$totalfestivos=count($festivos); // Cantidad de días festivos

// calcula el inicio del mes actual
$diasatras=$diames;

$arraymesfull=array(42);
$arraymesfull[$diames]=$dayarray[$diasemana];

$i=$diames;
$decdiasemana=$diasemana;
while (
$i>=0)
{
$empiezaen=$decdiasemana+1;
$i=$i-1;
if (
$decdiasemana==0)
{
$decdiasemana=6;
}
else
{
$decdiasemana=$decdiasemana-1;
}

}

for (
$i=0;$i<=42;$i++)
{
$arraymesfull[$i]=" ";
}

$i=0;
$j=1;
for (
$i=$empiezaen;$j<=$diasdelmes;$i++)
{
$arraymesfull[$i]=$j;
$j++;
}
?>
<span class="diassemana"><i><?=$lafecha?></i></span>
<table border="1" cellspacing="0" cellpadding="0" bordercolor="#000000">
<tr>
<td>
<table border="0" cellspacing="1" cellpadding="0">
<tr class="diassemana">
<td colspan="7"> <div align="center"><font size="1"><b><font face="Trebuchet MS, Tahoma">
<? echo $montharray[$mes-1]; ?> </font></b></font></div></td>
</tr>
<tr class="diassemana">
<td width="20" bgcolor="#000000"> <div align="center"><font color="#FFFFCC">D</font></div></td>
<td width="20" bgcolor="#000000"> <div align="center"><font color="#FFFFCC">L</font></div></td>
<td width="20" bgcolor="#000000"> <div align="center"><font color="#FFFFCC">M</font></div></td>
<td width="20" bgcolor="#000000"> <div align="center"><font color="#FFFFCC">M</font></div></td>
<td width="20" bgcolor="#000000"> <div align="center"><font color="#FFFFCC">J</font></div></td>
<td width="20" bgcolor="#000000"> <div align="center"><font color="#FFFFCC">V</font></div></td>
<td width="20" bgcolor="#000000"> <div align="center"><font color="#FFFFCC">S</font></div></td>
</tr>
<tr>
<?
$j
=0;
for (
$i=0;$i<=42;$i++)
{
$verfest=0;
$bcolor="#E8E8E8"$fcolor="#000000";
if (
$diames==$arraymesfull[$i]) { $bcolor="#000000"$fcolor="#FFFFFF"; }
for (
$verfest==0;$verfest<$totalfestivos;$verfest++) {
if (
$arraymesfull[$i]==$festivos[$verfest]) { $bcolor="#E8E8E8"$fcolor="#CC0000"; }
}
?>
<td width="20" align="center" bgcolor=<? echo $bcolor ?> class="diassemana" ><font color=<? echo $fcolor?>>
<? echo $arraymesfull[$i]; ?> </font></td>
<? 
if ($j==6) {$j=0?>
</tr>
<tr>
<? }
else {
$j=$j+1;}
?>
</table>

</td>
</tr>
</table>
El asunto es q deseo q tenga opcion a mostrar hasta 3 meses antes del mes actual, asi como al hacerle click envie a un pop-up la fecha en formato en 0000-00-00.
Gracias
  #2 (permalink)  
Antiguo 12/06/2005, 15:29
 
Fecha de Ingreso: enero-2003
Mensajes: 516
Antigüedad: 21 años, 3 meses
Puntos: 0
Exclamación

Amigos, alguien tien una idea de como podria solucionar esto?
  #3 (permalink)  
Antiguo 12/06/2005, 19:57
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Bueno.. tendrías que hacer un ciclo de todo eso por cada mes... y usar JavaScript por lo de "al hacer click"... .. pero qué flojera .

Busca en el foro de JavaScript sobre "calendario"... encontrarás uno muuuuy bueno de Tunait donde tu clickeas una fecha y te asigna el valor a un textbox, así solo recojerás dicho textbox... igual hay otro de pepemolina.. muy bueno... quizá te sea más fácil modificar... sino hay muuchos más.... solo te faltaría lo del abrir el pop-up (hasta quizá ya no lo quieras)... por ello me late que el de pepemolina es mejor ya que el envia un valor a una fnción alert(), tú solo tendrías que cambiar esa función por un window.open().. claro, con sus respectivos atributos.

Si insistes con esto... dilo.. pero intenta lo que dije.. hacer un ciclo, ve como recojes el mes, eo variará por cada ciclo.. y supongo deberás hacer una comparación donde si el mes que imprimes es el actual no marcar la fecha (lo que muestras marca "hoy")... además por cada fecha impresa deberás crear una función JavaScript con un evento onClick y la función window.open()... en serio.. que flojera... yo paso...

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:07.