Aplicación con Ajax y PHP 100% funcional

Aplicacion Ajax

A esto es lo que llamo el uso adecuado de la tecnología. Nuestro amigo Erik Blanco nos informa de una aplicación web desarrollada por su persona usando Ajax, PHP (orientado a objetos), MySQL, CSS y Javascript. Se trata de un mantenimiento de datos de una tabla MySQL: inserción, actualización, eliminación y consulta (paginada). Lo interesante es que no usa ningún librería Javascript para ello. Un buen ejemplo de como quedaría una aplicación si armamos nuestro propio objeto XMLHttpRequest para usar Ajax.  

Código fuente| Catalogo Empleados (Actualización: 27 Agosto 2008)

IIPImage: Visualizador de imágenes de Alta Resolución

IIPImage es una aplicación cliente-servidor de código abierto que nos permite visualizar imágenes de alta resolución. Esta diseñado para el uso adecuado: de la velocidad de conexión a internet (incluso conexion lentas) y gestión de memoria. ¿Cómo funciona? Este visualizador trabaja rápido, por que fragmenta la imagen en muchas pequeñas partes y solo descarga las porciones que son visibles dentro del marco del visualizador. Mientras te desplazas por la imágen (de gran tamaño) se van descargando las porciones necesarias, similar a lo que hace Google Maps.

Para hacerlo funcionar tendrás que configurarlo en tu servidor web, (trabaja sobre Apache, Lighttpd, MyServer) y luego configurar tus páginas web para que se muestre el visualizador (puedes usar applets de Java ó JavaScript-Ajax). La web de IIPImage muestra como realizar todos estos pasos. Así que si queremos tener nuestro propio Google Maps en nuestro servidor web para colocar imágenes de alta resolución, esta es una interesante opción.

Este ejemplo muestra una fotografía de 18000x18000 píxeles de la Nebulosa de Orión.

 

Nebulosa de Orión

 

Pestañas ó Tabs con AJAX, CSS y JavaScript

1. AJAX Tabs (Rails Redux):
AJAX Tabs (Rails Redux)

2. Tabs simple con AJAX y CSS:

Snippet Code for Simple AJAX Tabs with cool CSS Styles

3. Javascript Tabbar Component usando una API:

Javascript Tabbar Component with rich API

4. TabContainer - ASP.NET AJAX Control:

TabContainer - ASP.NET AJAX Control

5. Control Tabs:

Prototype - Control Tabs

 

6. Accesible y no obtrusivo 'JavaScript Tabs' con jQuery:
Accessible - unobtrusive JavaScript Tabs with jQuery

7. Tab View con Yahoo! UI Library:

Yahoo! UI Library: TabView

8. Tabtastic (sin AJAX):

Tabtastic

9. Tab Menu (sin AJAX):

A Different approach for Tab Menu

10. RibosoMatic - TabPage con CSS Javascript y Ajax:

DOMTab - Navigation tabs with CSS and DOMscripting
Ver Artículo Completo ››

Data Grids con Ajax, DHTML y JavaScript

Vía Smashing Magazine una lista de datagrids o tabla de datos hechas con Ajax, DHTML y JavaScript.

1. ExtJs Grid
ExtJs Grid

2. dhtmlxGrid

dhtmlxGrid

3. Phatfusion Sortable

Phatfusion Sortable

4. Mootable Sorting

Mootable Sorting

5. Elite Zebra Tables

Elite Zebra Tables

Ver Artículo Completo ››

Interface Elements: Script.aculo.us para jQuery

Interface ElementsInterface Elements es para jQuery, como Script.aculo.us es para Prototype, es así como podríamos definirlo para tener una idea de su funcionamiento. Y contiene una serie de controles UI (User Interface) tales como:

Puedes ver todos estos elementos en acción en la sección Demos, como también descargar el paquete de Interface y por supuesto el jQuery.

Scripts para desarrollar tu propia galería o presentación de imágenes

Si deseas crear un galería o presentación de fotografías o imágenes en un sitio web, podemos hacerlo de diversas maneras: en pantalla completa, en forma de diapositivas o en forma de thumbnails (vistas pequeñas de imágen). Pero para que el resultado sea eficaz debemos hacerlo de forma atractiva e intuitiva para el usuario final. Aquí una lista de librerias (en algunos mostrando una pequeña descripción) en Ajax, Javascript y CSS, para todo desarrollador que esta pensando colocar un sitio de imágenes.

Galerias de imágenes

Galerías de imágenes basados en Ajax

Ver Artículo Completo ››

IconFinder, buscador de iconos con Ajax

