AJAX, PHP, MySQL - Registro de datos

En esta oportunidad crearemos un aplicación web que nos permita insertar datos en la tabla empleados que usamos anteriormente. Bueno como siempre dijo: "pocas palabras, mas acción".

Funciones en JavaScript

Bien, como ya tenemos la tabla empezaremos por definir las funciones en javascript, definiremos 3 funciones en un archivo llamado ajax.js:

  • objetoAjax( ): Nos creara la instancia del objeto XMLHttpRequest dependiendo del navegador. Siempre haremos uso de ésta función.
  • GrabarEmpleado( ): Esta función enviará mediante el método POST los datos al archivo registro.php que realizará la inserción a la base de datos.
  • LimpiarCampos( ): Pues fácil limpiará los inputs después de enviar los datos, como para crear un efecto de que se han enviado datos.

ajax.js

function objetoAjax(){
var xmlhttp=false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
} if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
} function enviarDatosEmpleado(){
//donde se mostrará lo resultados
divResultado = document.getElementById('resultado');
//valores de los inputs
nom=document.nuevo_empleado.nombres.value;
dep=document.nuevo_empleado.departamento.value;
suel=document.nuevo_empleado.sueldo.value;

//instanciamos el objetoAjax
ajax=objetoAjax();
//uso del medotod POST
//archivo que realizará la operacion
//registro.php
ajax.open("POST", "registro.php",true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
//mostrar resultados en esta capa
divResultado.innerHTML = ajax.responseText
//llamar a funcion para limpiar los inputs
LimpiarCampos();
}
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//enviando los valores
ajax.send("nombres="+nom+"&departamento="+dep+"&sueldo="+suel)
}
function LimpiarCampos(){
document.nuevo_empleado.nombres.value="";
document.nuevo_empleado.departamento.value="";
document.nuevo_empleado.sueldo.value="";
document.nuevo_empleado.nombres.focus();
}

Grabar los datos

Aquí crearemos un script PHP, al cual llamaremos registro.php que realizará tres funciones importantes:

  • Conectarnos con la base de datos,
  • Realizar la inserción de los datos a la tabla empleados, y
  • Mediante un include llamar al archivo consulta.php que mostrará los registros incluyendo el nuevo ingresado.

A continuación mostramos el código de estos dos archivos: registro.php y consulta.php

registro.php

<?php
//Configuracion de la conexion a base de datos
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "";
$bd_base = "ribosomatic";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);
//variables POST
$nom=$_POST['nombres'];
$dep=$_POST['departamento'];
$suel=$_POST['sueldo'];
//registra los datos del empleados
$sql="INSERT INTO empleados (nombres, departamento, sueldo) VALUES ('$nom','$dep',$suel)";
mysql_query($sql,$con);
include('consulta.php');
?>

consulta.php

<?php
//Configuracion de la conexion a base de datos
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "";
$bd_base = "ribosomatic";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);
//consulta todos los empleados
$sql=mysql_query("SELECT * FROM empleados",$con);
//muestra los datos consultados
//haremos uso de tabla para tabular los resultados
?>
<table style="border:1px solid #FF0000; color:#000099;width:400px;">
<tr style="background:#99CCCC;">
<td>Nombres</td>
<td>Departamento</td>
<td>Sueldo</td>
</tr>
<?php
while($row = mysql_fetch_array($sql)){
echo " <tr>";
echo " <td>".$row['nombres']."</td>";
echo " <td>".$row['departamento']."</td>";
echo " <td>".$row['sueldo']."</td>";
echo " </tr>";
}
?>
</table>

Formulario Registro de Empleado

Finalmente crearemos el formulario de registro del empleado. Llamaremos a este archivo empleados_registro.php. Sera .php pues haremos uso de un include para llamar al archivo consulta.php que mostrará todos los registros de la tabla empleado.

empleados_registro.php

