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.

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.

Ventanas dentro del navegador

Prototype window classPrototype Window Class nos permite agregar ventanas dentro del navegador web con solo pegar algunas lineas de código.
Las caracteristicas de las ventanas son las siguientes:

Ventana dimensionables,
Minimizar y Maximizar,
Ventanas de dialogo,
Efectos visuales

PWC cuenta con documentación detallada (en inglés), ejemplos y mas.

Busqueda en tiempo real con Livesearch

LiveSearchLivesearch es un servicio de busqueda en tiempo real. Un alternativa a los ya conocidos buscadores (Msn Search, Google, Yahoo). Lo interesante de esta web de busqueda es que hace uso de AJAX para mostrar sus resultados en tiempo real. Otra caracteristica es que mientras escribimos la palabra o palabras en el casillero de busqueda, automaticamente nos muestra una lista en la parte inferior de esta con posible opciones. Por ejemplo sin escribimos "Tutoriales", la parte inferior mostrará "Tutoriales de photoshop", "Tutoriales de flash", "Tutoriales de Excel", etc. Esto nos indica la expresion "Tutoriales de photoshop" es la mas buscada, en este caso.

En cuanto a los resultados en la parte principal, pues tiene en formato de los demas buscadores. El titulo de pagina, descripcion de esta, enlaces, etc. Algo a lo que ya estamos acostumbrados con los mas conocidos buscadores.

Mi primer ejemplo con AJAX

Siguiendo con la publicación del tutorial sobre AJAX, mostraremos ahora un pequeño ejemplo introductorio. Mostraremos el código y luego explicaremos el código.

Código

ejemplo1.html

  <html>
<head>
<title>Ejemplo1</title>
<script language = "javascript">
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest) {
XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) {
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
function pedirDatos(fuenteDatos, divID){
if(XMLHttpRequestObject) {
var obj = document.getElementById(divID);
XMLHttpRequestObject.open("GET", fuenteDatos);
XMLHttpRequestObject.onreadystatechange = function(){
if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
obj.innerHTML = XMLHttpRequestObject.responseText;
}
}
XMLHttpRequestObject.send(null);
}
}
</script>
</head>
<body>
<H1>Mostrando datos con AJAX</H1>
<form>
<input type = "button" value = "Mostrar mensaje" onclick = "pedirDatos('datos.txt','targetDiv')">
</form>
<div id="targetDiv" style="background-color:#99FF66;">
<p>Aqu&iacute; aparecer&aacute; texto</p>
</div>
</body>
</html>

A continuación escribiremos en un archivo de texto la siguiente línea:

datos.txt

Este texto aparecio usando AJAX y sin un refresh a la pagina.

Explicación

En primer lugar creamos el objeto XMLHttpRequestObject para la petición de datos. Este objeto será creado dependiendo del navegador web, la primera parte del if es para la mayoría de navegadores y la parte del if else es para Internet Explorer.

Luego está la creación de una función pedirDatos que tiene como parametros fuenteDatos y divID. Está función, como su mismo nombre lo indica, será la encargada de hacer una petición de datos, a través del parámetro fuenteDatos al servidor. Y el resultado de la petición será mostrada en la variable divID , la cual es una capa de estilos que se mostrará en el html.

Como se aprecia la mayor parte del código interesante se centra en el javascript. Así que empezaremos el tutorial con un rápido repaso de este lenguaje. Hasta el próximo artículo.

Dudas, preguntas, sugerencias por favor dejar sus comentarios.

Puedes ver el ejemplo en la sección ejemplos

Tutorial AJAX: Pequeña introducción

Todo el mundo, a través de la red, no deja de hablar, comentar u preguntar sobre esta nueva técnica de desarrollo web, y es que en realidad aunque esta no es nueva, pero ahora la conocemos mas gracias a la estandarización de los navegadores web y algunas web (como Google, Netvibes, Meebo) que han apostado por usarla, haciendo que la navegación por internet sea mas agradable.

Cuando vi por primera vez algunos websites que usaban esta técnica, me preguntaba que las hace tan interesantes y de navegacion agradable, después de indagar e investigar sobre ello, pues entendi que se trataba de AJAX.