Buscador de iconos con AjaxIconFinder es nuevo motor de búsqueda de iconos que actualmente tiene mas de 5,000 iconos indexados, bastante útil para encontrar algunos iconos libres y de buen acabado para tus proyectos. Este servicio usa Ajax para mostrar los resultados e información de los iconos. Si seleccionamos un icono podremos ver información sobre: tamaño, autor, licencia y tags relacionados. También nos da la opción de cambiar el fondo de los iconos a negro, blanco o transparente. (Si no funciona el enlace de arriba probar con este enlace

Drag Drop con script.aculo.us, PHP y MySQL - Parte 2

En el artículo anterior vimos que es posible capturar todos los elementos de los bloques div y su ubicación mediante la función JavaScript obtenerElementos(). Entonces nos toca ahora enviar esa cadena de valores a un script PHP para que se encargue de cortarlos en los fragmentos correspondientes a los nombres de los empleados (contratados y despedidos) y guardalos en la base de datos.

Pero antes de eso vamos a modificar la funcion obtenerElementos() para que solo envie la cadena de valores y divida a los elementos de cada bloque por un slash ( / ), esa cadena obtenida la pasamos a una función EnviarDatos() que explicaremos luego. La idea es que la funcion obtenerElementos() envie este tipo de cadena: empleado_1_grupo_1, empleado2_grupo_1 / empleado_1_grupo2, empleado_2_grupo_2

function obtenerElementos() {
 var secciones = document.getElementsByClassName('seccion');
 var alerttext = '';
 var separador = '';
 secciones.each(function(seccion) {
  alerttext += separador + Sortable.sequence(seccion);
  separador = "/";
 });
 EnviarDatos(alerttext);
 return false;
}

Veamos ahora la función EnviarDatos() junto con la función que nos permitirá usar el objeto XMLHttpRequest. En nuestro caso separamos estás funciones en un archivo al que llamamos ajax.js

function Ajax(){
 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 EnviarDatos(cadena){
 ajax.Ajax();
 ajax.open("POST", "guardar.php",true);
 ajax.onreadystatechange=function(){
  if (ajax.readyState==4) {
   alert(ajax.responseText);
  }
 }
 ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 ajax.send("cadena="+cadena)
}
Ver Artículo Completo ››

Drag Drop con script.aculo.us, PHP y MySQL - Parte 1

Ahora veremos la forma de combinar la característica del drag drop (script.aculo.us) con PHP y MySQL, esto con el objetivo de que los elementos que hemos seleccionado o movido de un lugar a otro se queden guardados en una base de datos.

La aplicación se basará en el ejemplo de drag drop que realizamos días atrás. El artículo relacionado comentó sobre el elemento Sortable y sus opciones para la creación de elementos con drag drop. Pero veremos ahora algunos opciones mas. Empecemos entonces.

Creación de las tablas

Nuestras tablas están relacionadas con la condición del empleado. Vamos a crear dos tablas: contratado y despedido, algo simple para no complicarnos. Cada tabla tendrán sus campos: id, nombre_contratado e id, nombre_despedido, respectivamente. [Ver script SQL]

Y también creamos un script PHP para la conexión a la base de datos.

<?php
   //Configuracion de la conexion a base de datos
   //Cambie estos datos por los suyos
   $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); 
?>

Ahora vamos por partes

Creamos un archivos index.php y especificamos los archivos del paquetes script.aculo.us que usaremos:

<script src="js/prototype.js" type="text/javascript"></script>
<script src="js/scriptaculous.js" type="text/javascript"></script>

Vamos a crear una función en JavaScript para obtener el id de cada contenedor div donde aparecerán los nombres de los empleados contratados y despedidos.

  • La variable secciones obtiene todos los contenedores div cuya atributo class sea seccion
  • Declaramos una variable de cadena vacia textoprueba
  • Revisamos las distintas secciones a través de un bucle y cada iteración la asignamos a una funcion que trabajará con la variable seccion.
  • Obtenemos el id de la variable seccion en la variable seccionID.
  • Ahora concatenamos esta variable mas todos los elementos de esta seccion, los cuales los obtenemos con el elemento Sortable.sequence(seccion).
  • El resultado en un alert será (ej.): seccionAnimales : gato, perro, pato, gallina n seccionCosas: silla, escritorio, mes
<script type="text/javascript">
 function obtenerElementos() {
  var secciones = document.getElementsByClassName('seccion');
  var textoprueba = '';
  secciones.each(function(seccion) {
   var seccionID = seccion.id;   
   textoprueba += seccionID + ': ' + Sortable.sequence(seccion) + 'n';
  });
  alert(textoprueba);
  return false;
 }
</script>
Ver Artículo Completo ››

Chat con Ajax - Parte 2

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 ››

Navegación

Categorias

Archivos