Ver Mensaje Individual
  #10  
Antiguo 26-05-2003
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.635
Reputación: 10
Emilio Va por buen camino
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.
Responder Con Cita