Foros del Web » Programando para Internet » PHP »

Calendario de reservas de tal dia a tal dia

Estas en el tema de Calendario de reservas de tal dia a tal dia en el foro de PHP en Foros del Web. Hola amigos, esta oportunidad recuro a ustedes buscando luz, dado que me tranque. o.k. explico lo que quiero hacer, necesito hacer que el calendario (tome ...
  #1 (permalink)  
Antiguo 26/04/2007, 09:11
Avatar de Titos  
Fecha de Ingreso: agosto-2002
Mensajes: 116
Antigüedad: 21 años, 8 meses
Puntos: 3
Pregunta Calendario de reservas de tal dia a tal dia

Hola amigos, esta oportunidad recuro a ustedes buscando luz, dado que me tranque.

o.k. explico lo que quiero hacer, necesito hacer que el calendario (tome como base el de desarrolloweb) me pinte verde de tal $dia $mes $año a tal $dia $mes $año, (las variables son tomadas de una base de datos mysql asi: entrada: $dia_in $mes_in $ano_in salida: $dia_out $mes_out $ano_out) y los días que no estén en la base de datos que los deje normal en negro.

Lo que he hecho hasta ahora: el scrip me dice el $dia $mes $año que esta reservado y lo marca de rojo.

<?php


function calcula_numero_dia_semana($dia,$mes,$ano){
$numerodiasemana = date('w', mktime(0,0,0,$mes,$dia,$ano));
if ($numerodiasemana == 0)
$numerodiasemana = 6;
else
$numerodiasemana--;
return $numerodiasemana;
}

//funcion que devuelve el último día de un mes y año dados
function ultimoDia($mes,$ano){
$ultimo_dia=28;
while (checkdate($mes,$ultimo_dia + 1,$ano)){
$ultimo_dia++;
}
return $ultimo_dia;
}

function dame_nombre_mes($mes){
switch ($mes){
case 1:
$nombre_mes="Enero";
break;
case 2:
$nombre_mes="Febrero";
break;
case 3:
$nombre_mes="Marzo";
break;
case 4:
$nombre_mes="Abril";
break;
case 5:
$nombre_mes="Mayo";
break;
case 6:
$nombre_mes="Junio";
break;
case 7:
$nombre_mes="Julio";
break;
case 8:
$nombre_mes="Agosto";
break;
case 9:
$nombre_mes="Septiembre";
break;
case 10:
$nombre_mes="Octubre";
break;
case 11:
$nombre_mes="Noviembre";
break;
case 12:
$nombre_mes="Diciembre";
break;
}
return $nombre_mes;
}

function mostrar_calendario($mes,$ano){
//tomo el nombre del mes que hay que imprimir
$nombre_mes = dame_nombre_mes($mes);

//construyo la cabecera de la tabla
echo "<table width=200 cellspacing=3 cellpadding=2 border=0><tr><td colspan=7 align=center class=tit>";
echo "<table width=100% cellspacing=2 cellpadding=2 border=0><tr><td style=font-size:10pt;font-weight:bold;color:white>";
//calculo el mes y ano del mes anterior
$mes_anterior = $mes - 1;
$ano_anterior = $ano;
if ($mes_anterior==0){
$ano_anterior--;
$mes_anterior=12;
}
echo "<a style=color:white;text-decoration:none href=index.php?nuevo_mes=$mes_anterior&nuevo_ano=$ ano_anterior>&lt;&lt;</a></td>";
echo "<td align=center class=tit>$nombre_mes $ano</td>";
echo "<td align=right style=font-size:10pt;font-weight:bold;color:white>";
//calculo el mes y ano del mes siguiente
$mes_siguiente = $mes + 1;
$ano_siguiente = $ano;
if ($mes_siguiente==13){
$ano_siguiente++;
$mes_siguiente=1;
}
echo "<a style=color:white;text-decoration:none href=index.php?nuevo_mes=$mes_siguiente&nuevo_ano= $ano_siguiente>&gt;&gt;</a></td></tr></table></td></tr>";
echo ' <tr>
<td width=14% align=center class=altn>L</td>
<td width=14% align=center class=altn>M</td>
<td width=14% align=center class=altn>X</td>
<td width=14% align=center class=altn>J</td>
<td width=14% align=center class=altn>V</td>
<td width=14% align=center class=altn>S</td>
<td width=14% align=center class=altn>D</td>
</tr>';



include( 'conex.php' );

$conex = mysql_connect("$serv","$user","$pass") or die("NO se pudo realizar la conexión");
mysql_select_db("$dbase", $conex);


//Variable para llevar la cuenta del dia actual
$dia_actual = 1;

//calculo el numero del dia de la semana del primer dia
$numero_dia = calcula_numero_dia_semana(1,$mes,$ano);
//echo "Numero del dia de demana del primer: $numero_dia <br>";

//calculo el último dia del mes
$ultimo_dia = ultimoDia($mes,$ano);

//escribo la primera fila de la semana
echo "<tr>";
for ($i=0;$i<7;$i++){
if ($i < $numero_dia){
//si el dia de la semana i es menor que el numero del primer dia de la semana no pongo nada en la celda
echo "<td></td>";
} else {

$resultado = mysql_query("SELECT * FROM reservas WHERE propiedad_id='BA-80' and dia_in='$dia_actual' and mes_in='$mes' and ano_in='$ano'", $conex);
$contando = mysql_num_rows($resultado);

if($contando == 0){
echo "<td align=center>$dia_actual</td>";

}else{
echo "<td align=center><font color='#FF0000'>$dia_actual</font></td>";

}


$dia_actual++;

}
}
echo "</tr>";

//recorro todos los demás días hasta el final del mes
$numero_dia = 0;
while ($dia_actual <= $ultimo_dia){
//si estamos a principio de la semana escribo el <TR>
if ($numero_dia == 0)
echo "<tr>";

$resultado = mysql_query("SELECT * FROM reservas WHERE propiedad_id='BA-80'and dia_in='$dia_actual' and mes_in='$mes' and ano_in='$ano'", $conex);
$contando = mysql_num_rows($resultado);





if($contando == 0){
echo "<td align=center>$dia_actual</td>";

}else{
echo "<td align=center><font color='#FF0000'>$dia_actual</font></td>";

}

#echo "<td align=center>$dia_actual</td>";
$dia_actual++;
$numero_dia++;
//si es el uñtimo de la semana, me pongo al principio de la semana y escribo el </tr>
if ($numero_dia == 7){
$numero_dia = 0;
echo "</tr>";
}
}

//compruebo que celdas me faltan por escribir vacias de la última semana del mes
for ($i=$numero_dia;$i<7;$i++){
echo "<td></td>";
}

echo "</tr>";
echo "</table>";

mysql_free_result($resultado);
mysql_close($conex);
}


?>
__________________
Saludos a Tod@s... :adios:
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 23:06.