Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Llenar varios textbox a partir de un listbox

Estas en el tema de Llenar varios textbox a partir de un listbox en el foro de PHP en Foros del Web. He estado quebrandome la cabeza para hacer esto, sé que ya varios lo han hecho pero no he encontrado un ejemplo o una guia, asi ...
  #1 (permalink)  
Antiguo 06/09/2013, 13:16
Avatar de ruxee
Usuario no validado
 
Fecha de Ingreso: agosto-2002
Ubicación: USA
Mensajes: 131
Antigüedad: 22 años, 2 meses
Puntos: 7
Exclamación Llenar varios textbox a partir de un listbox

He estado quebrandome la cabeza para hacer esto, sé que ya varios lo han hecho pero no he encontrado un ejemplo o una guia, asi que les agradeceré una ayudita.

En un formulario tengo un listbox (select) que lleno a partir de un recordset que viene de una tabla de MySQL con clientes.

La idea es que segun la opción que seleccionen llenen los textbox con dirección, ciudad, codigo postal y pais.

Aqui pongo el codigo que me carga exitosamente los clientes al select.
Código PHP:
<select name="LSTcliente" id="LSTcliente">
   <option value="0" selected="selected">Select one</option>
   <?php $cliente="SELECT id_cliente,
    nombre,
    direccion,
    ciudad,
    estado,
    zipcode,
    pais
   FROM clientes ORDER BY nombre"
;
   
$res_cliente mysql_query($cliente);
   while(
$rcliente mysql_fetch_array($res_cliente)){?>
      <option value="<?php echo $rcliente['id_cliente'];?>"><?php echo $rcliente['nombre'];?></option>
   <?php }?>
</select>
Gracias
  #2 (permalink)  
Antiguo 11/09/2013, 13:18
Avatar de ruxee
Usuario no validado
 
Fecha de Ingreso: agosto-2002
Ubicación: USA
Mensajes: 131
Antigüedad: 22 años, 2 meses
Puntos: 7
Respuesta: Llenar varios textbox a partir de un listbox

Gracias por la visitas.

Estoy seguro que alguien lo preguntó también, sin embargo no obtuve respuesta. De alguna manera se me ocurrió algo, que tambien estoy seguro ha de existir otro codigo mas eficiente. Sin embargo les comparto mi solución.
  1. Definí una variable con el query que va a traer el listado de clientes, a la cual le asigno dos recordset, uno para el java y el otro para el select.
    Código PHP:
    <?php $sql_cliente="SELECT id_cliente,
        nombre,
        direccion,
        ciudad,
        estado,
        zipcode,
        pais
    FROM clientes 
    WHERE activo=1
    ORDER BY nombre"
    ;
    $res_sql_cliente mysql_query($sql_cliente);
    $arr_cliente mysql_query($sql_cliente);?>
  2. Abrí un tag con Javascript donde creo 6 arreglos (vectores). Esto porque debo llenar 6 textbox segun lo que seleccionen en el listbox. Observen que no cierro el tag <script> todavía.
    Código HTML:
    <script language="javascript">
    	/* llenando el arreglo de clientes */
    	var cliente = new Array();
    	var direccion = new Array();
    	var ciudad = new Array();
    	var estado = new Array();
    	var zipcode = new Array();
    	var pais = new Array();
    
  3. Con el while que recorre el recordset del query voy haciendo echo con texto que contiene el llenado de los arreglos Javasccript.
    Código PHP:
    $i=0;
    while(
    $row_arrclie mysql_fetch_array($arr_cliente)){
        echo 
    "cliente[".$i."]='".$row_arrclie['id_cliente']."';\n";
        echo 
    "direccion[".$i."]='".$row_arrclie['direccion']."';\n";
        echo 
    "ciudad[".$i."]='".$row_arrclie['ciudad']."';\n";
        echo 
    "estado[".$i."]='".$row_arrclie['estado']."';\n";
        echo 
    "zipcode[".$i."]='".$row_arrclie['zipcode']."';\n";
        echo 
    "pais[".$i."]='".$row_arrclie['pais']."';\n";
                    
        
    $i++;} 
  4. Cierro el javascript, con esto he creado los arreglos del lado del navegador trayendolos desde la base de datos.
    Código HTML:
    /* fin del llenado del arreglo de clientes */
    </script> 
  5. Con un segundo recordset asignado anteriormente vuelvo a recorrer la consulta y lleno el listbox.
    Código HTML:
    <select name="LSTcliente" id="LSTcliente" onchange="MuestraInfo(this.value)">
          <option value="0" selected="selected">Select one</option>  
              <?php while($row_cliente = mysql_fetch_array($res_sql_cliente)){?>
              	<option value="<?php echo $row_cliente['id_cliente'];?>" <?php if($row_cliente['id_cliente']==$row_shoppingcart['cliente']){echo 'selected="selected"';}?> ><?php echo $row_cliente['nombre'];?></option>
              <?php }?>
            </select> 
  6. Cuando creo el select del listbox en el evento OnChange le asigno la funcion javascript que actualizará los textobox
    Código HTML:
    <select name="LSTcliente" id="LSTcliente" onchange="MuestraInfo(this.value)"> 
  7. Creo la funcion Javascript, donse recorro los vectores y extraigo los datos del que contiene el codigo de cliente igual al seleccionado, y en la misma posicion al resto de vectores.
    Código HTML:
    <script language="javascript">
    function MuestraInfo(IdSelect){	
    	for(var x=0; x<cliente.length; x++){
    		if(cliente[x]==IdSelect){
    			document.FRMcheckout.TXTdireccion.value = direccion[x];
    			document.FRMcheckout.TXTciudad.value = ciudad[x];
    			document.FRMcheckout.TXTestado.value = estado[x];
    			document.FRMcheckout.TXTzipcode.value = zipcode[x];
    			document.FRMcheckout.TXTpais.value = pais[x];
    		}
    	}
    	return;
    }</script> 

Al final funciona de maravilla, cada vez que seleccionan un cliente me llena las casillas de direccion, ciudad, estado, zipcode y pais inmediatamente.

Espero les sirva.

Etiquetas: listbox, llenado, select
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 18:31.