Guía para realizar lista turnos!

¿Cómo andas?
Te comento que hemos podido pasar las variables de fecha y profesional a listaturnos.php
El problema es que no sabemos como armar la lista de turnos.
Partiendo de la base, yo puedo guardar turnos en la BD...
Lo que no se como hacer es armar la lista de acuerdo a los turnos que tengo en la BD.
La idea es armarlo de acuerdo a la hora, pero no se como hacer para situar cada turno en su hora correspondiente.
Ademas necesito que los intervalos de hora de los turnos puedan modificarse, por ejemplo que se den cada 10 0 15 min, etc. Así que no se si hacer que la lista de turnos quede fija o se arme con algún ciclo for parecido al que he realizado...
-------------------------------------
<?php
  $hora=10;
for ($i=1; $i<=15; $i++)
 {
  $hora= $hora  + 15;
  echo " 
<tr>
";
  echo " 
<td nowrap='nowrap'><a href=\"javascript:popUp('nuevo_turno.php?hora=$hora')\">Nuevo Turno</a></td>
";
  echo " 
<td width='1%'>$hora</td>
";
  echo " 
<td></td>
";
  echo " 
<td> </td>
";
  echo " 
<td> </td>
";
  echo " 
<td> </td>
";
  echo " 
<td> </td>
";
  echo " 
</tr>
";
 }
 ?>
-------------------------------------
La variable $hora lo he puesto para probar nada más, pero en realidad lo que necesito es que inicie a las 9am y termine a las 12 y luego de 16hs a 20hs, el cual es el horario del consultorio.
Entonces lo que realmente necesito es armar la tabla en base a los turnos almacenados en la bd.

1 Respuesta

