Foros del Web » Programando para Internet » PHP »

Ayuda insetar datos bd en calendario

Estas en el tema de Ayuda insetar datos bd en calendario en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/12/2008, 17:45
Avatar de 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
  #2 (permalink)  
Antiguo 06/12/2008, 08:30
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Hacer tabla y colorear celda segun registro

Mira este tema:
http://www.forosdelweb.com/f18/faqs-...00/#post269079
  #3 (permalink)  
Antiguo 06/12/2008, 08:54
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
Respuesta: Hacer tabla y colorear celda segun registro

gracias ron pero no eso lo que quiero ...
logre realizar la tabla y colorearla mi problema es que no se como barrer todos los datos de la base y volcarlos en la tabla. A ver si me explico quiero que todos los registro se vuelquen en la tabla .. no se como hacer eso se que es con el while pero no se donde y como aplicarlo .. les dejo el codigo que arme...


Código PHP:

//estos son los datos que tengo que reemplazar por los de la base de datos
$diacolor=$diacolor+1//fecha1
$diacolor2=$diacolor2+1;//fecha2 
$mes_color $mes_color+3;//mes
      

echo "<table>";
    echo 
"<tr>";
 echo 
"<td></td>";
    for (
$i=0;$i<31;$i++){
    
          
$color"style=color:blue";
     
                  echo 
"<td align=center >".($dia_actual<10?"0$dia_actual":$dia_actual)."</td>"
            
$dia_actual++;
            }
    echo 
"</tr>";
    
      
$mes=0;
    
$diacolor"3";
    
$diacolor2"10";
    
$mes_color"2";
     
      for (
$j=0;$j<12;$j++){
      
$mes=$mes+1;
     
          echo 
"<tr id=$mes>";
          echo 
"<td id=$mes>"; echo $nombre_mes ; echo "</td>";
        for (
$i=0;$i<31;$i++){
    
    if (
$diacolor <= $i && $diacolor2 >= $i && $mes == $mes_color){
    
$color="style=color:red;background-color:pink" 
        } else {
     
$color="style=color:blue";
    }
        echo 
"<td align=center $color id=$i> $mes </td>"; }
        
        echo 
"</tr>";
        }
         
    echo 
"</table>";

les agradecere su ayuda
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #4 (permalink)  
Antiguo 06/12/2008, 08:59
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Hacer tabla y colorear celda segun registro

mysql_connect()
http://www.php.net/manual/es/function.mysql-connect.php
mysql_select_db()
http://www.php.net/manual/es/functio...-select-db.php
mysql_query()
http://www.php.net/manual/es/function.mysql-query.php
mysql_fetch_array()
http://www.php.net/manual/es/functio...etch-array.php

Te recomiendo te leas por lo menos un manual basico de PHP+MySQL, hay muchos rondando en el internet.
  #5 (permalink)  
Antiguo 06/12/2008, 09:17
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
ron .. se como realizar coneciones php y MYSQL trabajar con datos de la base trabajar con muetreo de datos etc.. pero lo que no se es como hacer para mostrar varios datos en esa tabla ( la que cree arriba) a la vez. el ejemplo de arriba es estatico., pero si tengo 4 o mas registro en la base o registros estaticos ( no es el problema de trabajar con la base), ejemplo tengo 4 fechas1 y cuatro fechas2 como hago para pintar esas cuatro fecha en la misma tabla no ce omo colocar el while .. me explico?

alguien me puede dar una mano.... si no me explico bien diganmelo y se lo aclaro.. por favor
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza

Última edición por GatorV; 06/12/2008 a las 18:02
  #6 (permalink)  
Antiguo 06/12/2008, 18:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Hacer tabla y colorear celda segun registro

Temas unidos por favor no dupliques temas.
  #7 (permalink)  
Antiguo 06/12/2008, 18:09
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Ayuda insetar datos bd en calendario

Cita:
logre realizar la tabla y colorearla mi problema es que no se como barrer todos los datos de la base y volcarlos en la tabla
Cita:
se como realizar coneciones php y MYSQL trabajar con datos de la base trabajar con muetreo de datos etc
Decidete.

Este post te va a servir:
http://www.forosdelweb.com/f18/aport...tablas-618528/

Y la proxima vez sé mas claro con tu duda.
  #8 (permalink)  
Antiguo 06/12/2008, 19:04
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
Respuesta: Ayuda insetar datos bd en calendario

a ver si me explico ron.. lo que no se como utilizar todos los registro de la base de datos en la misma tabla, me explico ... no se como representar todos los rangos de fechas de cada registro en la misma tabla.te dejo un nuevo codigo .. que tiene errores estan mal ubicado el while .. por favor ayudenme

Código PHP:
    //escribo la primera fila de la semana
    
echo "<table>";
    echo 
"<tr>";
 echo 
"<td></td>";
    for (
$i=0;$i<31;$i++){
    
          
$color"style=color:blue";
     
                  echo 
"<td align=center >".($dia_actual<10?"0$dia_actual":$dia_actual)."</td>"
            
$dia_actual++;
        
    }
    echo 
