Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/09/2013, 13:18
Avatar de ruxee
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.