Consulta de Datos con AJAX + Clases en PHP

Hablar de Programación Orientada a Objetos (POO) es hablar de clases (y otras funcionalidades) que nos permite escribir código flexible y sobre todo reutilizable. Para muchos resulta dificultoso y tedioso, pero una vez construida nuestra clase podemos hacer uso de ella para cualquier otro desarrollo. Los lenguajes actuales implementan el desarrollo con POO y PHP no se podia quedar atrás (aunque en lo personal no sé si implementa todas las caracteristicas de la POO).

En esta oportunidad, vamos a ver como usar POO en los ejemplos anteriores de AJAX+PHP, en este caso Consulta de datos. Empezemos:

Tabla Empleado en MySQL

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); 

Creando Clases y Métodos

Creamos una Clase para la conexión con la Base de Datos, el método conectar() se encargará de verificar y realizar la conexión con la base de datos. A este archivo lo llamamos DBManager.php .

<?php
 //esta clase nos permitira conectarnos a la base de datos
 class DBManager{
  var $conect;
  //Método constructor
  function DBManager(){
  }
  //Método que se encargará de la verificar y realizar
  //la conexión
  function conectar() {
   if(!($con=@mysql_connect("localhost","root",""))){
    echo"Error al conectar a la base de datos";
    exit();
   }
   if (!@mysql_select_db("ribosomatic",$con)) {
    echo "Error al seleccionar la base de datos";
    exit();
   }
   $this->conect=$con;
   return true;
  }
 }
?>

Creamos una Clase para los procesos relacionados con el Empleado, como por ejemplo: Consultar sus datos. Para ello el método consultar()realizará este proceso . Previamente, hacemos referencia al archivo BDManager.php para realizar la conexión. A este archivo de la Clase Empleado lo llamaremos cEmpleado.php .

<?php
 include_once("DBManager.php");
 //implementamos la clase empleado
 class cEmpleado{
  //constructor
  function cEmpleado(){
  }
  // consulta los empledos de la BD
  function consultar(){
   //creamos el objeto $con a partir de la clase DBManager
   $con = new DBManager;
   //usamos el metodo conectar para realizar la conexion
   if($con->conectar()==true){
    $query = "select * from empleados order by nombres";
    $result = @mysql_query($query);
    if (!$result)
     return false;
    else
     return $result;
   }
  }
 }
?>

El resto es lo mismo, pero….

Ahora realizamos una consulta a los datos, referenciamos al archivo cEmpleado.php que contiene la Clase cEmpleado. Creamos el objeto $objempleados y usamos el método consultar() para que la consulta de los datos, y luego mediante un bucle listamos los datos. Este archivo lo llamamos consulta.php.

<?php
 include_once("cEmpleado.php");
 //Sleep deja inactivo el script por n segundos
 //n es un parametro, en el ejemplo 1 segundo
 //esto para poder apreciar el gif animado
 sleep(1);
 //creamos el objeto $objempleados de la clase cEmpleado
 $objempleados=new cEmpleado;
 //la variable $lista consulta todos los empleados
 $consulta= $objempleados->consultar();
 //muestra los datos consultados
 echo "</p>Nombres - Departamento - Sueldo</p> \n";
 while($row = mysql_fetch_array($consulta)){
  echo "<p>".$row['nombres']." - ".$row['departamento']." - ".$row['sueldo']."</p> \n";
 }
?>

Ahora las funciones JavaScript, entre ellas la que crea el objeto XMLHttpRequest para trabajar con AJAX. Este archivo se llama 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');
 divResultado.innerHTML= '<img src="anim.gif">';
 ajax=objetoAjax();
 ajax.open("GET", datos);
 ajax.onreadystatechange=function() {
  if (ajax.readyState==4) {
   divResultado.innerHTML = ajax.responseText
  }
 }
 ajax.send(null)
} 

Finalmente, el archivo index.html que contendrá un formulario y un botón que al ser pulsado, llamara a la función Javascript MostrarConsulta() que se enlaza al archivo consulta.php y el resultado es mostrado dentro de la etiqueta <div id=”resultado”></div>.

<html>
<head>
<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>
<!-- 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>

Como se podrá apreciar, el uso de Clases en PHP hace que nuestro código se reutilizable, en próximos ejemplos veremos como seguir implementando otros métodos a la Clase Empleado, como por ejemplo Insertar, Actualizar y Eliminar registros. Puedes ver el ejemplo en acción o descargar los archivos.

14 thoughts on “Consulta de Datos con AJAX + Clases en PHP

  1. Hola, me gustaria saber si has podido implementar clases dentro de registerFunction….
    con el fin de aplicar a cabalidad el paradigama de la POO
    gracias x tu tiempo
    Cordialmente
    Alejandro

  2. hola tu programa esta muy bueno pero cuando hago la consulta y muestro por el index.html el resultado de archivo.php quiero insertar un calentario pero no se muestra el calendario posiblemente por que esta adentro de un div

  3. Rayos, soy una basofia de basofias. Simplemente no pude conectarme a la base de datos siquiera.
    En pantalla no me imprime ni un mensaje de error, pensé que podría ser la versión de mi PHP, pero es la 5.2.9, se supone que soporte clases.
    Una duda, no encontre nada en google, ¿Para que le ponen un @ antes de mysql_connnect?
    Saludos.

  4. hola, tu ejemplo esta muy bueno pero quisiera saber si pudieras publicar un ejemplo donde los datos tomados desde el formulario sean tratados en el ejemplo mediante los metodos set y get.

  5. Hola solo escribo para decir lo agredecido que estoy con este tipo de post muy hermosos en contenido y la versatilidad que aplica al explicarlo y descargar el demo para modificarlo…esta paáginas es la mejor que he conocido relacionado al php no hay comparación he aprendido muchas cosas..a lo cual respondo cuando preguntan quien te enseño yo solo digo “Risbosomatic” de todo corazón a todos los calaboradores muchas gracias…

  6. Hola es muy bueno tu programa, pero una consulta lo intento correr dentro de un menu hecho con div y lo llamo con Ajax, pero ahi no me realiza la consulta porque podria ser??? me sale el boton pero no realiza la consulta.

  7. buenas tardes tu ejemplo es muy bueno pero tengo una duda como manipulo los datos de la consulta ya en javascript por ejemplo si en mi base tengo salarios quiero que me de el total y para eso necesito manipular los datos.
    aclaro que soy principiane y de antemano gracias.

Leave a Reply

Your email address will not be published. Required fields are marked *

Proudly powered by WordPress | Theme: Wanderz Blog by Crimson Themes.