"</tr>";
    
      
$mes=0;
    

      for (
$j=0;$j<12;$j++){
      
$mes=$mes+1;
    
          echo 
"<tr id=$mes>";
          echo 
"<td id=$mes>"; echo $nombre_mes ; echo "</td>";
        for (
$i=0;$i<31;$i++){
    
    while(
$row_Recordset1){
    
$diacolor$row_Recordset1['fecha1'], 72);
    
$diacolor2substr($row_Recordset1['fecha2'], 72);
    
$mes_colorsubstr($row_Recordset1['fecha1'], 52);}
               if (
$diacolor <= $i && $diacolor2 >= $i && $mes == $mes_color){
    
$color="style=color:red;background-color:pink" 
        } else {
     
$color="style=color:blue";
    }
        echo 
"<td align=center $color id=$i> $mes </td>"; }         
        
        echo 
"</tr>";
        echo 
$diacolor;
        }
        

 
    echo 
"</table>";

fijate si con esto entendes lo que quiero hacer
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #9 (permalink)  
Antiguo 06/12/2008, 21:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ayuda insetar datos bd en calendario

Mira lo que puedes hacer es lo siguiente, primero extraes todas las fechas de ese mes por ejemplo, y los guardas en un arreglo, luego creas una funcion que se llame checkOccupied( $fecha, $array_con_fechas).

Si regresa true tu funcion entonces pintas ese dia de un color, si no lo pintas de otro color. Si te fijas vas a tener que hacer dos procesos por aparte uno para rescatar los datos y otro para dibujar el calendario.

Saludos.
  #10 (permalink)  
Antiguo 06/12/2008, 23:27
 
Fecha de Ingreso: noviembre-2008
Mensajes: 279
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Ayuda insetar datos bd en calendario

ok mira es mas facil colorear por que le tira directamente el balor a todo
pero a la hora de volcar nesesitas recurir a procesos mas estricto lo que el chico no save es la uvicasion po ejmplo que alguien le diga aki en este renglon metele un swcht ak metele un for y metele un if y asi bva la cosa no ???
  #11 (permalink)  
Antiguo 07/12/2008, 04:04
 
Fecha de Ingreso: junio-2008
Mensajes: 119
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ayuda insetar datos bd en calendario

Gracias me gusto la funcion...
  #12 (permalink)  
Antiguo 07/12/2008, 07:29
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
gracias a todos... Lo que yo necesito es una ayuda voy a pobrar si puedo hacer lo de gatov.. pero me parecia que mas facil, por solo debo obtener los valores de $diacolor , etc no pense que se haria mas dificil. Pense que con while bien ubicado se solucionaria. pero veo que nop.
gatov te consulto tambien voy a tener que cambiar la forma que utilizo para colorear ya que es if con el arreglo no sirve.
Si alguien tiene alguna solucion mas sencilla o conoce la forma de hacer esto... e
un calendario donde pueda representar rango de fechas de una base se lo agradecere .... ya que estoy desesperado.. gracias

estuve probando de color un while antes de dibujar la columna del dia me dibu ja el calendario pero no lo pinta...
GATOV no se como hacer lo que me decis un array y despues una funcion ?? no se como definir la funcion no llego a entender...

a continuacion les dejo el codigo que estuve probando con el while.... espero su ayuda... gracias a todos...

Código PHP:
  echo "<table>";
    echo 
"<tr>";
 echo 
"<td></td>";
    for (
$i=0;$i<31;$i++){
    
          
$color"style=color:blue";
     
                  echo 
"<td align=center >".($dia_actual<10?"0$dia_actual":$dia_actual)."</td>"
            
$dia_actual++;
        
    }
    echo 
"</tr>";
          
$mes=0;

      for (
$j=0;$j<12;$j++){
      
      
$mes=$mes+1;
    
          echo 
"<tr id=$mes>";
          echo 
"<td id=$mes>"; echo $nombre_mes ; echo "</td>";
        
        for (
$i=0;$i<31;$i++){
    

        echo  
"<td align=center ";
             
while(
$row mysql_fetch_array ($Recordset1)){
    
     
$diacolorsubstr($row['fecha1'],82);
    
$diacolor2substr($row['fecha2'],82);
    
$mes_colorsubstr($row['fecha1'],52);
    
if (
$diacolor<=$i && $diacolor2>=$i && $mes==$mes_color ){
    echo 
"style=color:red;background-color:pink" 
        } else { 
    echo  
"style=color:green"
    }}   echo 
" id=$i> $mes </td>"; }     
        
        echo 
"</tr>";
        
        }
    

    echo 
"</table>"
Alguien que me ayude !!! por favor necesito resolverlo urgente ... alguna idea .. he buscado por todos lados... como hacer .. si es con while con la funcion de GATOV... plizzz

GRACIAS!!
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza

Última edición por GatorV; 09/12/2008 a las 10:13
  #13 (permalink)  
Antiguo 09/12/2008, 10:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ayuda insetar datos bd en calendario

Como te comento con el while vas a tener muchos problemas porque ya estas dentro de un ciclo, por eso la opción que te mostre, de hacer un arreglo con los dias, crear una función y verificar en cada vuelta que dibujas el dia del calendario si esta o no "ocupado" el día.

Lamentablemente no hay una forma sencilla y rapida que te pueda yo decir, "pon este código y ya esta", tienes que pensar y aplicar ingenieria de software para diseñar tus funciones.

Saludos.
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 00:40.