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\"> </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