Estoy desarrollando una aplicación web basada en php, mysql y ajax. El caso es que me he creado dos select anidados, donde el 2º se actualiza dinamicamente en función del primero.
Mi intención es ampliar esto para poder poner más selects anidados que consulten una base de datos mysql, y el problema q tengo es que no se cómo obtener el valor del segundo select para poder usarlo para buscar en la base de datos.
éste es el código:
Código:
He reutilizado código encontrado por internet, ya que me estoy iniciando en php.//incluímos la clase ajax require ('xajax/xajax.inc.php'); //instanciamos el objeto de la clase xajax $xajax = new xajax(); $xajax->setCharEncoding('ISO-8859-1'); $xajax->decodeUTF8InputOn(); function select_combinado($id_provincia){ //función para crear el select combinado //debe extraer las opciones de un select a partir de un parámetro $conn=mysql_connect('console1' , 'abc', 'abc'); # or die ('Error connecting to mysql'); mysql_select_db(Inventario,$conn); $query0 = "SELECT * FROM contactos order by apellido1"; $result0 = mysql_query($query0); $query1 = "SELECT * FROM proveedores"; $result1 = mysql_query($query1); //creo las distintas opciones del select $nuevo_select = "<select name='poblaciones' onChange='javascript:mostrar_select(this.value)'>"; //for ($i=0; $i<count($poblaciones[$id_provincia]); $i++){ //for ($i=0; $i<2; $i++){ if ($id_provincia==0){ while($row0 = mysql_fetch_array($result0)){ $nuevo_select .= '<option value= "onChange='.$row0["id_nombre"].'">'.$row0["nombre"].' '.$row0["apellido1"].' '.$row0["apellido2"].'</option>'; } }elseif ($id_provincia==1){ while($row1 = mysql_fetch_array($result1)){ $nuevo_select .= '<option onChange="javascript:mostrar_select(this.value)" value= "'.$row1["id_proveedor"].'">'.$row1["nombre"].'</option>'; } }else{ $nuevo_select .= '<option value= "'.$row1["id_proveedor"].'">'.Selección.' '.incorrecta.'</option>'; } $nuevo_select .= "</select>"; return $nuevo_select; } function generar_select($cod_provincia){ //instanciamos el objeto para generar la respuesta con ajax $respuesta = new xajaxResponse('ISO-8859-1'); if ($cod_provincia==999){ //escribimos el select de poblaciones vacío $nuevo_select = '<select name="poblaciones"> <option value=0>Elegir base de datos</option> </select> '; }else{ $nuevo_select = select_combinado($cod_provincia); } //escribimos en la capa con id="seleccombinado" $respuesta->addAssign("seleccombinado","innerHTML",$nuevo_select); //tenemos que devolver la instanciación del objeto xajaxResponse return $respuesta; } function generar_select2($cod_id){ //instanciamos el objeto para generar la respuesta con ajax $respuesta = new xajaxResponse('ISO-8859-1'); $nuevo .= 'conseguido'; $respuesta->addAssign("opcion_elegida","innerHTML",$nuevo); print (nuevo); //tenemos que devolver la instanciación del objeto xajaxResponse return $respuesta; } //asociamos la función creada anteriormente al objeto xajax $xajax->registerFunction("generar_select"); $xajax->registerFunction("mostrar_select"); //El objeto xajax tiene que procesar cualquier petición $xajax->processRequests(); ?> <html> <head> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"> <title>Búsqueda de datos</title> <? //En el <head> indicamos al objeto xajax se encargue de generar el javascript necesario $xajax->printJavascript("xajax/"); ?> </head> <body> <form name="formulario"> Base de datos: <br> <select name="provincia" onchange="xajax_generar_select(document.formulario.provincia.options[document.formulario.provincia.selectedIndex].value)"> <option value="999">Seleccione una opción</option> <option value=0>Contactos</option> <option value=1>Proveedores</option> </select> <br> <br> id: <div id="seleccombinado"> <select name="poblaciones" onChange="javascript:mostrar_select(this.value)"> <option value=0>Elegir base de datos</option> </select> </div> </form> </body> </html>
Muchas gracias por vuestra ayuda