Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/05/2010, 18:22
douglasroos
 
Fecha de Ingreso: agosto-2009
Mensajes: 59
Antigüedad: 14 años, 8 meses
Puntos: 0
Problema con calendario php y datos de mysql

Saludos a todos, estoy intentando usar un calendario que conseguí acá en el foro para un sistema que estoy haciendo, la idea es que de un select selecciones el mes a consultar y al cambiar el script seleccione de la BD ese mes, hasta ahi todo bien.

El problema surge debido a que el debe representar el dia y al lado el esatus de esa persona para ese día, si estaba libre, ausente, presente, de permiso, etc.

cuando hago el bucle en la BD para que me lo muestre así lo que hace es repetirme 31 veces el calendario en vez de ubicarme cada dia con el estatus que corresponde.

La tabla en la BD se llama asistencia y utilizo dos campos para representar esto, son fechados y estatus

Fechados almacena la fecha en este formato: 01012010 y estatus bueno es obvio cual es su contenido, acá les dejo el codigo que estoy usando y no sirve.

Código Javascript:
Ver original
  1. <script>
  2. var vacia = "T02";
  3.  
  4. function cambiames(){
  5.    document.mesa.action = "mes_asistencia.php";
  6.    document.mesa.mes.value = vacia;
  7.    document.mesa.submit()
  8. }  
  9. </script>


Código PHP:
Ver original
  1. <?php
  2.  function DiaSemana($dia,$mes,$ano){
  3.   $numerodiasemana = date('w', mktime(0,0,0,$mes,$dia,$ano));
  4.   if($numerodiasemana == 0){ $numerodiasemana = 6; } else { $numerodiasemana--; }
  5.   return $numerodiasemana;
  6. }  
  7.  
  8. function NombreMes($mes){
  9.   switch ($mes){
  10.    case 1:  $nombre = "Enero";  break;
  11.    case 2:  $nombre = "Febrero";  break;
  12.    case 3:  $nombre = "Marzo";  break;
  13.    case 4:  $nombre = "Abril";  break;
  14.    case 5:  $nombre = "Mayo";  break;
  15.    case 6:  $nombre = "Junio";  break;
  16.    case 7:  $nombre = "Julio";  break;
  17.    case 8:  $nombre = "Agosto";  break;
  18.    case 9:  $nombre = "Septiembre";  break;
  19.    case 10: $nombre = "Octubre";  break;
  20.    case 11: $nombre = "Noviembre";  break;
  21.    case 12: $nombre = "Diciembre";  break;
  22.   }
  23.   return $nombre;
  24. }  
  25.  
  26. function ultimoDia($mes,$ano){
  27.   $ultimo_dia=28;
  28.   while (checkdate($mes,$ultimo_dia + 1,$ano)){ $ultimo_dia++; }
  29.   return $ultimo_dia;
  30. }  
  31.  
  32. function Calendar($mes,$ano){
  33.   $nombremes = NombreMes($mes);
  34.   $mes_anterior = $mes - 1;
  35.   $ano_anterior = $ano;
  36.   if ($mes_anterior == 0){
  37.    $ano_anterior--;
  38.    $mes_anterior = 12;
  39.   }
  40.   $mes_siguiente = $mes + 1;
  41.   $ano_siguiente = $ano;
  42.   if ($mes_siguiente==13){
  43.    $ano_siguiente++;
  44.    $mes_siguiente=1;
  45.   }
  46.  
  47.   ?>

Código HTML:
Ver original
  1. <form name="mesa" id="mesa" method="post">
  2.    <select name="mes" id="mes" onchange="cambiames()"><option selected><?php echo $nombremes; ?></option>
  3.    <option value="Enero">Enero</option>
  4.    <option value="Febrero">Febrero</option>
  5.    <option value="Marzo">Marzo</option>
  6.    <option value="Abril">Abril</option>
  7.    <option value="Mayo">Mayo</option>
  8.    <option value="Junio">Junio</option>
  9.    <option value="Julio">Julio</option>
  10.    <option value="Agosto">Agosto</option>
  11.    <option value="Septiembre">Septiembre</option>
  12.    <option value="Octubre">Octubre</option>
  13.    <option value="Noviembre">Noviembre</option>
  14.    <option value="Diciembre">Diciembre</option>
  15.    </select>
  16.    </form>
  17.  
  18.    <table align="center" border="1" cellpadding="1" cellspacing="1" width="650">


Código PHP:
Ver original
  1. <?php
  2. require('conexion.php');
  3. $ssql = "SELECT fechados FROM asistencia WHERE cirac='16445732' and fechados BETWEEN '01012010' and '31012010'";
  4. $rss = mysql_query($ssql,$conn);
  5.  
  6. if (mysql_num_rows($rss)!=0){
  7.  
  8. while($row = mysql_fetch_array($rss)) {
  9.  
  10. $fechados = $row["fechados"];
  11.  
  12.  
  13.  
  14.   echo "<tr>";
  15.   echo "<td align='center' bgcolor='#F0F8FE'>Domingo</td>";
  16.   echo "<td align='center' bgcolor='#F0F8FE'>Lunes</td>";
  17.   echo "<td align='center' bgcolor='#F0F8FE'>Martes</td>";
  18.   echo "<td align='center' bgcolor='#F0F8FE'>Mi&eacute;rcoles</td>";
  19.   echo "<td align='center' bgcolor='#F0F8FE'>Jueves</td>";
  20.   echo "<td align='center' bgcolor='#F0F8FE'>Viernes</td>";
  21.   echo "<td align='center' bgcolor='#F0F8FE'>S&aacute;bado</td>";
  22.   echo "</tr>";
  23.   $dia_actual = 1;
  24.   $numero_dia = DiaSemana(1,$mes,$ano);
  25.   $ultimo_dia = ultimoDia($mes,$ano);
  26.   $diaact = date("d");
  27.   $mesact = date("m");
  28.   $anoact = date("Y");
  29.  
  30.  
  31. $csql = "SELECT estatus FROM asistencia where fechados='$fechados' and cirac='16445732'";
  32. $ress = mysql_query($csql,$conn);                  
  33. if (mysql_num_rows($ress)!=0){
  34. while($row = mysql_fetch_array($ress)) {
  35. $estatus1 = $row['estatus'];
  36.   echo "<tr>";
  37.   for($i=-1;$i<6;$i++){
  38.    if(($dia_actual<=$diaact) && ($mes<=$mesact) && ($ano<=$anoact)){
  39.     $bgcolor = "#F0F8FE";
  40.    }elseif(($dia_actual>$diaact) && ($mes>=$mesact) || ($ano>$anoact)){
  41.     $bgcolor = "#D8D8D8";
  42.    }elseif ($mes>$mesact){
  43.     $bgcolor = "#D8D8D8";
  44.    }
  45.    if(($dia_actual<=$diaact) && ($mes<=$mesact) && ($ano<=$anoact)){
  46.     $enlace = "calendar.php?action=show&dia=".$dia_actual."&mes=".$mes."&ano=".$ano."&sid=".session_id()."";
  47.    }else{
  48.     $enlace = "";
  49.    }
  50.    if($i < $numero_dia){
  51.     echo "<td class='calendar' bgcolor='#D8D8D8'>&nbsp;</td>";
  52.    }else{
  53.     echo "<td align='center' bgcolor='".$bgcolor."'><a href=".$enlace."><span class='info' title='Mostrar contenido de ".($dia_actual."-".$mes."-".$ano)."'>".$dia_actual."</span></a></td>";
  54.     $dia_actual++;
  55.    }
  56.   }
  57.   echo "</tr>";
  58.   $numero_dia = 0;
  59.   while($dia_actual <= $ultimo_dia){
  60.    if(($dia_actual<=$diaact) && ($mes<=$mesact) && ($ano<=$anoact)){
  61.     $bgcolor = "#F0F8FE";
  62.    }elseif(($dia_actual>$diaact) && ($mes>=$mesact) || ($ano>$anoact)){
  63.     $bgcolor = "#D8D8D8";
  64.    }elseif ($mes>$mesact){
  65.     $bgcolor = "#D8D8D8";
  66.    }
  67.    if(($dia_actual<=$diaact) && ($mes<=$mesact) && ($ano<=$anoact)){
  68.     $enlace = "calendar.php?action=show&dia=".$dia_actual."&mes=".$mes."&ano=".$ano."&sid=".session_id()."";
  69.    }else{
  70.     $enlace = "";
  71.    }
  72.    if ($numero_dia == 0)
  73.     echo "<tr>";
  74.     echo "<td align='center' bgcolor='".$bgcolor."'><a href=".$enlace."><span class='info' title='Mostrar contenido de ".($dia_actual."-".$mes."-".$ano)."'>".$dia_actual."<br>".$estatus1."</span></a></td>";
  75.     $dia_actual++;
  76.     $numero_dia++;
  77.     if ($numero_dia == 7){
  78.      $numero_dia = 0;
  79.      echo "</tr>";
  80.     }
  81.    }
  82.   for ($i=$numero_dia;$i<7;$i++){
  83.    echo "<td bgcolor='#D8D8D8'>&nbsp;</td>";
  84.   }
  85.   echo "</tr>";
  86. }  
  87.  
  88.     }
  89.  
  90. }
  91.    }
  92.  
  93. }
  94.  
  95. $mes = isset($_GET['mes'])?$_GET['mes']:date("m");
  96.  $ano = isset($_GET['ano'])?$_GET['ano']:date("Y");
  97.  Calendar($mes,$ano);  
  98.  
  99. ?>

Código HTML:
Ver original 

Espero me puedan ayudar porque de verdad no consigo como acomodarlo.

Muchas gracias