Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Desabilitar option de un select segun mysql

Estas en el tema de Desabilitar option de un select segun mysql en el foro de Bases de Datos General en Foros del Web. Hola a todos! tengo un formulario de reserva de habitaciones, hecho en php y msql. Y tiene un Select en el que pone el tipo ...
  #1 (permalink)  
Antiguo 04/09/2009, 14:29
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 10 meses
Puntos: 3
Desabilitar option de un select segun mysql

Hola a todos!

tengo un formulario de reserva de habitaciones, hecho en php y msql.
Y tiene un Select en el que pone el tipo de habitacion para elegir (Individual, Doble, Triple). A su vez en una base de datos tengo dos columnas que se llaman por cada habitacion, se llaman "Habitaciones Individual Disponibles" y "Habitaciones Individuales Solicitadas", etc...

Cada vez que alguien se incribe se suma una en por ejemplo "Habitaciones Individuales Disponibles". Ahora bien imaginemos que las Individuales solicitadas llegan a 10, y en las Individuales Disponibles hay 10.

¿Podria hacer desaparecer la opcion de la Habitacion Individual en el Select?
Obiamente para que nadie pueda solicitarla mas.
Este es mi codigo, por favor darme el codigo hecho, que soy un novato en programación :)

Código PHP:
<select name="habita">
<
option value="Habitación Individual"'.$chk_habita1.'>'.$</option>
<option value="Habitación Doble"'
.$chk_habita2.'>Habitación Doble</option>
<option value="Habitación Triple"'
.$chk_habita3.>Habitación Triple</option></option>
</
select
  #2 (permalink)  
Antiguo 08/09/2009, 08:18
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Desabilitar option de un select segun mysql

Hola
Pues con un if podrías hacerlo
Necesitarias traer esa columna en donde sumas cada vez y hacer algo asi

<select>
Código PHP:
<?php
if( $solicitadasindividuales 10 ){
echo 
'<option value="Habitación Individual"'.$chk_habita1.'>'.$</option>;
}
?>
</select>

y lo mismo con las demás opciones que necesites
Saludos
P.D: No te puse todo el codigo hecho, pero seguro con eso te defiendes!!
  #3 (permalink)  
Antiguo 08/09/2009, 16:19
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Desabilitar option de un select segun mysql

gracias por tu codigo, pero como dije soy bastante novato, y no entiendo como conecta este código con la base de datos, me da la impresión que lo que has puesto es para hacerlo de forma manual ¿verdad?
¿Podrias indicarme como hacerlo para que tenga un sentencia mysql?

deberia consultar a la columna "Habitaciones Individual Disponibles" y si es igual que "Habitaciones Individuales Solicitadas" que desaparezca el option.


bueno claro, en lenguaje sql


gracias por tu tiempo.
  #4 (permalink)  
Antiguo 08/09/2009, 21:33
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
De acuerdo Respuesta: Desabilitar option de un select segun mysql

Hola
Bueno, pues no pense que fueras tan novato
Entremos pues en materia
En primera, me tome el atrevimiento de hacer un aproximado de lo que tienes,
e hice esta tabla con estos datos
Código:
create table habitaciones (id int(3) primary key auto_increment, tipo_habitacion varchar(25) not null, disponibles varchar(3) not null, solicitadas varchar(3) not null);
insert into habitaciones (tipo_habitacion, disponibles, solicitadas) values
('Individual','10','5'),
('Doble','10','6'),
('Triple','10','10');
Y en php hice esto
Código PHP:
<?php
  $server 
"localhost";
  
$user "test";
  
$password "test";
  
$db "test";
  
$conection mysql_connect($server,$user,$password);//localhost es tu servidor
  
mysql_select_db($db);
  
//Como ves, en la consulta hago de una vez la validacion entre disponibles y solicitadas para que incluso ni la traiga
  
$query mysql_query("SELECT id, tipo_habitacion FROM habitaciones WHERE disponibles < solicitadas");
    if( 
mysql_num_rows($query) > ){
      echo 
"<select>";
      while( 
$result mysql_fetch_array($query) ){
        echo 
"<option value = ".$result['0'].">".$result['1']."</option>";
      }
     echo 
"</select>"
    }else{
        echo 
"No hay datos";
    }
?>
Bueno, como verás hago un where en la consulta para decirle que si las disponibles son menores que las solicitadas traiga datos, de lo contrario no, y ya con eso incluso desde la base de datos validamos lo que querias

Como resultado, tendrás el select sin la habitación Triple pues esta ya ha llegado a su tope de disponibles (yo maneje disponibles las que se pueden pedir y solicitadas las que piden)

Prueba con eso y nos comentas
Saludos
  #5 (permalink)  
Antiguo 09/09/2009, 12:37
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Desabilitar option de un select segun mysql

Vaya que pena no haberte dado antes la estructura de mi tabla, llevo dos horas intentando amoldarlo a tu ejemplo pero algo se me escapa.

