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
<script> var vacia = "T02"; function cambiames(){ document.mesa.action = "mes_asistencia.php"; document.mesa.mes.value = vacia; document.mesa.submit() } </script>
Código PHP:
Ver original
<?php function DiaSemana($dia,$mes,$ano){ if($numerodiasemana == 0){ $numerodiasemana = 6; } else { $numerodiasemana--; } return $numerodiasemana; } function NombreMes($mes){ switch ($mes){ case 1: $nombre = "Enero"; break; case 2: $nombre = "Febrero"; break; case 3: $nombre = "Marzo"; break; case 4: $nombre = "Abril"; break; case 5: $nombre = "Mayo"; break; case 6: $nombre = "Junio"; break; case 7: $nombre = "Julio"; break; case 8: $nombre = "Agosto"; break; case 9: $nombre = "Septiembre"; break; case 10: $nombre = "Octubre"; break; case 11: $nombre = "Noviembre"; break; case 12: $nombre = "Diciembre"; break; } return $nombre; } function ultimoDia($mes,$ano){ $ultimo_dia=28; return $ultimo_dia; } function Calendar($mes,$ano){ $nombremes = NombreMes($mes); $mes_anterior = $mes - 1; $ano_anterior = $ano; if ($mes_anterior == 0){ $ano_anterior--; $mes_anterior = 12; } $mes_siguiente = $mes + 1; $ano_siguiente = $ano; if ($mes_siguiente==13){ $ano_siguiente++; $mes_siguiente=1; } ?>
Código HTML:
Ver original
Código PHP:
Ver original
<?php require('conexion.php'); $ssql = "SELECT fechados FROM asistencia WHERE cirac='16445732' and fechados BETWEEN '01012010' and '31012010'"; $fechados = $row["fechados"]; echo "<tr>"; echo "<td align='center' bgcolor='#F0F8FE'>Domingo</td>"; echo "<td align='center' bgcolor='#F0F8FE'>Lunes</td>"; echo "<td align='center' bgcolor='#F0F8FE'>Martes</td>"; echo "<td align='center' bgcolor='#F0F8FE'>Miércoles</td>"; echo "<td align='center' bgcolor='#F0F8FE'>Jueves</td>"; echo "<td align='center' bgcolor='#F0F8FE'>Viernes</td>"; echo "<td align='center' bgcolor='#F0F8FE'>Sábado</td>"; echo "</tr>"; $dia_actual = 1; $numero_dia = DiaSemana(1,$mes,$ano); $ultimo_dia = ultimoDia($mes,$ano); $csql = "SELECT estatus FROM asistencia where fechados='$fechados' and cirac='16445732'"; $estatus1 = $row['estatus']; echo "<tr>"; for($i=-1;$i<6;$i++){ if(($dia_actual<=$diaact) && ($mes<=$mesact) && ($ano<=$anoact)){ $bgcolor = "#F0F8FE"; }elseif(($dia_actual>$diaact) && ($mes>=$mesact) || ($ano>$anoact)){ $bgcolor = "#D8D8D8"; }elseif ($mes>$mesact){ $bgcolor = "#D8D8D8"; } if(($dia_actual<=$diaact) && ($mes<=$mesact) && ($ano<=$anoact)){ $enlace = "calendar.php?action=show&dia=".$dia_actual."&mes=".$mes."&ano=".$ano."&sid=".session_id().""; }else{ $enlace = ""; } if($i < $numero_dia){ echo "<td class='calendar' bgcolor='#D8D8D8'> </td>"; }else{ 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>"; $dia_actual++; } } echo "</tr>"; $numero_dia = 0; while($dia_actual <= $ultimo_dia){ if(($dia_actual<=$diaact) && ($mes<=$mesact) && ($ano<=$anoact)){ $bgcolor = "#F0F8FE"; }elseif(($dia_actual>$diaact) && ($mes>=$mesact) || ($ano>$anoact)){ $bgcolor = "#D8D8D8"; }elseif ($mes>$mesact){ $bgcolor = "#D8D8D8"; } if(($dia_actual<=$diaact) && ($mes<=$mesact) && ($ano<=$anoact)){ $enlace = "calendar.php?action=show&dia=".$dia_actual."&mes=".$mes."&ano=".$ano."&sid=".session_id().""; }else{ $enlace = ""; } if ($numero_dia == 0) echo "<tr>"; 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>"; $dia_actual++; $numero_dia++; if ($numero_dia == 7){ $numero_dia = 0; echo "</tr>"; } } for ($i=$numero_dia;$i<7;$i++){ echo "<td bgcolor='#D8D8D8'> </td>"; } echo "</tr>"; } } } } } Calendar($mes,$ano); ?>
Código HTML:
Ver original
</table>
Espero me puedan ayudar porque de verdad no consigo como acomodarlo.
Muchas gracias