Foros del Web » Programando para Internet » PHP »

Problema anidacion consulta

Estas en el tema de Problema anidacion consulta en el foro de PHP en Foros del Web. esta es mi consulta Código PHP: $query  =  "SELECT * FROM bookings WHERE ((the_date='"  .  $_POST [ 'the_date' ] .  "' and id_item='" .  $_POST [ 'id_item' ] .  "')  AND ((horario='" .  $_POST [ ...
  #1 (permalink)  
Antiguo 13/10/2010, 10:27
 
Fecha de Ingreso: septiembre-2010
Mensajes: 92
Antigüedad: 14 años, 2 meses
Puntos: 1
Pregunta Problema anidacion consulta

esta es mi consulta
Código PHP:
$query "SELECT * FROM bookings WHERE ((the_date='" $_POST['the_date'] . "' and id_item='"$_POST['id_item'] . "') 
AND ((horario='"
$_POST['horario'] . "' or horario='Completo')) OR (( the_date='" $_POST['the_date'] . "' and id_item='"$_POST['id_item'] . "' and horario='Manana') AND (the_date='" $_POST['the_date'] . "' and id_item='"$_POST['id_item'] . "' and horario='Tarde'))"
Lo que quiero conseguir es que al realizar la reserva se pueda elegir Mañana o tarde, y que cuando haya ya elegido mañana y tarde de un mismo dia no me deje hacer una reserva con "dia completo".

Muchas gracuias
  #2 (permalink)  
Antiguo 13/10/2010, 11:15
 
Fecha de Ingreso: septiembre-2010
Mensajes: 92
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema anidacion consulta

Voy a intentarlo por otro metodo peor me dice aunque ya este de mañana y lo coja de tarde que no esta disponible...

graciasss

Código PHP:
         if($resultado mysql_query($query)){        
            if((
mysql_num_rows($resultado) != 0) and (($horario ='Completo') or ($horario='Manana'))) {
            
                
                        echo 
"<script language='javascript'>window.location.href='nodisponible.php'</script>"
  #3 (permalink)  
Antiguo 13/10/2010, 11:19
Avatar de egepe  
Fecha de Ingreso: diciembre-2009
Mensajes: 310
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: Problema anidacion consulta

Creo que en el primer select te falto un ")" al final. Más allá de la lógica de tu consulta claro

tienes: 7 parentesis para abrir y 6 parentesis de cerrar
  #4 (permalink)  
Antiguo 13/10/2010, 11:26
 
Fecha de Ingreso: octubre-2010
Mensajes: 29
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problema anidacion consulta

Código MySQL:
Ver original
  1. $query = "SELECT * FROM bookings WHERE (
  2.                                        (the_date='" . $_POST['the_date'] . "' and id_item='". $_POST['id_item'] . "')
  3.                                         AND ((horario='". $_POST['horario'] . "' or horario='Completo')
  4.                                        )
  5.                                  OR (
  6.                                        ( the_date='" . $_POST['the_date'] . "' and id_item='". $_POST['id_item'] . "' and horario='Manana')
  7.                                         AND (the_date='" . $_POST['the_date'] . "' and id_item='". $_POST['id_item'] . "' and horario='Tarde')
  8.                                      )
  9. )";

Creo que con esa "identacion" .. se ve .. algo mejor la logica ... y claro como dijeron arriba solo te falto un ")"... que cerrara el WHERE .. :)
saludos
  #5 (permalink)  
Antiguo 14/10/2010, 00:48
 
Fecha de Ingreso: septiembre-2010
Mensajes: 92
Antigüedad: 14 años, 2 meses
Puntos: 1
Pregunta Respuesta: Problema anidacion consulta

Cita:
Iniciado por ditin Ver Mensaje
Código MySQL:
Ver original
  1. $query = "SELECT * FROM bookings WHERE (
  2.                                        (the_date='" . $_POST['the_date'] . "' and id_item='". $_POST['id_item'] . "')
  3.                                         AND ((horario='". $_POST['horario'] . "' or horario='Completo')
  4.                                        )
  5.                                  OR (
  6.                                        ( the_date='" . $_POST['the_date'] . "' and id_item='". $_POST['id_item'] . "' and horario='Manana')
  7.                                         AND (the_date='" . $_POST['the_date'] . "' and id_item='". $_POST['id_item'] . "' and horario='Tarde')
  8.                                      )
  9. )";

Creo que con esa "identacion" .. se ve .. algo mejor la logica ... y claro como dijeron arriba solo te falto un ")"... que cerrara el WHERE .. :)
saludos
Tengo un problema, con esta consulta no consigo lo que quiero.
Veréis, necesito que cuando vaya a reservar un día , si ese día esta libre, me deje los tres estados, mañana o tarde o día completo.
Si ya esta la mañana, por ejemplo, necesito que me deje la tardem pero no el día completo, y viceversa con la tarde.
Y si hay dos registros de la misma fecha y el mimso id_item, que no me deje reservar el día completo tampoco.

Es decir, sería algo asi como que si existe registro, que ya no me deje reservar con la opción de 'Día completo'.

Muchas gracias
  #6 (permalink)  
Antiguo 14/10/2010, 01:11
 
Fecha de Ingreso: septiembre-2010
Mensajes: 92
Antigüedad: 14 años, 2 meses
Puntos: 1
Pregunta Respuesta: Problema anidacion consulta

y con algo así funcionaría??


Código PHP:
$query "SELECT * FROM bookings WHERE 
the_date='" 
$_POST['the_date'] . "' and id_item='"$_POST['id_item'] . "'";



if(
$resultado mysql_query($query)){ 
if((
mysql_num_rows($resultado) != 0) && (($tiempo'Completo') or ($horario $tiempo))) {


............. 
La variable tiempo ya esta declarada antes como $tiempo=($_POST['horario']);


Muchas gracias

Última edición por ommm; 14/10/2010 a las 01:20
  #7 (permalink)  
Antiguo 14/10/2010, 03:50
 
Fecha de Ingreso: septiembre-2010
Mensajes: 92
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema anidacion consulta

Con el código qu he puesto antes, no me mira si es para tarde o mañana, simplemente cuenta que hay un registro y no me deja reservar.
Gracias
  #8 (permalink)  
Antiguo 15/10/2010, 13:31
 
Fecha de Ingreso: septiembre-2010
Mensajes: 92
Antigüedad: 14 años, 2 meses
Puntos: 1
Pregunta problema logica de consulta php sql

Aún sigo con mi problema :S:S mi consulta es la siguiente

Código PHP:
$query "SELECT * FROM bookings WHERE 
the_date='" 
$_POST['the_date'] . "' and id_item='"$_POST['id_item'] . "'";



if(
$resultado mysql_query($query)){ 
if((
mysql_num_rows($resultado) != 0) and (($horario'Completo') or ($horario $tiempo))) { 

La variable $tiempo ya esta declarada como el valor del formulario del horario.

Creo que los problemas son los parentesis...
Lo que intento hacer es lo siguiente:

1º-Que mire en la consulta si hay algun registro
2º- Para que se cumpla el if tiene que darse también ( que el horario sea el que ha puesto el usuario en el formulario ) ó ( el horario sea completo)


Muchas gracias,

:D

Etiquetas: anidacion, consulta, logica, sql
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 18:47.