Foros del Web » Programando para Internet » PHP »

problema con select

Estas en el tema de problema con select en el foro de PHP en Foros del Web. Hola, 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º ...
  #1 (permalink)  
Antiguo 22/07/2008, 05:48
 
Fecha de Ingreso: agosto-2005
Mensajes: 3
Antigüedad: 18 años, 6 meses
Puntos: 0
problema con select

Hola,

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:
//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>
He reutilizado código encontrado por internet, ya que me estoy iniciando en php.

Muchas gracias por vuestra ayuda
  #2 (permalink)  
Antiguo 22/07/2008, 09:10
 
Fecha de Ingreso: mayo-2005
Mensajes: 8
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: problema con select

Los datos se pasarán a la dirección donde envíes el formulario y por el metodo de envío por el que lo pases por POST ó por GET.

<div id="seleccombinado">
<select name="poblaciones" onChange="javascript:mostrar_select(this.value)">
<option value=0>Elegir base de datos</option>
</select>
</div>

$_POST['poblaciones'];
$_GET['poblaciones'];

Y el valor que pasará sera el que tenga en el value del select seleccionado.

Si lo que quieres es hacerlo por ajax para generar otro tercer select automático tendrás que volver a llamar a la función (onchange="xajax_generar_select()), pasarle el segundo select y rehacer el Php.

Yo te recomiendo que si estás empezando con Php no te metas en estos fregados con Ajax, haz selects sencillos que lo que hagan sea recargar la página tomando el nuevo valor. O que te busques un ejemplo ya con tres selects que los hay.

Un saludo.
  #3 (permalink)  
Antiguo 22/07/2008, 09:13
 
Fecha de Ingreso: mayo-2005
Mensajes: 8
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: problema con select

Aquí puedes encontrar un ejemplo de tres:

http://www.formatoweb.com.ar/ajax/select_dependientes_3_niveles.php
  #4 (permalink)  
Antiguo 23/07/2008, 05:20
 
Fecha de Ingreso: agosto-2005
Mensajes: 3
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: problema con select

La complejidad de ajax no me preocupa ya que tengo bastante experiencia en porgramación en varios lenguajes y por lo que he leido no me parece tan complejo para lo que yo lo necesito.

Muchas gracias por todo richifu, me gusta más el estilo de lo que me has pasado que de lo que yo encontré en la red
  #5 (permalink)  
Antiguo 03/09/2008, 15:56
 
Fecha de Ingreso: junio-2008
Mensajes: 4
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: problema con select

Buenas, yo se que no es una respuesta a la pregunta de este foro, pero soy un principiante en lo que concirne a xajax. Alguien me podria decir si se puede trabajar con xajas sin necesidad de usar funciones? De ser posible me podrian decir de algun tutorial donde lo expliquen?
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 07:02.