PDA

Ver la Versión Completa : capturar datos de una ventana emergente


smendo
30-11-2004, 13:01:51
Hola a todos/as

Estoy comenzando a desarrollar aplicaciones en PHP4 y me gustaria saber como resolver un problema que me ha surgido en uno de los trabajos que estoy realizando.

El caso es el siguiente:

Dispongo de una pagina php que inserta registros en una base de datos. Me interesa que en uno de los campos del formulario que han de rellenarse se dé la posibilidad de consultar de una lista el dato a introducir en dicho campo. La cuestion es que lo tengo todo (pagina de registro, enlace a pagina emergente que muestra la lista de datos, la pagina que muestra los datos a consultar, etc...) pero, y esta es mi pregunta...

¿Es posible que en la ventana emergente yo seleccione el dato (no sé a través de un enlace, o un boton auxiliar... como sea) y automáticamente se vuelque dicho dato en el campo del formulario de la pagina de registro y que además se cierre la ventana emergente que se ha abierto para la consulta previa?

El utilizar una pagina auxiliar de consulta es debido a que usar una lista desplegable en la pagina de insercion en la base de datos puede ser un poco pesado por la cantidad de elementos y el tipo de dato que habría que presentar.

Espero que hayais entendido la cuestion. Se aceptan alternativas...

Muchisimas gracias de antemano.

roman
30-11-2004, 18:00:43
Si entiendo bien tú requieres pasar datos de una ventana emergente a la ventana que la abre. Como esto ocurre en el lado del cliente me parece que es más bien una tarea para javascript que para php.

Mira este ejemplo (http://www.clubdelphi.com/users/roman/formulario.html) y ve si es lo que buscas.

En el ejemplo, el formulario consta de un cuadro de edición para escribir el código de un país y un enlace para abrir un catálogo de países desde dónde seleccionar.

Primero tenemos la página con el formulario:



<!-- formulario.html -->
<html>
<head>
<title> Formulario </title>
<script language='javascript'>
function cat_paises()
{
catPaises = window.open('paises.php', 'Paises', 'width=200,height=300');
}
</script>
</head>

<body>
<form id='frmPaises'>
<table border='0' cellspacing='0' cellpadding='4'>
<tr>
<td valign='top' rowspan='2'>Código de país</td>
<td><input type='text' name='pais_id'></td>
</tr>
<tr>
<td align='center'><a href='javascript: cat_paises()'>Seleccionar</a></td>
</tr>
</table>
</form>
</body>
</html>


El enlace llama a la función cat_paises() de javascript que se encarga de abrir la ventana emergente localizada en el archivo paises.php:



<?
// paises.php

$paises['mx'] = 'méxico';
$paises['es'] = 'españa';
$paises['ar'] = 'argentina';
$paises['gt'] = 'guatemala';

asort($paises);
?>
<html>
<head>
<script language='javascript'>
function seleccionar(codigo)
{
formulario = opener.document.getElementById('frmPaises');
formulario.pais_id.value = codigo;
close();
}
</script>
</head>

<body>
<table border='1' cellspacing='0' cellpadding='4'>
<?
foreach ($paises as $codigo => $pais)
{
print ("<tr>\n");
print (" <td><a href='javascript: seleccionar(\"$codigo\")'>$pais</a></td>\n");
print ("</tr>\n");
}
?>
</table>
</body>
</html>


Obviamente el catálogo es simulado, para el real sí usarías php pero no es la parte importante aquí.

La tabla que se construye tiene una enlace que llama a la función javascript seleccionar() pasando el código de país como parámetro. Esta función es la que se encarga de colocar el dato en el formulario y cerrar la ventana emergente.

// Saludos

smendo
01-12-2004, 11:50:29
Gracias por tu ayuda, me ha funcionado perfectamente.