<html>
<head>
<title>Registro con AJAX</title>
<script language="JavaScript" type="text/javascript" src="ajax.js"></script>
</head>
<body>
<form name="nuevo_empleado" action=""
onsubmit="enviarDatosEmpleado(); return false">
<h2>Nuevo empleado</h2>
<p>Nombres
<label>
<input name="nombres" type="text" />
</label>
</p>
<p>Departamento
<label>
<select name="departamento">
<option value="Informatica">Informatica</option>
<option value="Contabilidad">Contabilidad</option>
<option value="Administracion">Administracion</option>
<option value="Logistica">Logistica</option>
</select>
</label>
</p>
<p>Sueldo <strong>S/.</strong>
<label>
<input name="sueldo" type="text" />
</label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="Grabar" />
</label>
</p>
</form>
<div id="resultado"><?php include('consulta.php');?></div>
</body>
</html>

Bueno espero que estos scripts les sirvan de algo a alguien por allí. Consultas o dudas en los comentarios. Pueden descargar el código.

Comentarios Comentarios formato RSS

  1. avatar Molasar 2010-03-03 21:17:58 40 Me ha resultado muy útil el script... GRACIAS!
  2. avatar EDUARDO 2009-12-09 07:50:46 39 LA PROGRAMACION ESTA SUPER BIEN, SENCILLO Y SOBRE TODO LA APLICACION ES SUPER LIVIANA...
  3. avatar Berni 2009-12-05 02:51:09 38 Muy buen aporte por lo que me estoy iniciando en ajax ... gracias
  4. avatar diseño web 2009-04-21 21:23:14 37 Ejemplo básico pero muy bueno, gracias por el aporte!

    Saludos

    Marco
  5. avatar Nelson 2009-04-16 14:43:27 36 Muchas gracias por tus ejemplos, me ayudaron bastantes.

    Tengo una consulta.

    Estoy intentando hacer un login, al combinar alguna de tus funciones.

    Cuando el usuario ingresar correctamente sus datos, necesito que me direccione a otra pagina. Ésto es lo que necesito ya que no puedo hacerlo.

    Te rogaria si es que puedieras ayudarme.
  6. avatar Erik Blanco 2009-04-15 13:42:18 35 Hola alicia debe checar bien como mandas tu datos a PHP Puede utilizar HTTP_POST o $_POST para recuperar via formulario si es por URL HTTP_GET_VARS o $_GET ok o bien haz el test cuando tu insertas el valor imprimer la variable $sql que es donde inserta el valor y fijate si pasa los valores de la consulta

    Saludos
  7. avatar alicia 2009-04-15 00:55:57 34 Hola baje el archivo y no me muestra los datos que acabo de ingresar en la tabla pero en la pagina funciona, me gustaria saber por que???
  8. avatar David Noe 2009-03-27 14:03:30 33 Una tontería, pero me llama la atención porque lo he visto en otros ejemplos de esta misma serie; supongo que es una errata y tal vez el script no deja de funcionar, pero ... ¿por qué en el archivo ajax.js estas 2 sentencias de la función enviarDatosEmpleado() no terminan en punto y coma?

    - esta es la primera:

    divResultado.innerHTML = ajax.responseText

    - y más adelante esta otra:

    ajax.send(...variablesPOST...)

    Por cierto, que en el texto introductorio a la función le llamas GrabarEmpleado(), deberías corregir la errata para que la gente no se líe.

    Lo siento pero es que soy totalmente novato en JavaScript y a lo mejor me paso de pursita. Muchas gracias por estos ejemplo, intentaré probarlos cuanto antes.
  9. avatar Lady:Boo 2009-02-24 07:26:21 32 Estoy tratando de agregar una funcion de accordion al momento de mostrar los resultados, pero no logro hacer que al momento de cargar nuevamente "consulta.php" funcione el script del acordion. Alguna recomendacion? Sé que debe tener que vber con el init o el dom
  10. avatar ARMANDO AMARO PROA 2009-01-17 21:13:26 31 mi amigo, muchas gracias este scrip lo adicionare a las igueinte WEB :P gracias, pero si tuvieras un cod mascompleto y mas complejo..:P

Dejar un comentario