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.