Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: NaSaRiD15 en 26 Septiembre 2008, 18:38 pm



Título: Duda con mysql.
Publicado por: NaSaRiD15 en 26 Septiembre 2008, 18:38 pm
Bueno, mi problema es el siguient, a ver si alguien me puede ayudar.
voy a poner un ejemplo para ser mas explicativo, suponganse que administro con mi programa un hotel, y si una habitacion esta ocupada en mi base de datos, no puedo darsela a otra persona.

Lo que requiero es eso, tengo dudas en como comprobar si esa habitacion figura como disponible y darsela a alguien.
Y en caso de que figure como No disponible no darsela.

Probe con mysql_num_rows($ress)>0 pero no me doy cuenta, si es esta la que tengo que usar, o capas que es una cuestion de logica, si alguien me da una mano, gracias.


Título: Re: Duda con mysql.
Publicado por: cassiani en 26 Septiembre 2008, 18:54 pm
Tan sencillo como crearle otra tabla a tu base de datos (para mi la mejor opción) una tabla con nombre "Status" por ejemplo:

------------------------------
IdStatus         Status      
------------------------------
     1         Disponible      
     2         No Disponible 
------------------------------

relacionada con la tabla "Habitaciones y a la hora de filtar, haces algo como:
Código
  1. SELECT aqui los campos que desees FROM Habitaciones WHERE IdStatus <> 2

Conociendo que el id 2 es "No Disponible", solo te listará las habitaciones desocupadas.  ;)

Obviamente, cada vez que asignes una nueva habitación, deberás cambiar el status de la misma en la base de datos.

saludos!


Título: Re: Duda con mysql.
Publicado por: NaSaRiD15 en 26 Septiembre 2008, 19:44 pm
Muchas gracias por la respuesta, voy a tener eso en cuenta, la relaciones con las tablas las puedo hacer con el INNER JOIN verdad?.

Saludos y gracias.


Título: Re: Duda con mysql.
Publicado por: cassiani en 27 Septiembre 2008, 07:28 am
No, la cláusula que mencionas solo la usaras cuando quieras combinar registros de dos o más tablas, con concordancia de valores en un campo común.

Por ejemplo: teniendo la tabla "Habitaciones" y la tabla "tStatus" y estando relacionadas (directamente en la base de datos), puedes estructurar la consulta de varias formas.

1- Haciendo una consulta sencilla:
Código
  1. SELECT IdHab,NombreHab,IdStatus FROM Habitaciones WHERE IdStatus <> 2
  2.  


El resultado seria algo así:
IdHab NombreHab IdStatus
   1        C - 25         1
   3        H - 03         1

2- Haciendo uso de la cláusula INNER
Código
  1. SELECT h.IdHab, h.NombreHab,s.tStatus FROM Habitacion AS h
  2. INNER JOIN tStatus AS s ON h.IdStatus = s.IdStatus WHERE h.IdStatus <> 2

IdHab NombreHab tStatus
    1       C - 25      Disponible
    3       H - 03      Disponible

3- etc, etc..

Pero a lo que yo me refería en el port anterior, era a que crearas una nueva tabla en tu base de datos “tStatus” y modificaras la tabla "Habitaciones" para asignar el nuevo campo foráneo y posteriormente elaborar las restricciones correspondientes, no se si me explique.

Luego las consultas es más facil filtrando.

saludos!