Foros del Web » Programando para Internet » PHP »

Optimizar código

Estas en el tema de Optimizar código en el foro de PHP en Foros del Web. Estoy armando una página que muestra el detalle de turnos otorgados para un día en particular. La idea es que cada vez que aparezca un ...
  #1 (permalink)  
Antiguo 18/03/2013, 01:50
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 6 meses
Puntos: 12
Optimizar código

Estoy armando una página que muestra el detalle de turnos otorgados para un día en particular. La idea es que cada vez que aparezca un turno, desde esa misma página pueda darse de baja el mismo. Esto ya lo he hecho y lo tengo funcionando con el siguiente código:

Código PHP:
<?php 
$conexion 
or die("Problemas en la conexion");
mysql_select_db("sistema",$conexion) or
  die(
"Problemas en la seleccion de la base de datos");

$consulta mysql_query("SELECT * FROM turno WHERE fecha='$fech' AND hora='09:00:00' AND habitac='1'");
$num_res mysql_num_rows$consulta ); 

if ( 
$num_res 

    while( 
$row mysql_fetch_array $consulta ) ) 
   { 
      echo 
"<input type=\"hidden\" name=\"ocu\" value=\"".$row['codigo']."\">";
      echo 
"<input type=\"image\" src=\"borrar.png\" name=\"buscar\" value=\"".$row['codigo']."\">";
      } 

?>
Todo este código está metido dentro de un form que al borrar un turno, se envía a una página que elimina el registro seleccionado. El tema es que como se ve en la consulta SQL aquí se utilizan 3 variables para determinar un turno, por lo cual la cantidad de turnos diarios es muy alta. La forma más "sencilla" supongo que sería utilizar esta misma consulta tantas veces como posibilidades de turnos haya, y eso ya quedaría funcionando. Pero me parece que tal vez se haga pesado, y además sería mucho código para lo que quiero lograr. ¿Alguien conoce un modo más fácil? ¡Muchas gracias!
  #2 (permalink)  
Antiguo 18/03/2013, 02:28
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Optimizar código

No se entiende....

Para obtener los turnos que cumplan tres restriciones no tienes mas remedio que usar las tres variables... pero para obtener p.e. los turnos de un dia quita la restricción de la hora y obtendrás TODOS los de la fecha en una sola consulta.... deberías usar ORDER BY hora (si es TIME) para que te lleguen ordenados.

Para borrar un turno usa su id y estaras seguro de borrar solo el elegido...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 18/03/2013, 09:22
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: Optimizar código

El tema es que si en un día están dados todos los turnos, estos serán más de 100. Supuse que usar las 3 variables era la única opción pero me preguntaba si no había un modo de desarrollar estas consultas con menos cantidad de código. Fíjate que si lo hago así tendré que copiar esta consulta cada vez que quiero que aparezca, y el código se va agrandando. No le veo mucho sentido a ponerle order by ya que cada consulta puede traer como resultado un solo registro como máximo (no es posible asignar 2 turnos en una misma habitación a la misma hora).
  #4 (permalink)  
Antiguo 18/03/2013, 09:39
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: Optimizar código

Hola nada mas te haré una sugerencia ya que aún estás desarrollando esta página deberías leer un poco este post para que lo tomes en cuenta

http://www.forosdelweb.com/f18/anuncio-extension-mysql-ha-sido-deprecada-1008145/

Saludos!!
  #5 (permalink)  
Antiguo 18/03/2013, 09:56
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: Optimizar código

Te agradezco, no sabía que se desaconsejaba su uso.

Etiquetas: mysql, registro, select, sql, variables
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 20:40.