Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/12/2008, 17:45
Avatar de jakuam
jakuam
 
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
Hola estimados amigos, necesito ver la forma de relacionar una tabla de mi base de datos con un calendario. le paso el calendario a continuacion
Código PHP:
<?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>'
;
    
    
//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);

// estos son los datos a cambiar de la base de datos
        
$diacolor"11";
    
$diacolor2"21";
    
$mescolor"11";
        
$anocolor"2008";
    
    
//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 {
        if (
$diacolor <= $dia_actual){
     
$color"style=color:red";} else {


      
$color"style=color:blue";}
          echo 
"<td align=center $color>".($dia_actual<10?"0$dia_actual":$dia_actual)."</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>";

        
    if (
$diacolor <= $dia_actual && $diacolor2 >= $dia_actual && $mes == $mescolor){
    
$color="style=color:red;background-color:pink" ;} else {
     
$color="style=color:blue";}
                   echo 
"<td align=center $color>".($dia_actual<10?"0$dia_actual":$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>";
}    

function 
formularioCalendario($mes,$ano){
echo 
'
    <table align="center" cellspacing="2" cellpadding="2" border="0">
    <tr><form action="index.php" method="POST">'
;
echo 
'
    <td align="center" valign="top">
        Mes: <br>
        <select name=nuevo_mes>
        <option value="1"'
;
if (
$mes==1)
 echo 
"selected";
echo
'>Enero
        <option value="2" '
;
if (
$mes==2
    echo 
"selected";
echo
'>Febrero
        <option value="3" '
;
if (
$mes==3
    echo 
"selected";
echo
'>Marzo
        <option value="4" '
;
if (
$mes==4
    echo 
"selected";
echo 
'>Abril
        <option value="5" '
;
if (
$mes==5
        echo 
"selected";
echo 
'>Mayo
        <option value="6" '
;
if (
$mes==6
    echo 
"selected";
echo 
'>Junio
        <option value="7" '
;
if (
$mes==7
    echo 
"selected";
echo 
'>Julio
        <option value="8" '
;
if (
$mes==8
    echo 
"selected";
echo 
'>Agosto
        <option value="9" '
;
if (
$mes==9
    echo 
"selected";
echo 
'>Septiembre
        <option value="10" '
;
if (
$mes==10
    echo 
"selected";
echo 
'>Octubre
        <option value="11" '
;
if (
$mes==11
    echo 
"selected";
echo 
'>Noviembre
        <option value="12" '
;
if (
$mes==12
    echo 
"selected";
echo 
'>Diciembre
        </select>
        </td>'
;
echo 
'        
        <td align="center" valign="top">
        A&ntilde;o: <br>
        <select name=nuevo_ano>
        <option value="2000" '
;
if (
$ano==2000
   echo 
"selected";
echo
' >2000
        <option value="2001" '
;
if (
$ano==2001)
 echo 
"selected";
echo 
'>2001
        <option value="2002" '
;
if (
$ano==2002
   echo 
"selected";
echo 
'>2002
        <option value="2003" '
;
if (
$ano==2003
   echo 
"selected" ;
echo 
'>2003
        <option value="2004" '
;
if (
$ano==2004
   echo 
"selected" ;
echo 
'>2004
    </select>
        </td>'
;
echo 
'
    </tr>
    <tr>
        <td colspan="2" align="center"><input type="Submit" value="[ IR A ESE MES ]"></td>
    </tr>
    </table><br>
    
    <br>
    
    </form>'
;
}
?>

yo logre que pinte un rango de fechas pero de manera estatica pero ahora quiero que sea de manera dinamica ..
parte a cambiar por la de la base de datos
Código PHP:
// estos son los datos a cambiar de la base de datos
        
$diacolor"11";
    
$diacolor2"21";
    
$mescolor"11";
        
$anocolor"2008"

tendria que hacer algun while o for con los datos de la base en la que tengo campos de fecha : fecha 1 y fecha2 que los exploto y saco los dias, mes y fecha...
por favor necesito su ayuda

alguien me puede dar una mano la necesito plis ayuada de verdad .....

por favor necesito su ayuda.. solo necesito saber como agregar rango de fecha desde la base para pintar el calendario, ya que no se como o donde hacer el while de la base para en un mismo calendario me ubique los todas fechas de la base .. por favor .. gracias

alguien me puede ayudar necesito saber donde poner el while para que me tome todos los registros de la base. por favor .. se puede hacer o no? plis locos ponganse las pilas

gracias a todos por sus ayuda fueron muy utiles.. ;D

Estimados necesito su ayuda para realizar un tabla dinamiencamente y colorear celdas segun de rango de fecha de una base de datos.
La tabla que quiero armar seria asi

---------- 1 2 3 4 5 6 7 8 ... 20 21 22 ..... 30 31
Enero

febrero
...
...
Diciembre


me interesaria colorear por ejemplo desde el 2 de enero al 7 de enero datos obtenidos de 2 campos fechas con un mismo id que tiene la base. Ej base
id
fecha1
fecha2


estube probando realizarlo dando le ids a las tablas utilizando for para armarlo pero no lo realizarlo. podrian ayudarme darme una idea .. gracias
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza

Última edición por GatorV; 06/12/2008 a las 18:02