Foros del Web » Programando para Internet » PHP »

ayuda con corte en IF, por favor...

Estas en el tema de ayuda con corte en IF, por favor... en el foro de PHP en Foros del Web. amigos como estan? tengo la siguiente BD, es para el alguiler de canchas, hay 2 canchas en total, y tengo estos 2 valores cargados. las ...
  #1 (permalink)  
Antiguo 24/04/2010, 21:53
 
Fecha de Ingreso: febrero-2010
Ubicación: cba
Mensajes: 203
Antigüedad: 14 años, 2 meses
Puntos: 16
ayuda con corte en IF, por favor...

amigos como estan? tengo la siguiente BD, es para el alguiler de canchas, hay 2 canchas en total, y tengo estos 2 valores cargados. las horas se cargan desde dos combobox, hora desde, hora hasta...:

id fecha hora hora2 tipo
50 20/04/2010 8:00 9:00 T
49 20/04/2010 8:00 9:00 T

Por ej, si un usuario quiere sacar la cancha de 8:30 a 9:00 NO lo tiene que dejar porque ya estan ocupadas esas canchas con ese horario, pero SI lo tiene que dejar si quiere sacar de 9:00 a 10:00 porque si estarian disponibles, mi codigo es el siguiente:

Código PHP:

$SQL1
="select * from fecha where tipo='$tipo'";
$RESULTADO1=mysql_query($SQL1);
   

while (
$FILA1=mysql_fetch_array($RESULTADO1))
{
 
    if (  (
$FILA1['hora']==$hora) || ($FILA1['hora2']==$hora2)  || ($FILA1['hora']<$hora)  ) 
{
echo 
"<div class='mensaje'>";

echo 
"No está disponible esta fecha y hora, intente de nuevo...";
echo 
"<br>";
echo 
"<br>";
echo 
"<a href='reservar.php'>Volver atrás</a>";
echo 
"</div>";
break 
1;

}

else
{
    
echo 
"<div class='mensaje'>";

echo 
"Esta fecha y hora esta disponible..."
Tengo un problema en el IF, primero pregunta si $FILA1['hora']==$hora).. si la hora desde del combo es igual a la hora desde de la BD. Despues si $FILA1['hora2']==$hora2)..si la hora2 de la BD es igual a la hora hasta del combo y por ultimo si ($FILA1['hora']<$hora) .. si la hora1 de la BD es menor que la hora desde del combo... sale que no esta disponible..

pero cuando quiero consultar la hora 9:00 a 10:00 que SI me tendria que dejar porque no ocupada me dice que no esta disponible.. entiendo que es porque la ultima condicion del if..

si alguien me dice alguna ayuda.. lo agradeceria

saludose
  #2 (permalink)  
Antiguo 24/04/2010, 23:49
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: ayuda con corte en IF, por favor...

podes sacarlo directamente con una consulta, el valor que te tiene que servir es la hora de finalizacion, y que sea el mismo dia, sabiendo a que hora termina sabes que antes va a estar ocupada, igualmente te recomendaria que registres las canchas para saber directamente que cancha es la disponible, proba con esta consulta para sacar si hay registos para las canchas, y que la cantidad sea menor a 1.

Código SQL:
Ver original
  1. SELECT * FROM posts WHERE DATE_FORMAT(hora2,'%H:%i:%s') >= DATE_FORMAT(NOW(),'%H:%i:%s')
  2. AND DATE_FORMAT(hora2,'%d-%m-%Y') = DATE_FORMAT(NOW(),'%d-%m-%Y')
  3. AND (SELECT COUNT(*) AS total FROM posts WHERE DATE_FORMAT(hora2,'%H:%i:%s') >= DATE_FORMAT(NOW(),'%H:%i:%s')) < 2

Lo que hace esta consulta es traer los rgistos que sean mayores o iguales a la hora de la consulta, y que sean del mismo dia, y que la total de registros sea menor a 2,
Si encuentra algun registro es porque hay un turno libre, en caso de no devolver ningun valor significa que no hay turnos disponibles
  #3 (permalink)  
Antiguo 25/04/2010, 00:33
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: ayuda con corte en IF, por favor...

Ahora que lo estoy viendo de nuevo posiblemente no sea lo mas adecuado pero te va a servir para investigarlo mejor
  #4 (permalink)  
Antiguo 25/04/2010, 04:01
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 11 meses
Puntos: 832
Respuesta: ayuda con corte en IF, por favor...

