AJAX, PHP, MySQL - Consulta de registros

Realizaremos un sencillo ejemplo de como recuperar registros de una tabla con AJAX.

Este ejemplo lo he probado en IE, Firefox, Opera y Netscape sin darme errores.

Es un ejemplo sencillo si estamos familiarizados con PHP y MySQL.Aún así dare algunas explicaciones generales sobre el código.

Creacion de la tabla

Entonces empezemos creando un tabla pequeña llamada empleados, no tendrá mas que 5 campos: idempleado, nombres, departamento y sueldo; además insertaremos algunos datos.

CREATE TABLE empleados (   
		idempleado int NOT NULL auto_increment,
		nombres varchar(32) NOT NULL,
		departamento varchar(40)NOT NULL,
		sueldo double,
		KEY id(idempleado) ) 
TYPE=MyISAM;    


INSERT INTO empleados VALUES (1, 'Juan Perez', 'Informatica',500.00);
INSERT INTO empleados VALUES (2, 'Laura Morales', 'Contabilidad',550.00);
INSERT INTO empleados VALUES (3, 'Luis Gutierrez', 'Administracion',850.00);
INSERT INTO empleados VALUES (4, 'Pedro Solar', 'Informatica',500.00);
INSERT INTO empleados VALUES (5, 'David Vilchez', 'Contabilidad',550.00);

Creamos las funciones en javascript

Ahora escribiremos 2 funciones, en la primera ( objetoAjax ) tiene como objetivo elegir el objeto XMLHttpRequest dependiendo del navegador, y la segunda función ( MostrarConsulta(parametro) ) tendrá como objetivo pedir los datos y mostrarlos en una capa (<div>) que especificaremos. Estas funciones lo podemos incluir en un archivo javascript (.js) al cual llamaremos ajax.js

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 MostrarConsulta(datos){
	divResultado = document.getElementById('resultado');
	ajax=objetoAjax();
	ajax.open("GET", datos);
	ajax.onreadystatechange=function() {
		if (ajax.readyState==4) {
			divResultado.innerHTML = ajax.responseText
		}
	}
	ajax.send(null)
}

Pedir los datos con PHP

En esta parte escribiremos un script en PHP para realizar una consulta de todos los registros de la tabla empleados en la base de datos.

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
echo "</p>Nombres - Departamento - Sueldo</p> n";
while($row = mysql_fetch_array($sql)){
	echo "<p>".$row['nombres']." - ".$row['departamento']." - ".$row['sueldo']."</p> n";
}
?>

Formulario de consulta

Finalmente creamos un archivo html que contendrá un Form y un Button el cual realizará la consulta.

consulta_empleados.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Consulta Registro con AJAX</title>
<!-- referenciamos al archivo ajax.js donde se encuentra nuestra funcion objetoAjax-->
<script language="JavaScript" type="text/javascript" src="ajax.js"></script>
</head>
<body>
<p>Consultar registros con ajax</p>"</p>"<p><!-- En "onsubmit" escribimos la función 'MostrarConsulta' que creamos en javascript, con su parametro que es el archivo que vamos a mostrar, en este caso 'consulta.php'-->
<form name="consulta" action="" onsubmit="MostrarConsulta('consulta.php'); return false"> <label>
<input type="submit" value="Consultar" />
</label>
</form>
<div id="resultado"></div>
</body>
</html>

En resumen

Para consultar los datos de una tabla hemos realizado lo siguiente:

  • Una función para crear el objeto XMLHttpRequest dependiendo del navegador.
  • Una función que realizará la petición de datos e indicará donde se mostrarán estos.
  • Una script en PHP que consulta los datos y los muestra.
  • Y finalmente el formulario de consulta.

Como podrán apreciar el código es realmente sencillo de entender, aún así daré mas detalles si preguntan. Pueden descargar el archivo si desean. Hasta otra oportunidad.

Comentarios Comentarios formato RSS

  1. avatar mex 2010-03-05 20:56:52 85 Muy buen artículo, más fácil no puede ser, bueno de hecho si. He encontrado una página muy útil para utilizar estos ejemplos o herramientas.

    http://www.freewebhostingarea.com/

    Ahi tienen un servidor ftp (para subir los archivos que se requieren en este ejemplo) y lo mejor de este host es que ofrece un servidor de bases de datos mysql (limitado a 3, pero es de gran utilidad).

    Ahi el ejemplo
    http://coins.eu5.org/empleados/consulta_empleados.html
  2. avatar EGUN 2010-01-07 05:50:55 84 Necesito de vuestra ayuda URGENTE !

    Hola... soy nuevo en PHP, JavaScript y consultas a MySQL y tengo el siguiente problema en
    http://www.gestion-desarrollo.org/frontoffice/prueba/IEEH-test.php

    ¿Porqué al ingresar un código de consulta aparece su resultado y se borra el contenido del otro! y viceversa?

    Gracias
  3. avatar FRANCIS 2010-01-05 05:20:59 83 tantos manuales de lo mismo y tener que estar 3 malditas horas navegando para encontrarme con esto.... deluxe
  4. avatar andreshenao 2009-12-09 22:44:07 82 hola,
    excelente tutorial lo felicito seria tan amable y nos da una guia de como hacer esto pero a cajas de texto o sea digitar una cedula y actualise las cajas de nombre etc,
    gracias lo felicito
  5. avatar Edward 2009-12-02 14:11:37 81 muy bueno el ejemplo, ahora lo probare haciendo uso de tablas para que el resultado sea un poco mas ordenado...

    eduflo78@hotmail.com
  6. avatar Christopher 2009-12-01 21:40:26 80 Muy buen turotial, gracias simple y bien explicado, y con su codigo para descargar, bueno me gustaria ver mas con ajax usando jquery y trabajando php como POO
  7. avatar tuxero 2009-11-22 15:05:43 79 Excelente articulo me ha sido de mucha ayuda. Gracias :D.
  8. avatar carrillo victor 2009-11-13 10:37:15 78 hola esta super bien el aporte que nos das amigo para seguir aprendiendo cosas nuevas, lo prove me salio excelente, pero le agrege una fila mas a mi tabla empleados y cuando pulse en boton consultar no me mostro el nuevo dato , ¿porque, alguien sabe?
  9. avatar lujopipe 2009-10-02 09:43:38 77 gracias men me a servido sabes si tienes alguno que impleque mas relaciones como acceso a datos en varias tablas y edicion con ajax te lo agradeceria.

    xD mi mail lujopipe@gmail.com me lo puedes enviar estamos en contacto
  10. avatar oscar 2009-09-03 08:00:55 76 Muy buen ejemplo, me ayudo mucho.

    muy buena la web!!! adelante!!!


    gracias

Dejar un comentario