Encontre la definición de AJAX en wikipedia:"... acrónimo de Asynchronous JavaScript and XML (en inglés «JavaScript y XML asíncronos»). Técnica de desarrollo web para crear aplicaciones interactivas mediante la combinación de tres lenguajes ya existentes:

  • HTML (o XHTML) y Hojas de Estilo en Cascada (CSS) para presentar la información;
  • Document Object Model (DOM) y JavaScript, para interactuar dinámicamente con los datos, y
  • XML y XSLT, para intercambiar y manipular datos de manera desincronizada con un servidor web ...".

Así entendi que AJAX no es una tecnología, sino la combinación de varias de ellas, con las cuales los desarrolladores están familiarizados. Esto indica que no debería de ser dificil de implementar para un desarrollador web.

En mi afán de entender mejor como trabajar con AJAX, investige varios sitios por internet para hallar información, pero poco hay en español, pero eso si en inglés la documentación es extensa. Así que me propuse escribir un pequeño tutorial sobre mis primeros pasos en AJAX. Yo soy uno mas de los que desean aprender de esta técnica para hacer de mis aplicaciones web algo mas atractivas e interactivas, pero conosco alguito, y ese alguito de conocimiento de AJAX deseo compartirlo, espero que a alguien le pueda resultar útil.

Sobre este tutorial

Haremos uso en este turorial de PHP, Mysql, JavaScript, XHTML, CSS y un poco de XML, para crear ejemplos con AJAX.

Los artículos siguientes los iré publicado en el tiempo mas corto posible para no perder el ritmo del tutorial. Serán bienvenido sus comentarios, sugerencias o críticas.

Empezemos ...

Este primer artículo no tocara ningún código de ejemplo, simplemente como introducción listaremos sitios web que hacen uso de AJAX (para los que no saben aun que es) .

Si visitó las web mencionadas tendrá una idea de como se puede usar AJAX. Por ahora eso ha sido un pequeña y rápida introducción a AJAX, hasta la próxima.

Ajax y las nuevas aplicaciones Web

AjaxSi hay una tecnología de desarrollo de aplicaciones que podemos decir que es innovadora, ésta es sin lugar a dudas AJAX. Esta tecnología está cambiando y cambiará la manera en la que los desarrolladores de aplicaciones Web trabajan. Las aplicaciones de escritorio poco tendrán que envidiar a las aplicaciones Web cuando estas tecnologías sean totalmente aplicadas.

AJAX no es en si misma una tecnología, sino un conjunto de éstas unidas para crear aplicaciones tan impresionantes como Google Earth. Concretamente, AJAX es el acrónimo de “Asynchronous JavaScript + Xml” e incorpora distintas tecnologías que son las siguientes:

- Presentación con XHTML + CSS
- Interacción dinámica usando DOM
- Peticiones y respuestas usando XML y XSLT
- Recuperación de datos usando XMLHttpRequest
- Unión de todas las tecnologías usando JavaScript.

El principal objetivo de AJAX es cambiar el funcionamiento estándar de las aplicaciones Web en las que el cliente, usualmente un navegador de Internet, realiza una petición a un servidor y queda a la espera de la respuesta. El concepto es cargar y renderizar una página y mantenerse en ella mediante scripts y rutinas que realizan las peticiones al servidor en background de tal forma que el cliente no tiene que esperar la respuesta de este. La nueva información se “añade” a la página re-renderizándola sin volver a cargarla.

Gracias a AJAX, el usuario ya no tendrá que esperar la respuesta del servidor. Esto se consigue con la incorporación de un intermediario entre el cliente y el servidor llamado motor AJAX. Al iniciar una página que utilice tecnología AJAX el navegador cargará el motor en vez de la página Web. Este motor es el encargado de renderizar la página para mostrársela al usuario y permite que la comunicación con la aplicación suceda de forma asíncrona.

Una respuesta a una acción del usuario que no necesite información del servidor es manejada exclusivamente por el motor AJAX y si se necesitarán datos de este las peticiones se realizarían asíncronamente usando XML sin que el usuario se percatara de estas.

Diversas aplicaciones utilizan AJAX actualmente, en especial las aplicaciones Web de Google como Google Earth, Google Maps, Gmail… pero en un futuro cualquier aplicación Web que se precie deberá utilizar esta tecnología. La implantación final sólo dependerá de la actitud de los programadores de aplicaciones Web, que deben cambiar de forma radical su filosofía de desarrollo para adaptarse a las múltiples posibilidades de AJAX.

No distribuir este artículo sin el consetimiento de MasterMagazine.

Navegación

Categorias

Archivos