No se como hacer para que, los días del calendario, se hagan "link" si ese día aún tiene turnos libres..
En si, estos son los datos. Tengo las siguientes tablas:
AGENDA_TURNO
id_agenda_turno (bueno, es el id)
agenda_paciente (inserto el id del paciente)
agenda_especialidad (inserto el id de la espacialidad)
agenda_medico (inserto el id del medico)
agenda_fecha (inserto la fecha del turno)
agenda_motivo (inserto el motivo del turno)
id_horario_turno1 (inserto el id del horario del turno elegido)
agenda_estado (inserto el id del estado del turno)
HORARIOS_TURNOS
id_horario_turno (bueno, es el id)
horario_turno (tiene los diferentes horarios de turnos)
horario_turno_medico (tiene el id del medico)
horario_turno_dia (tiene el dia en donde estan esos horarios)
Antes que nada, aclaro que estoy trabajando sobre un calendario que baje de la web, el cual había sido creado para una agenda de eventos, en donde los días que se muestran como "link" son los días que tienen insertado un evento.
El tema es así, yo con la siguiente consulta:
Código:
Con es consulta, yo cuando hago click sobre un día (obviamente hecho link) me muestra perfecto (en una capa vía ajax) los horarios de turnos acordes a ese día (obviamente según el medico).$sql = "SELECT * FROM horarios_turnos INNER JOIN medicos ON horarios_turnos.horario_turno_medico = medicos.id_medico WHERE horario_turno_dia = '$dia' AND horario_turno_medico = '$medicoturno' AND id_horario_turno NOT IN (SELECT id_horario_turno1 FROM agenda_turnos WHERE agenda_fecha = '$nombredia' AND agenda_medico = '$medicoturno')"; $horarioslibres = mysql_query($sql) or die(mysql_error());
El tema cual es, a mi me gustaría, como dije antes, que el día se haga "link" justamente si ese día aún tiene horarios libres, sino no (obvio).
Les dejo el código del calendario..
Código PHP:
<?php
setlocale(LC_ALL, 'es_ES'); //Cod. Local (en mi caso Catalan, para castellano podeis usar 'es_ES' en lugar el 'ca_ES'
$sel_date = isset($_REQUEST['ladata']) ? $_REQUEST['ladata'] : time();
$dias = date('t', $sel_date); // Dias que tiene el mes
$hoy = date('j', $sel_date); // Hoy (numerico) Si es 'j' ? 1-31 si es 'd' ? 01-31
$mes = date('m', $sel_date); // Mes actual (numerico) 'n' ? 1-12 si es 'm' ? 01-12
$anio = date('Y', $sel_date); // Año actual Si es 'Y' ? 2007 si es 'y' ? 07
$nomMes = strftime('%B', $sel_date); // El nombre del mes, en la codificacion local elejida
$t = getdate($sel_date);
$proximMes = mktime($t['hours'], $t['minutes'], $t['seconds'], $mes + 1, $t['mday'], $anio); // Mes siguiente
$anteriorMes = mktime($t['hours'], $t['minutes'], $t['seconds'], $mes - 1, $t['mday'], $anio); // Mes anterior
// Dia de la semana en que cae el dia 1 del mes actual
if (($diaset = date('w', mktime(0, 0, 0, date('m', $sel_date), 1, date('y', $sel_date)))) == 0) $diaset = 7;;
$start = false;
$sum = 0;
// Consultamos todos los registros que hay en la base de datos, de este año y este mes
$consulta = "SELECT agenda_fecha FROM agenda_turnos WHERE agenda_fecha LIKE '$anio-%' AND agenda_fecha LIKE '%-$mes-%' and agenda_medico = ".$_SESSION['medico_selecionado'];
$resp = mysql_query($consulta);
$array_dias = array();
while ($dades=mysql_fetch_array($resp)) {
$unarray = explode('-', $dades['agenda_fecha']);
$diasEvent = $unarray[2];
$array_dias[] = $diasEvent;
}
echo '
<div style="width:450px">
<table summary="Esta tabla contiene el calendario" cellpadding="0" cellspacing="0" id="calendario" align="center">
<thead><tr><th colspan="7"> <a href="?ladata='.$anteriorMes.'" title="mes anterior">«««</a> '.utf8_encode($nomMes).' '.$anio.' <a href="?ladata='.$proximMes.'" title="proximo mes">»»»</a></th></thead>
<tbody>
' ;
echo '<tr>
<th>Lu</th><th>Ma</th><th>Mi</th><th>Ju</th><th>Vi</th><th>Sa</th><th>Do</th>
</tr>';
for ($i = 1; $i <= ($dias + $sum); $i++) {
// Dias de otro mes, no mostraremos nada
if (!$start) if ($i <= 7 && $i == $diaset) { $start = true; $sum = $i - 1; } else { echo '<td class="inactivo"></td>'; }
if ($start) {
if (($i - 1) % 7 == 0) echo '<tr>';
if ($i == ($hoy + $sum) && ($mes == date('m')) && ($anio == date('Y')) ) {
$complet = $anio.'-'.$mes.'-'.($i - $sum ); // Fecha completa formato 2007-12-31
// Hoy
echo '
<td class="hoy">';
$consulta = "SELECT agenda_fecha FROM agenda_turnos WHERE agenda_fecha ='$complet'";
$resp = mysql_query($consulta);
if ($dades = mysql_fetch_array($resp))
{
echo "<a href=\"#\" title=\"a\" onclick=\"ajax_get('turnos_x_fecha','turnos_x_fecha.php','agenda_fecha=".$dades['agenda_fecha']."&".$complet."')\">".($i - $sum )."</a>";
}
else
{
echo $hoy;
}
echo '</td>';
} elseif (in_array($i-$sum, $array_dias)) {
$complet = $anio.'-'.$mes.'-'.($i - $sum );
// Dia que hay algun evento
echo '<td class="evento">';
$consulta = "SELECT * FROM agenda_turnos WHERE agenda_fecha ='$complet' and agenda_medico = ".$_SESSION['medico_selecionado'];
$resp = mysql_query($consulta);
if ($dades=mysql_fetch_array($resp)) {
echo "<a href=\"#\" title=\"a\" onclick=\"ajax_get('turnos_x_fecha','turnos_x_fecha.php','agenda_fecha=".$dades['agenda_fecha']."&".$complet."')\">".($i - $sum )."</a>";
}
echo '</td>';
} else {
// Dia que no hay nada
echo '
<td>
' . ($i - $sum ) .'
</td>';
}
}
}
echo '
</tr></table></div>
';
?>