PHP - un select que hace aparecer otro select

   
Vista:

un select que hace aparecer otro select

Publicado por octavio (8 intervenciones) el 02/11/2010 04:01:14
Hola amigos, tengo un problema y no se como resolverlo (SOY NOVATO EN PHP):

he creado un select que toma los datos de una DB así:

<?php
$link = mysql_connect("localhost","root","root") or die ("no se ha podido conectar con el servidor");
$db = mysql_select_db("reservas", $link) or die( "Error conexion DB");
$resultado = mysql_query("SELECT * FROM empresa", $link);
$contenido.= "<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>\n";
$contenido.= "<tr><form method=get action=\"call_user_func('lugarEmpresa', '1')\">\n";
#$contenido.= "<tc><select name=\"reserva\" class=\"boxcontent\" onChange=\"top.location.href=this.options[this.selectedIndex].value\">\n";
#$contenido.= "<tc><select name=\"reserva\" class=\"boxcontent\" onChange= echo \"call_user_func('lugarEmpresa', 'this.options[this.selectedIndex].value')>\"";
$contenido.= "<td>Seleccione una empresa: <select name=\"reserva\" class=\"boxcontent\" onClick= lugarEmpresa('1')>\"";
?>
<input type="button" onclick="lugarEmpresa('1')" value="Seleccionar">
<?php
$contenido.= "<option value=\"\">Seleccione una empresa\n";
$i=0;
#call_user_func('lugarEmpresa', '1');
while ($i < mysql_numrows($resultado)){
$nombre = mysql_result($resultado,$i, "nombre");
$id = mysql_result($resultado,$i, "id");
$contenido.= "<option value=\"$id\">$nombre\n";
$i = $i+1;
}
$content .= "</SELECT></TD></TR></FORM></TABLE><br>";
echo "$contenido";
?>

lo que quiero es que cuando se seleccione alguna opcion de la lista que aparezca debajo otroa lista desplegable (select) la cual tome los datos de la base de datos segun la opcion elegida, pense en la siguiente funcion:

function lugarEmpresa($idempresa){
echo "SELECT * FROM lugar where idempresa=\"$idempresa\"";
$link = mysql_connect("localhost","root","root") or die ("no se ha podido conectar con el servidor");
$resultado2 = mysql_query("SELECT * FROM lugar where idempresa=\"$idempresa\"", $link);
$lugaresEmpresa.= "<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>\n";
$lugaresEmpresa.= "<tr><form method=get action=\"\">\n";
$lugaresEmpresa.= "<tc><select name=\"reservalugar\" class=\"boxcontent\" onChange=\"top.location.href=this.options[this.selectedIndex].value\">\n";
$lugaresEmpresa.= "<option value=\"\">Seleccione un lugar\n";
$i=0;
while ($i < mysql_numrows($resultado2)){
$nombre = mysql_result($resultado2,$i, "nombre");
$id = mysql_result($resultado2,$i, "id");
$lugaresEmpresa.= "<option value=\"$id\">$nombre\n";
$i = $i+1;
}
$lugaresEmpresa .= "</SELECT></TD></TR></FORM></TABLE><br>";
echo "$lugaresEmpresa";
}

Pero por mas que la llame de diferentes maneras no logro hacerlo andar, PHP permite esto?, creo que no, si es así con que debo hacerlo y como ya que probe con javascript y tampoco lo logro. Desde ya muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:un select que hace aparecer otro select

Publicado por Raúl Vargas (13 intervenciones) el 02/11/2010 19:03:21
Hola Colega, creo que el problema es que tienes un error de concepto de aplicaciones web, no es el problema el lenguaje php. En una aplicación de internet o intranet, estás trabajando bajo una arquitectura cliente - servidor, en la cual se trabaja con "peticiones" del cliente a las que luego responde el servidor.

Es decir que:

primero: el cliente pide la lista de empresas. (primera pagina .php)

segundo: el servidor envía el select de las empresas.

tercero: el cliente pedirá los datos de la empresa. (a otra página .php)

cuarto: El servidor buscará los datos en particular de la empresa.

Como lo haces el php carga los dos select una vez en la página solicitada y como no hay empresa seleccionada, no te muestra nada (o puede mostrar siempre la primera).

Conclusión debes usar dos llamadas al servidor en una o dos páginas o si no debes usar AJAX para no recargar la página.

Espero te sirva.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:un select que hace aparecer otro select

Publicado por octavio (8 intervenciones) el 02/11/2010 19:27:44
y como utilizo ajax de esta forma?

podrias mostrarme con un ejemplo?

gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:un select que hace aparecer otro select

Publicado por Raúl Vargas (13 intervenciones) el 03/11/2010 04:30:56
Hola, sería bastante complicado explicarlo en pocas palabras aquí. Te recomiendo que lo más efectivo sería leer en los foros de AJAX de este mismo sitio y buscar manuales también aquí.

Te llevará unos días, pero será muy reconfortante y empezarás a entrar a la web 2.0.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:un select que hace aparecer otro select

Publicado por Leandro (10 intervenciones) el 03/11/2010 16:58:10
Te recomiendo que utilices JQuery para eso.
Entra a la web de JQuery que hay pila de ejemplos para usar con AJAX

Saludos
Leandro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:un select que hace aparecer otro select

Publicado por Raúl Vargas (13 intervenciones) el 04/11/2010 15:38:58
Apoyo la recomendación de Leandro.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar