Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/04/2008, 12:38
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 10 meses
Puntos: 574
Re: script para un formulario

Uff, largo de explicar....

Si solo quieres mostrar el precio, por que no ponerlo en el literal de las opciones del select?

Código PHP:
function llopcions($reg){
     
$txtOpcio$reg["descripcio"]  
          . 
str_repeat(".",58-strlen($reg["descripcio"])
             -
strlen(number_format(str_ireplace(",",".",$reg["pvp"]),2,",",".")))
          . 
number_format(str_ireplace(",",".",$reg["pvp"]),2,",",".");
     
$llops.= "<option value=\"" $reg["idproducte"] . "\">".$txtOpcio ."</option>\n";
    return 
$llops;

donde $reg es un row devuelto por mysql, esto te mostrara la descripcion (en tu caso nombre) del producto y el precio (en mi caso PVP) todo bien formateado con puntitos entre el nombre y el preció (debes usar currier para que quede bien justificado).

Para hacerlo como dices tu necesitas bastante javascript... yo lo hice guardando los datos de todos los productos en un array javascript y con el evento onChange del select llamo una funcion javascript que lee el array y muestra el precio ...

Código PHP:
<?php
function llmatriu($reg){
     
$matriu $matriu "matriuPreus["$reg["idproducte"] ."]=new Array(4);\n"
                  
"matriuPreus["$reg["idproducte"] ."][0]="
                       
$reg["idproducte"] . ";\n"
                  
"matriuPreus["$reg["idproducte"] ."][1]='"
                       
$reg["descripcio"] ."';\n"
                  
"matriuPreus["$reg["idproducte"] ."][2]="
                       
str_ireplace(",",".",$reg["pvp"]) . ";\n"
                  
"matriuPreus["$reg["idproducte"] ."][3]="
                       
str_ireplace(",",".",$reg["tdiva"]) . ";\n";
    return 
$matriu;
}
?>
<select name="item2" tabindex="0" id="item2" onChange="javascirpt:mostrapreu("2")" onMouseWheel=return(false)>

<?php echo "<script type=\"text/javascript\">\n" $matriu"</script>\n";
                echo 
"<option value=\"0\">&nbsp;</option>\n"$llops 
?>
        </select>
Estoy pengando las partes de codigo que creo que te pueden dar pistas...

La idea es que desde php igual que escribes las options del select escribas el javascript que crea la matriz con los datos de los productos, cuando el cliente recibe la pagina interpreta el javascript y ya tenemos la matriz del lado cliente creada y con los datos. Desde onChange del selet llamamos una funcion javascript que lea la matriz y muestre los datos:


Código:
function mostrapreu(item){
   var ops=document.getElementById("item" + item);//<-- selecciona el select
   var index=ops.options[ops.selectedIndex].value;//<--lee el valor seleccionado
   document.getElementById("precio" + item).value=matriuPreus[index][2];
          //Finalmente muestra el precio en el campo con id "precioX" leyendo la
          //columna 2 de la fila "index" que es igual al identificador del producto
}

Bueno no se si te habre liado mas de lo que estabas.... cualquier cosa pregunta, mi codigo original a parte de desordenado hace mas cosas por eso no te lo paso. En el apartado "ORDINADORS" de http://www.iscinformatica.cat

puedes verlo en funcionamiento.


Quim

Última edición por quimfv; 03/04/2008 a las 12:46