Hola, he leido un par de veces tu pregunta y creo entender que lo que pretendes es que al introducir un valor (número de serie) en
uno de los campos de tu formulario se muestre en la celda de al lado el nombre de la máquina que corresponde a ese número de serie.
Si lo he entendido bien, yo eso lo hago abriendo una ventana que contiene un formulario de búsqueda, seleccionando el registro
que y devolviendo los valores, pero como parece ser que no quieres abrir ventanas, pudes hacerlo, aprovechando el evento OnChange
de los INPUT, OnBlur también te serviría pero tenemos que quedarnos con alguno
Lo primero es crear tu formulario.
Código PHP:
//formulario.php
<form name="bla bla.....>
<input onChange="vertexto(this.name,this.value)" type="text" name="serie" value="<? echo trim($objeto->num_serie); ?>>
<input onChange="vertexto(this.name,this.value)" type="text" name="otro_campo" value="<? echo trim($objeto->otro_campo); ?>>
<input onChange="vertexto(this.name,this.value)" type="text" name="otro_mas" value="<? echo trim($objeto->otro_mas); ?>>
<table width="100%" border="0"><tr>
<td width="33%"><span id="span_serie"><? echo trim($objeto->num_serie); ?></span></td>
<td width="33%"><span id="span_otro_campo"><? echo trim($objeto->otro_campo); ?></span></td>
<td width="34%"><span id="span_otro_mas"><? echo trim($objeto->otro_mas); ?></span></td>
</tr></table>
Aquí un botón tipo submit, a mi no me gusta usarlos para intranet, en su lugar capturo la tecla enter haciéndola pasar por
una función a la cual seteo las variables que necesite y por ultimo hago un form.submit();
Nota: que no te confunda $objeto->num_serie con el resultado de una query, $objeto se supone que previamente lo hemos creado
con $objeto New MiClase(); si no usas clases cambia $objeto->num_serie por $num_serie a pelo.
</form>
A continuación metemos un IFRAME, (ya te comentan por ahí que el IFRAME sólo funciona con IE, pero si es para Intranet no
creo que eso sea un problema.
Código PHP:
<IFRAME SCROLLING="NO" leftmargin="0" topmargin="0" marginwidth="0"
style="visibility: visible" name="idFrame"
width="100%" height="0" src="chivato.php">
</IFRAME>
como ves le damos una altura de cero y así no se verá en el formulario.
Código PHP:
<script>
function vertexto(campo,valor) {
switch (campo) {
case "serie": idFrame.location.href="chivato.php?serie="+valor; break;
case "otro_campo": idFrame.location.href="chivato.php?otro_campo="+valor; break;
case "otro_mas": idFrame.location.href="chivato.php?otro_mas="+valor; break;
}
}
</script>
Por último hacemos esta pequeña función en JavaScript que llamará al fichero chivato.php pasando una variable con un determinado valor,
que a su vez es llamada por el IFRAME.
// Fin formulario.php
// Inicio chivato.php
Este fichero será el que escribirá en en innerText de tus span.
Código PHP:
<?
if ( isset($HTTP_GET_VARS["serie"] ) { $SQL="SELECT * FROM tabla WHERE serie=$serie"; $span="span_serie"; }
if ( isset($HTTP_GET_VARS["otro_campo"] ) { $SQL="SELECT * FROM tabla WHERE otro_campo=$otro_campo"; $span="span_otro_campo"; }
if ( isset($HTTP_GET_VARS["otro_mas"] ) { $SQL="SELECT * FROM tabla WHERE otro_mas=$otro_mas"; $span="span_otro_mas"; }
Esto se puede hacer de forma más elegante pero ya me estoy alargando en la respuesta.
$result = mysql_query($SQL);
$registro = mysql_fetch_array($result);
?>
<SCRIPT>
parent.<? echo $span; ?>.innerText='<? echo $registro["NOMBRE"]; ?>';
</SCRIPT>
Y por último este miniscript es el que escribe el texto correspondiente a la máquina del número de serie introducido.
// Fin chivato.php
Espero que te sirva.
Saludos
Emilio.