Hola gordot, tu código es ambiguo. Primero colocas una condicional compuesta de 3 sentencias para posteriormente colocar un solo else abajo. En otras palabras, le estás diciendo al servidor que si pasa "esto, o esto, o esto" haga una cosa y "sino" entonces haga una única otra cosa ¿te parece una instrucción bien planteada?.
  #5 (permalink)  
Antiguo 25/04/2010, 09:36
 
Fecha de Ingreso: febrero-2010
Ubicación: cba
Mensajes: 203
Antigüedad: 14 años, 2 meses
Puntos: 16
Respuesta: ayuda con corte en IF, por favor...

metacortex gracias por tus obsevaciones, yo lo que quiero hacer es que con el primer IF, controle todo lo que no tiene que haber para que no se pueda sacar un turno de nuevo con ese horario, y si no se cumple ese IF que pase al ELSE, la verdad que no le veo nada de malo.

te adjunto todo el codigo que estoy usando con sus respectivos comentarios, y gracias por tu ayuda.

Código PHP:
Ver original
  1. $fecha = $_POST['fecha6'];
  2. $hora = $_POST['hora'];
  3. $hora2 = $_POST['hora2'];
  4. $tipo = $_POST['opt'];
  5.  
  6. $hora3=strtotime($hora);
  7. $hora4=strtotime($hora2);
  8.  
  9.  
  10.  
  11.  
  12. if (($hora3>$hora4) || ($hora3==$hora4)) // pregunta si la hora de entrada es mayor a la de salida o si son iguales
  13. {
  14. echo "<div class='mensaje'>";
  15.  
  16. echo "La hora desde no puede ser mayor que la hora hasta y no iguales...";
  17. echo "<br>";
  18. echo "<br>";
  19. echo "<a href='reservar.php'>Volver atrás</a>";
  20. echo "</div>";
  21.  
  22.  include("calendar/desconectar.inc");
  23. }
  24.  
  25. else
  26. {
  27.    
  28. $SQL="select fecha,hora,hora2,tipo from fecha where fecha='$fecha' && hora='$hora' && hora2='$hora2' && tipo='$tipo'";
  29. $RESULTADO=mysql_query($SQL);
  30. $c=mysql_num_rows($RESULTADO);
  31.  
  32. if (($c==2)) // pregunta si hay dos filas exitentes en la BD, corresponden a 2 horarios cargados en esa fecha
  33. {
  34. echo "<div class='mensaje'>";
  35.  
  36. echo "No está disponible esta fecha y hora, intente de nuevo...";
  37. echo "<br>";
  38. echo "<br>";
  39. echo "<a href='reservar.php'>Volver atrás</a>";
  40. echo "</div>";
  41.  
  42.  
  43.  include("calendar/desconectar.inc");  
  44. }
  45.  
  46. else
  47.  
  48. {
  49. $SQL1="select * from fecha where tipo='$tipo'";
  50. $RESULTADO1=mysql_query($SQL1);
  51.    
  52.  
  53. while ($FILA1=mysql_fetch_array($RESULTADO1))
  54. {
  55.  
  56.     if (  ($FILA1['hora']==$hora) || ($FILA1['hora2']==$hora2)  || ($FILA1['hora']<$hora)  )
  57. {
  58. echo "<div class='mensaje'>";
  59.  
  60. echo "No está disponible esta fecha y hora, intente de nuevo...";
  61. echo "<br>";
  62. echo "<br>";
  63. echo "<a href='reservar.php'>Volver atrás</a>";
  64. echo "</div>";
  65. break 1;
  66.  
  67. }
  68.  
  69. else
  70. {
  71.    
  72. echo "<div class='mensaje'>";
  73.  
  74. echo "Esta fecha y hora esta disponible...";
  75.  
  76. echo "</div>";
  77. echo '<br>';
  78. echo "<li><b>Fecha:</b> $fecha</li>";
  79. echo '<br>';
  80. echo "<li><b>Hora:</b> $hora hs Hasta $hora2 hs</li>";
  81. echo "<form action='insertar.php' method='post' name='' id=''>";
  82. echo "<input type='hidden' name='fecha' value=$fecha>";
  83. echo "<input type='hidden' name='hora' value='$hora'>";
  84. echo "<input type='hidden' name='hora2' value='$hora2'>";
  85. echo "<input type='hidden' name='tipo' value='$tipo'>";
  86.  
  87. echo "<input type='submit' name='enviar' value='Confirmar'>";
  88.  
  89. echo "</form>";
  90.  
  91. include("calendar/desconectar.inc");
  92. break 1;  
  93. }
  94.  
  95. } // fin while
  96.    
  97. } //fin  else c==2
  98.  
  99. } // fin  else hora3>hora4

Etiquetas: favor
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 05:33.