Respuesta
1
Antes de seguir, necesito que me pases en modo texto la estructura de la tabla de turnos. Se que anteriormente me has pasado la estructura de tu base de datos, pero no la he abierto porque tendría que montar el entorno y demás, y tampoco ando demasiado sobrado de tiempo. Pásame el "CREATE TABLE turnos" con todos sus campos.
¿Hola carlos, como andas?
Acá te mando el código de la agenda de turnos generado por xammp
Espero que te sirva
Un abrazo
Diego
Estructura de tabla para la tabla `agenda_turno`
--
create table if not exists`agenda_turno` (
  `cod_turno` int(6) NOT NULL AUTO_INCREMENT,
  `cod_prof` int(6) NOT NULL,
  `nombre` varchar(25) COLLATE latin1_spanish_ci NOT NULL,
  `apellido` varchar(25) COLLATE latin1_spanish_ci NOT NULL,
  `fecha` date NOT NULL,
  `hora` varchar(5) COLLATE latin1_spanish_ci NOT NULL,
  `motivo` varchar(30) COLLATE latin1_spanish_ci NOT NULL,
  `tipo` varchar(15) COLLATE latin1_spanish_ci NOT NULL,
  `visita` varchar(5) COLLATE latin1_spanish_ci NOT NULL,
  PRIMARY KEY (`cod_turno`),
  KEY `cod_prof` (`cod_prof`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci AUTO_INCREMENT=2 ;
Hola carlos, recibí un correo como que me habías contestado pero cuando entro no hay nada nuevo. Debe ser un problema de todoexpertos...
Espero tu respuesta
Saludos
Diego
¿Hola carlos, como andas?, te comento que he logrado recuperar los turnos de acuerdo al día y profesional previamente almacenados.
También he probado guardar más de un turno en la misma fecha y me los trae correctamente.
El problema esta en armar la lista de turnos con los que ya se han dado y ademas aquellos que aun están disponibles, situados cada uno en su horario correspondiente.
Lo que he realizado hasta ahora es esto, pero el problema es que me lista todos los turnos directamente de la BD sin tener en cuenta el horario en que los di, ni tampoco aquellos que están libres.
Yo creo que mi problema es la forma en que la estoy encarando, pero sinceramente no se como realizarlo de otra manera
Espero tu respuesta
Saludos
Diego
----------------------------------------
<?php
require_once "/../../includes/cnx.php";
$doctor4= $_GET['doctor'];
$fecha4=$_GET['f_date'];
if ($fecha4!=""){
$fech=explode('-',$fecha4);
$fecha4=$fech[2].'-'.$fech[1].'-'.$fech[0];
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>
<body>
<table width="700" border="1" bordercolorlight="#666666" align="center" bgcolor="#FFFFFF">
<tr class="cabecera">
<td align="center" width="1%">Acci&oacute;n</td>
<td align="center">Hora</td>
<td nowrap="nowrap" align="center">Apellido</td>
<td nowrap="nowrap" align="center">Nombre</td>
<td align="center">Motivo</td>
<td align="center">Tipo</td>
<td nowrap="nowrap" align="center" width="1%">Primer visita?</td>
</tr>
<?php
 if($doctor4!="" && $fecha4!=""){
 if($doctor4 && $fecha4){
  $consulta="SELECT * FROM agenda_turno WHERE cod_prof=$doctor4 and fecha='$fecha4'";
  $turnos=mysql_query($consulta,$con);
 while($fila = mysql_fetch_array($turnos)){
  $cod_turno=$fila['cod_turno'];
  $cod_prof=$fila['cod_prof'];
  $nombre=$fila['nombre'];
  $apellido=$fila['apellido'];
  $fecha=$fila['fecha'];
  $fech=explode('-',$fecha);
  $fecha=$fech[2].'-'.$fech[1].'-'.$fech[0];
  $hora=$fila['hora'];
  $motivo=$fila['motivo'];
  $tipo=$fila['tipo'];
  $visita=$fila['visita'];
  echo " 
<tr>
";
  echo " 
<td nowrap='nowrap'><a href=\"javascript:popUp('nuevo_turno.php?hora=$hora')\">Nuevo Turno</a></td>
";
  echo " 
<td width='1%'>$hora</td>
";
  echo " 
<td>$apellido</td>
";
  echo " 
<td>$nombre</td>
";
  echo " 
<td>$motivo</td>
";
  echo " 
<td>$tipo</td>
";
  echo " 
<td>$visita</td>
";
  echo " 
</tr>
";
}
}
}
 ?>
</table>
</body>
</html>
-----------------------------------------------------------
Con esto eh logrado que me muestre el turno guardado de acuerdo al doctor y la fecha, el tema es cuando tengo varios turnos en el mismo día y ademas ver que los turnos se dan de 8:00 a 12:30 y de 16:00 a 20:00 hs...
Desde ya muchísimas gracias por tu ayuda, me ha sido de mucha utilidad.
Emanuel...
En la tabla de turnos no veo por ningún lado una hora de finalización del turno, o una duración en minutos del turno. Sin eso, no se pueden calcular huecos libres ni nada. Deberías tener un campo "horafin" dentro de la tabla de turnos. En el momento de dar de alta un turno, deberás validar que el intervalo de horas escogido es válido (que horaini no sea inferior a 08:00, que horafin no sea superior a 22:00, y que ni horaini ni horafin están entre las 12:30 y las 16:00). Lo que también sería bueno es que si elige por ejemplo un turno de 12:00 a 22:00, divida automáticamente ese turno en dos: uno de 12:00 a 12:30 y otro de 16:00 a 20:00 para el mismo doctor.
Cuando tengas eso implementado, te propongo una manera de presentar los turnos. Se basa en pintar primero una tabla sin datos, con todos los huecos vacíos, y luego, con los datos recuperados de la BBDD, mediante javascript, vas rellenando las filas de la tabla con los turnos recuperados.
¿Hola carlos, como andas?
Gracias por las observaciones. Tienes razón sin el horario de finalización nunca podía saber la hora de finalización entre turno y turno.
Seguiré desarrollando la agenda y cuando tengo otras dudas te contacto
Saludos
Nos vemos en la próxima
Diego

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas