Usando una ventana emergente, solo tendrías que cancelar el envío del formulario y abrir una ventana emergente, añadiendo la dirección hacia la cual se enviará el dato (junto al dato concatenado en la
query string) y, en el archivo PHP, realizarás la búsqueda en la base de datos y mostrarás los resultados.
Código HTML:
Ver original<!-- En la cabecera del formulario -->
<form onsubmit = "emergente(event, this)">
Código Javascript
:
Ver originalfunction emergente (evento, form){
event.preventDefault(); //Cancelo el envío
var direccion = form.action + "?valor=" + document.form.nombreDelCampo.value;
window.open(direccion, "Búsqueda", "width=700, height=500"); //Abro una ventana emergente
}
Código PHP:
Ver original$valor = $_GET['valor'];
//A partir de acá, harás la búsqueda y mostrarás los resultados que se verán en la ventana emergente
Y si quieres usar una ventana modal, el proceso es similar, con la salvedad de que no usarás el método
window.open()
sino un contenedor que servirá como ventana modal (previamente deberás de aplicarle estilos) y tanto el envío del dato como la recepción de la respuesta la harás mediante una petición asíncrona (Ajax).
Código Javascript
:
Ver originalfunction emergente (evento, form){
event.preventDefault(); //Cancelo el envío
var direccion = form.action + "?valor=" + form.nombreDelCampo.value,
xhr = new XMLHttpRequest(); //Creo un objeto XHR (Ajax)
xhr.open(form.method, direccion, true); //Inicializo la petición
xhr.send(); //Realizo el envío
xhr.addEventListener("load", function(){ //Cuando se complete el proceso
if (xhr.status == 200){ //Si obtengo una respuesta satisfactoria
//Muestro en el contenedor la respuesta de la petición
document.querySelector("#el id del contenedor").innerHTML = xhr.responseText;
//Acá deberás de aplicar estilos en el contenedor para que se muestre como una ventana modal
}
}, false);
}
Para este segundo caso, el archivo PHP se conserva como en el primero. La respuesta a visualizarse será lo que imprimas en el archivo PHP.
Saludos