Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/03/2012, 15:20
Adri82
 
Fecha de Ingreso: mayo-2011
Ubicación: Córdoba Capital
Mensajes: 15
Antigüedad: 13 años
Puntos: 1
Pregunta Problema para mostrar turnos libres...

El tema es así, estoy haciendo un sistemita con turnero para una clinica y we, hastra el momento llevo haciendo varias cosas, el turnero anda ya en un 50% o más pero me trabé en lo siguiente...

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:
$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());
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).

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(000date('m'$sel_date), 1date('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">&laquo;&laquo;&laquo;</a>&nbsp;&nbsp; '.utf8_encode($nomMes).' '.$anio.' &nbsp;&nbsp;<a href="?ladata='.$proximMes.'" title="proximo mes">&raquo;&raquo;&raquo;</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 <= && $i == $diaset) { $start true$sum $i 1; } else { echo '<td class="inactivo"></td>'; }
                        
                            if (
$start) {
                                if ((
$i 1) % == 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>
                    '
;
?>
Obviamente van a ver que los días ahí tienen una consulta en donde los días se hacen link, si ese día tiene un turno pedido, pero no es eso lo que quiero