Foros del Web » Programando para Internet » Javascript »

Como actualizar formulario desde una popup

Estas en el tema de Como actualizar formulario desde una popup en el foro de Javascript en Foros del Web. Hola Foro, Tengo un problemita con la actualizacion de datos de un formulario desde una ventana secundaria. La idea es que en la ventana secundaria ...
  #1 (permalink)  
Antiguo 26/07/2004, 19:26
 
Fecha de Ingreso: junio-2004
Ubicación: Ciudad de Panama
Mensajes: 551
Antigüedad: 19 años, 9 meses
Puntos: 8
Exclamación Como actualizar formulario desde una popup

Hola Foro,

Tengo un problemita con la actualizacion de datos de un formulario desde una ventana secundaria. La idea es que en la ventana secundaria se realiza una consulta sobre la base de datos y mostrar el resultado en una tabla con un campo tipo radio. Al seleccionar un registro llevar esos datos a el formulario o ventana principal. Para el efecto tengo los siguientes scripts:

Script principal:

<html>
<head>
<script languaje="javascript">
function abrirVentana()
{
var miPopup
miPopup = window.open("zona.php","miventana")
}
</script>
</head>
<body onLoad="window.name='principal'' topmargin='0' leftmargin='0'>
<form name='formulario' method='get' action='<? echo $PHP_SELF; ?>'>
<table border='0'>
<tr><td>Zona</td>
<td>Nombre</td><tr>
<td><input type=text name='zona' value='<? echo $_GET['zona']; ?>' onChange='abrirVentana()'>
<td><input type='text' name='desc_zona' value='<? echo $_GET['desc_zona']; ?>'>
</table>
</form>
</body>
</html>




El script secundario seria algo como:

<?php
// Luego de conectar a la base de datos....
$sql = "SELECT zona, desc_zona FROM zonas";
$result = $db->query($sql);
$mat_zon = $db->getAll($sql);
?>

<html>
<head>
<script languaje='javascript'>
function salir() {
}
</script>
</head>
<body topmargin='0' leftmargin='0'>
<form name='form1' action='script_que_abre_popup' target='nomre_ventana_principal'>
<table border='1'>
<tr><td>Zona</td><td>Nombre</td><tr>
<?php while($mat_zon->fetchInto($row)) { ?>
<td><input type=radio name='??????' value='?????' onClick='funcion_javascript_enviando_datos'></td>
<td><input type=text name='zona' value='<? echo $row['zona']; ?>'></td>
<td><input type='text' name='desc_zona' value='<? echo $row['desc_zona']; ?>'></td><tr>
<?php } ?>
</table>
</form>
</body>
</html>

Para este ultimo script tengo la duda de como hacer para enviar los datos a la ventana principal

Acudo a ustedes a ver si me pueden ayurar. De antemano mil gracias
  #2 (permalink)  
Antiguo 27/07/2004, 00:41
 
Fecha de Ingreso: mayo-2004
Mensajes: 75
Antigüedad: 19 años, 11 meses
Puntos: 2
Para acceder desde el popup a los campos del formulario de la otra ventana desde JavaScript puedes acceder asi

opener.formulario.zona.value="valor que quieras poner";

Teniendo en cuenta que "formulario" es el nombre del form de la primera ventana y "zona" el nombre de uno de los campos.
  #3 (permalink)  
Antiguo 27/07/2004, 12:58
 
Fecha de Ingreso: junio-2004
Ubicación: Ciudad de Panama
Mensajes: 551
Antigüedad: 19 años, 9 meses
Puntos: 8
Hola Soniagrande,

Gracias por tu respuesta... pero en caso de que sean varios campos los que quiero pasar?
Mi idea es armar una tabla html en la ventana hija con los campos seleccionados de la base de datos.

Como ejemplo: selecciono nombre, direccion, telefono de clientes (SELECT nombre,direccion, telefono FROM clientes), armo la tabla html poniendo por cada registro un input radio, al seleccionar alguna fila pasar estos datos a el formulario principal (ventana padre). Mi pregunta es: Como armo el input radio para que me muestre los datos en el formulario principal?
  #4 (permalink)  
Antiguo 28/07/2004, 00:36
 
Fecha de Ingreso: mayo-2004
Mensajes: 75
Antigüedad: 19 años, 11 meses
Puntos: 2
Supongamos que lo que tenemos es una primera ventana en la que tenemos un formulario con los siguientes datos: nombre, direccion y telefono:

Código HTML:
<form name="formulario">
<table>
<TR> 
<TD valign="top">
Nombre: <input type="text" name="nombre" value=""/>
</TD> 
<TD valign="top">
Dirección: <input type="text" name="direccion" value=""/>
</TD> 
<TD valign="top">
Teléfono: <input type="text" name="telefono" value=""/>
</TD> 
</TR> 
</table> 
queremos rellenar estos datos con los datos de un cliente que seleccionen en una ventana que abrimos como popup, esta ventana contiene una tabla con tantas filas como clientes haya almacenados, por cada cliente tenemos los datos nombre, direccion y telefono, ademas de un radio para seleccionar el cliente, ejemplo del formulario con 2 clientes:

Código HTML:
<form name="formulario">
<table>
<TR> 
<TD valign="top">
Nombre: <input type="text" name="nombre" value="nombre1"/>
</TD> 
<TD valign="top">
Dirección: <input type="text" name="direccion" value="direccion1"/>
</TD> 
<TD valign="top">
Teléfono: <input type="text" name="telefono" value="telefono1"/>
</TD> 
<TD valign="top">
<input type="radio" name="seleccionar" onClick="seleccionarCliente(0)"/>
</TD> 
</TR>
<TR> 
<TD valign="top">
Nombre: <input type="text" name="nombre" value="nombre2"/>
</TD> 
<TD valign="top">
Dirección: <input type="text" name="direccion" value="direccion2"/>
</TD> 
<TD valign="top">
Teléfono: <input type="text" name="telefono" value="telefono2"/>
</TD> 
<TD valign="top">
<input type="radio" name="seleccionar" onClick="seleccionarCliente(1)"/>
</TD> 
</TR>
</table>
</form> 
La función seleccionarCliente lo que hace es mandar los datos del cliente seleccionado a la primera ventana (la que ha abierto el popup), mediante parámetro se le dice que cliente es el que se quiere seleccionar, por eso las llamadas a esta función le pasan como parámetro un número (de 0 a n) que indica que fila es la del cliente seleccionado. Este es el código de la función que envía los datos:

Código:
function seleccionarCliente(indice){
	opener.formulario.nombre.value= document.getElementsByName("nombre")[indice].value;
	opener.formulario.direccion.value= document.getElementsByName("direccion")[indice].value;
	opener.formulario.telefono.value= document.getElementsByName("telefono")[indice].value;		
}
Espero haber entendido bien lo que querias hacer, y si no es exactamente esto, pues al menos que te sirva de inspiración
  #5 (permalink)  
Antiguo 28/07/2004, 07:53
 
Fecha de Ingreso: junio-2004
Ubicación: Ciudad de Panama
Mensajes: 551
Antigüedad: 19 años, 9 meses
Puntos: 8
Soniagrande... vos si sos grande!!!

Tan pronto llegue a la oficina aplico lo que indicas. En principio, como lo veo debe cancionar asi.
Solo un detalle que lo puedo solucionar: Al armar la tabla de los datos de la consulta en la popup lo haria con un while, un foreach, o un for.

Te agradezco inmensamente. Estare en contacto

Un saludo
  #6 (permalink)  
Antiguo 29/07/2004, 11:39
 
Fecha de Ingreso: junio-2004
Ubicación: Ciudad de Panama
Mensajes: 551
Antigüedad: 19 años, 9 meses
Puntos: 8
Hola foro,

Quiero de antemano agradecer la colaboracion de Soniagrande por indicarme la forma como podria hacer lo que he venido consultando. Al fin lo pude hacer.

Adjunto los scripts:

consulta.php:

<html>
<head>
<script languaje="javascript">
function abrirVentana() {
var ur;
ur = "zona.php?zona="+document.principal.zona.value ;
var miPopup;
miPopup = window.opwn(ur,"","width=600,height=400,menubar=no ");
}
</script>
</head>
<body topmargin="0" leftmargin="0" onLoad="window.name='principal'>
<table><tr>
<form action="<? echo $PHP_SELF; ?>" method="get" name="principal"><tr>
<table>
<td>Zona</td>
<td><input type="text" name="zona" value="" onChange='abrirVentana()'></td>
<td><input type="text" name="desc_zona" value=""></td><tr>
<td>Responsable</td>
<td><input type="text" name="responsable" value=""></td>
<td><input type="text" name="nombre" value=""></td><tr>
</table>
</form>
</table>
</body>
</html>


script para la popup (zona.php)

<?php
include 'DB.php';
include 'configuracion/abrirbd1.php';
$zona = $_GET['zona'];
$sql = "SELECT zona.*, maestro.nombre FROM zonas, maestro WHERE zona MATCHES '$zona*' AND maestro.cedula = zonas.responsable";
$result = $db->Query($sql);
$mat_zon = $db->getAll($sql);
?>

<html>
<head>
<script languaje="javascript">
function seleccionarZona(indice) {
window.opener.document.principal.zona.value = document.getElementsByName("zona")[indice].value;
window.opener.document.principal.desc_zona.value = document.getElementsByName("desc_zona")[indice].value;
window.opener.document.principal.responsable.value = document.getElementsByName("responsable")[indice].value;
window.opener.document.principal.nombre.value = document.getElementsByName("nombre")[indice].value;
window.close();
}
</script>
</head>
<body>
<form name="form1" action="consulta.php" target="principal" method="get">
<table border="1><tr>
<td></td><td>Zona</td><td>Nombre</td><tr>
<?php $i = 0;
while($result->fetchInto($row)) {
$i++;
$j = $i - 1; ?>
<td><input type="radio" name="seleccionar" onClick="seleccionarZona(<? echo $j; ?>)">
<input type="hidden" id="zona<? echo $i; ?>" name="zona" value="<? echo trim($row['zona']); ?>">
<input type="hidden" id="desc_zona<? echo $i; ?>" name="desc_zona" value="<? echo trim($row['desc_zona']); ?>">
<input type="hidden" id="responsable<? echo $i; ?>" name="responsable" value="<? echo trim($row['responsable']); ?>">
<input type="hidden" id="nombre<? echo $i; ?>" name="nombre" value="<? echo trim($row['nombre']); ?>"></td>
<td><? echo trim($row['zona']); ?></td>
<td><? echo trim($row['desc_zona']); ?></td><tr>
<? } ?>
</table>
</form>
</body>
</html>

Cordial saludo. Y por aqui volvere.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:56.