Foros del Web » Programando para Internet » PHP »

Problema para mostrar turnos libres...

Estas en el tema de Problema para mostrar turnos libres... en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 22/03/2012, 15:20
 
Fecha de Ingreso: mayo-2011
Ubicación: Córdoba Capital
Mensajes: 15
Antigüedad: 13 años, 6 meses
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
  #2 (permalink)  
Antiguo 27/03/2012, 13:26
 
Fecha de Ingreso: mayo-2011
Ubicación: Córdoba Capital
Mensajes: 15
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Problema para mostrar turnos libres...

Bueno, toketeando lo solucioné. Ahora a tokar los estilos para darle más vida a ese calendario.
Saludos.
Son libres de copiar el código si quieren...
  #3 (permalink)  
Antiguo 27/03/2012, 14:27
 
Fecha de Ingreso: septiembre-2010
Mensajes: 4
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema para mostrar turnos libres...

Buenas Tardes Adri82.

Estoy queriendo realizar lo mismo que estas desarrollando una agenda de turnos, me gustaria que me puedas guiar. cuantas tablas usas para la reserva de turno. como es el calendario que usas, me podrias dar el link para bajarlo.

Gracias Adri82
  #4 (permalink)  
Antiguo 27/03/2012, 16:57
 
Fecha de Ingreso: mayo-2011
Ubicación: Córdoba Capital
Mensajes: 15
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Problema para mostrar turnos libres...

Olis Diegin, el calendario que utilicé es el que dejé en el msj original. Lo tienes más arriba.
A su vez ahí tienes los detalles de las 2 tablas que utilicé (Agenda_Turnos y Horarios_Turnos).

Suertes!
  #5 (permalink)  
Antiguo 28/03/2012, 06:47
 
Fecha de Ingreso: septiembre-2010
Mensajes: 4
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema para mostrar turnos libres...

Voy a analizar el calendario y las tablas.
Gracias por responder. estamos en contacto

Saludos

Etiquetas: mysql, registro, sql, tabla, turnos
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 10:15.