mi tabla es asi
Código:
CREATE TABLE IF NOT EXISTS `20091009fechas` (
  `id` bigint(20) NOT NULL auto_increment,
  `fecha` varchar(100) NOT NULL default '0000-00-00',
  `Individual_disponibles` int(11) NOT NULL default '0',
  `Individual_solicitadas` int(11) NOT NULL default '0',
  `dobles_disponibles` int(11) NOT NULL default '0',
  `dobles_solicitadas` int(11) NOT NULL default '0',
  `triples_disponibles` int(11) NOT NULL default '0',
  `triples_solicitadas` int(11) NOT NULL default '0',
  KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC COMMENT='alojamiento' AUTO_INCREMENT=25 ;

--
-- Volcar la base de datos para la tabla `20091009fechas`
--

INSERT INTO `20091009fechas` (`id`, `fecha`, `Individual_disponibles`, `Individual_solicitadas`, `dobles_disponibles`, `dobles_solicitadas`, `triples_disponibles`, `triples_solicitadas`) VALUES
(1, '4 Diciembre', 10, 3, 10, 5, 10, 8),
(2, '5 Diciembre', 10, 3, 10, 5, 10, 8),
(3, '6 Diciembre', 10, 3, 10, 5, 10, 8),
(4, '7 Diciembre', 10, 3, 10, 5, 10, 8);
Como hay varias fechas, bastaria con que si la primera fila (la que tiene fecha de 4 Diciembre) cumple la condición desapareciera el option.

gracias!
  #6 (permalink)  
Antiguo 09/09/2009, 20:18
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Desabilitar option de un select segun mysql

Hola
Pues cambiaria el query entonces así
Código PHP:
$query mysql_query("SELECT id, fecha FROM 20091009fechas WHERE Individual_solicitadas < Individual_disponibles"); 
Si le pones entonces 10 a Individual_solicitadas de la fecha 4 de diciembre, esta ya no sera visible en el select

Sin embargo, veo que se iria sin importar si en esa fecha las demás si estan disponibles (es decir, los otros tipos de habitación)

No se si este bien , o si así lo quiere tu cliente, el caso es que yo mejoraría
el modelo de la base de datos y usaría un select inicial para que se escoja el tipo
de habitación, y luego alimentaria otro select con las fechas disponibles para esa habitación y ahi si haría la validación que quieres, esto pensando en los otros tipos de habitaciones

Bueno, prueba entonces eso y nos cuentas
Saludos
  #7 (permalink)  
Antiguo 10/09/2009, 03:55
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Desabilitar option de un select segun mysql

muy buenas,
pues tras unas horillas me he dado cuenta (corrigeme sin no es asi), de que el query sería la siguiente:


Código PHP:
SELECT Individual_disponibles-Individual_solicitadas FROM 20091009fechas where fecha='4 Diciembre' 


por el query que me has dado sale una tabla con todos los id y fechas...

Pero incluso cuando hago el arreglo que te acabo de comentar y estando las habitaciones disponibles a 10 y las solicitadas a 5. Me sale el select en blanco.

¿que crees que hago mal?



PD: gracias por tu consejo de hacer cambios en la estructura, pero creo que es demasiado tarde pues tenia que haber entregado antes de ayer y además me faltan conocimientos :(
Por cierto no se si se puede pero incluso podria darte mi FTP del formulario, así no te mareo con tantas preguntas.

Muchas gracias por tu constante apoyo.

Última edición por manupalaya; 10/09/2009 a las 05:11
  #8 (permalink)  
Antiguo 10/09/2009, 14:39
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Desabilitar option de un select segun mysql

Bueno pues ya esta solucionado!
gracias a mortiprogramador, por su ayuda fiel. Una persona me ayudo con un codigo, lo he probado y funciona, lo voy a escribir por si a alguien le puede ayudar.

A continuación muestro los famosos select, cuyos option desaparecen, cuando las Habitaciones Solicitadas, son iguales que las Habitaciones Disponibles de esta manera un Usuario no podria escoger habitaciones de un tipo concreto si estan agotadas.
Código PHP:

// Ocultar Option de un Select con PHP y Mysql, si esta agotada una habitacion

$sqlIndividual="SELECT Habiaciones_Disponibles_Individual - Habiaciones_Solicitadas_Individual as diferencia FROM 20091009fechas WHERE fecha='4 Diciembre'";
$rsIndividual=mysql_query($sqlIndividual);
$resTIndividual=mysql_result($rsIndividual,0,0);

$sqlDoble="SELECT Habiaciones_Disponibles_Doble - Habiaciones_Solicitadas_Doble as diferencia FROM 20091009fechas WHERE fecha='4 Diciembre'";
$rsDoble=mysql_query($sqlDoble);
$resTDoble=mysql_result($rsDoble,0,0);

$sqlTriple="SELECT Habiaciones_Disponibles_Triple - Habiaciones_Solicitadas_Triple as diferencia FROM 20091009fechas WHERE fecha='4 Diciembre'";
$rsTriple=mysql_query($sqlTriple);
$resTTriple=mysql_result($rsTriple,0,0);

// seria mejor tenerlo todo en un array y recorrerlo, pero vamos a
hacerlo 'a mano'....

echo 
'
<select name="habita"> '
;
if (
$resTIndividual 0)
  echo 
'<option value="Habitación Individual"'.$chk_habita1.'>Habitación Individual</option>';
if (
$resTDoble 0) echo '<option value="Habitación Doble"'.$chk_habita2.'>Habitación Doble</option>'
if (
$resTTriple 0) echo '<option value="Habitación Triple"'.$chk_habita3.'>Habitación Triple</option>';

echo 
'
  '
;

// FIN 

Saludos
  #9 (permalink)  
Antiguo 10/09/2009, 22:02
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Desabilitar option de un select segun mysql

Hola
Bueno, pues en primera de nada, para eso estamos!
Y pues yo pense que no solo lo necesitabas con el 4 de diciembre sino con otras fechas pues pensando a futuro y por eso se te repetian, podrias haber usado el mio agregando un AND a la consulta, así
$query = mysql_query("SELECT id, fecha FROM 20091009fechas WHERE Individual_solicitadas < Individual_disponibles AND fecha = '4 Diciembre' "); y asi para los demás, pero bueno, lo que hay es maneras de hacerlo
Suerte
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 14:16.