Duda Javascript PHP MySQL

Hola Krlos, estoy teniendo problemas para plantear unos formularios en mi web. La aplicación permite registrar "obras" para diferentes constructoras, cada una de las obras implica registrar una serie de usuarios (6 usuarios diferentes) y es ahí donde tengo mi problema.
Básicamente en la página de registro de los usuarios de la obra, tengo 6 forms con los campos típicos de registro, pero para aligerar el trabajo a los usuarios quisiera emplear ajax o javascript para volcar los datos de los usuarios en caso de que ya estén registrados en mi Base de Datos.
El caso es que tengo 6 inputs en cada uno de los forms, uno de ellos es el DNI que ademas es clave única en la Base de Datos, y quería recuperar el Dni que me escriba el usuario, y en caso de que exista rellenar automáticamente el resto de los 5 campos de dicho usuario, y en caso contrario permitir proceder al registro.
Espero que me pueda echar una mano, ya que es mi proyecto final de carrera y estoy teniendo serios problemas de tiempo debido a estos problemas.
Gracias de antemano

2 Respuestas

Respuesta
1
Bueno tienes que hacer una mezcla entre ajax y js..
Para hacer la consulta de la base de datos lo que des es agrear el evento onblur y agregas una función ejemplo onBLur="funcionbusqueda(aquí va el dni)" a los input del dni.. ese evento lo que hace es que al terminar de escribir y pasar a otro control llama la función.
Ahora enla función lo que debes hacer es un ajax, en la función "funcionbusqueda" que lo que hace es ir a la base de datos consultar or el dni y colocar los valores en los textbox.. la función puede ser similar a esta.
El resultado de ese ajax, puede se run arreglo de variables que luego desde js colocas en los input.. i volia.. ahora como tienes 6 controles.. tendrías que hacer 6 funcionnes diferentes o bien una función que varíe el id de los input..
function funcionbusqueda(dni){
        $.ajax({
           type: "POST",
           url: "<?=base_url()?>home/phpdeconsulta/",
           cache: false,
           data: "dni="+dni",
           success: function(msg){
         if(msg=='1')
            {
            }else{        
            }
        }                
    });
}
Respuesta
1
Lo primero, recomendarte que si vas a usar ajax, lo uses con la librería jquery. No tienes más que añadir en tu head la linea:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
... o bajarte el js y referenciarlo localmente. Eso a tu gusto.
Con la función $. Ajax() de jquery se puede hacer lo que quieres. Te pongo un ejemplo para uno de tus 6 formularios:
1) Create una php que contenga el código para consultar los datos de una persona pasando como parámetro el DNI, y construya un formulario html con los campos. Al formulario llámalo "formUsuarioAjax", y a los campos, pues por ejemplo "nombre", "apellido1", etc.
No se PHP así que eso te lo tendrás que currar solo. Ten en cuenta que a esta PHP se la va a invocar vía ajax, y que el contenido no va a ser visto y permanecerá oculto, por lo que no te compliques la vida. Lo importante van a ser los datos.
2) Es importante que los id's de los campos de cada uno de los 6 forms sean del estilo: "form1_nombre", "form1_apellido1", etc. Esto hará más fácil las cosas.
3) En la página donde tienes los formularios mete estas funciones y variables:
var prefijo_formulario;
function recuperaDatosUsuario(dni, prefijo_form){
prefijo_formulario=prefijo_form;
$.ajax({ url: 'consultaUsuario.php', type: 'GET', async: true, data: 'dni=' + dni, success: function(data){procesaRespuesta(data)}, error: muestraError });
}
function procesaRespuesta(html){
var elemento = $(html); // construyo un dom a partir de la respuesta
var cNombre = elemento.find('#nombre').val();
var cApellido1 = elemento.find('#apellido1').val();
$('#' +prefijo_formulario + '_nombre').val(cNombre);
$('#' +prefijo_formulario + '_apellido1').val(cApellido1);
}
function muestraError(){
alert("error al recuperar los datos del usuario");
}
4) En el onChange de cada campo DNI, o bien en un botón asociado, llama a la función recuperaDatosUsuario('form1'), donde el parámetro variará dependiendo del formulario desde el que se llame a la función.
Te prevengo: no he probado nada, por lo que puede que de errores. Intenta arreglarlos y si ves que no hay manera, pregúntame de nuevo.
Muchas gracias por tu respuesta Krlos, la probare esta noche y te comento en cuento obtenga resultados.
Hola Krlos, al final no pude implementar correctamente el auto completado porque he deicido modificar el diseño de la sección para intentar ahorrar tiempo y adelantar en mi proyecto que ando un poco apretado de tiempo, pero intentare volver sobre ello cuando haya acabado todas las secciones.
De todas formas muchas gracias por tus instrucciones!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas