Ver Mensaje Individual
  #5 (permalink)  
Antiguo 02/08/2008, 13:00
soliel
 
Fecha de Ingreso: agosto-2008
Mensajes: 1
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Input TEXT dependiente de un SELECT

Aunque un poco tarde pero tb se puede hacer usando XML y AJAX
aca va como hize yo:
primero la interfaz,

// con this.value capturo el valor elegido del select:
<select id="seleccionar" onChange="traerDatos(this.value);" >
<option value = "articulo1"> articulo1 </option>
<option value = "articulo2"> articulo2 </option>
<option value = "articulo3"> articulo3 </option>
</select><br/>
<input type="text" name="precio" id="precio"/><br/>
<input type="text" name="cantidad" id="cantidad"/>

luegos las funciones en javascript:

<script language="javascript" type="text/javascript">
function nuevoAjax()
{
var xmlhttp=false;
try
{
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E) { xmlhttp=false; }
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); }

return xmlhttp;
}

function traerDatos(art)
{

var cod=art;
var campo1=document.getElementById("precio");
var campo2=document.getElementById("cantidad");

var ajax=nuevoAjax();

//se puede enviar por GET el articulo tambien en este caso elegi POST
// ajax.open("GET", "ej2.php?"+"arti="+cod, true);
// ajax.send(null);

ajax.open("POST", "ej2.php", true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send("artic="+cod);

ajax.onreadystatechange=function()
{
if (ajax.readyState==4)
{
if(ajax.status==200) {

var respuesta=ajax.responseXML;
campo1.value=respuesta.getElementsByTagName("preci ounit")[0].childNodes[0].data;
campo2.value=respuesta.getElementsByTagName("canti dad")[0].childNodes[0].data;
}else{
alert("Estado: " + ajax.status + "\nMotivo: " + ajax.statusText);
}
}
}
}

por ultimo el archivo ej2.php q tiene la consulta a la BD para obtener las propiedades relacionadas al articulo elegido:

<?php
$v=$_POST["artic"];

//$v=$_GET['arti']; esta opcion si es enviada por GET


$enlace = mysql_connect("localhost", "root", "");
$db_seleccionada = mysql_select_db("tienda", $enlace);

$resultado=mysql_query("SELECT preciounit, cantidad FROM articulo WHERE descripcion='$v'");

$registro=mysql_fetch_row($resultado);

$xml="<?xml version='1.0' encoding='ISO-8859-1'?>";
$xml.="<datos>";
$xml.="<preciounit><![CDATA[$registro[0]]]></preciounit>";
$xml.="<cantidad><![CDATA[$registro[1]]]></cantidad>";
$xml.="</datos>";
header("Content-type: text/xml");
echo $xml;
mysql_close ($enlace);
?>

espero le sirva a alguien...