Bien ahora veremos la parte del código y pequeña explicación por cada fragmento de código. Empezemos con nuestra tabla la cual llamaremos chat y tendra solo 3 campos: fecha, usuario, mensaje:
CREATE TABLE `chat` (
`fecha` datetime NOT NULL default '0000-00-00 00:00:00',
`usuario` varchar(15) NOT NULL default '',
`mensaje` text NOT NULL
) type=MyISAM;
Para los datos de la conexión al servidor MySQL usamos el archivo conexion.php.
<?php
//Configuracion de la conexion a base de datos
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "123456";
$bd_base = "ribosomatic";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);
?>
El archivo consulta.php se encargará de mostrar los últimos registros agregados a la tabla chat. La variable $UltFecha contiene la fecha del último registros que se le mostró al usuario. Si no esta definido es por que el usuario inicia por primera vez la aplicación, por lo que mostrará todos los registros de la tabla. Además usaremos XML para el envio de los datos obtenidos de la consulta. Las primeras 4 cabeceras (header) son para que el navegador vuelva a cargar los resultados y no los tome de la cáche. La última cabecera es para especificar que se trata de un documento XML.
<?php
require("conexion.php");
$UltFecha=$_GET['ultfec'];
if($UltFecha=='undefined'){
$query = "SELECT * FROM chat ORDER BY fecha ASC";
}else{
$query = "SELECT * FROM chat WHERE fecha>'$UltFecha' ORDER BY fecha ASC";
}
$lista = mysql_query($query,$con);
$i=1;
// no cargar de la cache del navegador.
header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" );
header( "Cache-Control: no-cache, must-revalidate" );
header( "Pragma: no-cache" );
header('Content-type: text/xml; charset=UTF-8', true);
echo "<?xml version="1.0" encoding="UTF-8"?>n";
echo "<xml>";
while($row = mysql_fetch_array($lista)){
echo "<elemento> n";
echo " <fecha>".$row['fecha']."</fecha> n";
echo " <usuario>".$row['usuario']."</usuario> n";
echo " <mensaje>".$row['mensaje']."</mensaje> n";
echo "</elemento> n";
$i++;
}
echo "</xml>";
?>
Para registrar los mensaje usamos el archivo registro.php. Obtenemos las variables usuario y mensaje las cuales han sido enviadas mediante JavaScript (mas adelante veremos esto) y hacemos un INSERT INTO para guardar los datos en la tabla. Luego eliminamos los registros de la tabla si esto superan los 10.
<?php
require('conexion.php');
$usuario=$_POST['usuario'];
$mensaje=$_POST['mensaje'];
if($usuario=='') $usuario='anonimo';
if($mensaje=='') $mensaje='ningun mensaje';
$query = "INSERT INTO chat ( fecha, usuario, mensaje) VALUES (NOW(),'$usuario','$mensaje')";
mysql_query($query);
//eliminando registros si estos superarn los 10
$max=10;
$NroRegistros=mysql_num_rows(mysql_query("SELECT * FROM chat",$con));
if($NroRegistros>$max){
$NroAEliminar=$NroRegistros-$max;
mysql_query("DELETE FROM chat ORDER BY fecha ASC LIMIT $NroAEliminar");
}
?>
Hasta aquí hemos visto todo el proceso que realiza el servidor. Veamos ahora las funciones en JavaScript que enviarán los valores a los archivos PHP antes mencionados.
Ver Artículo Completo ››