Código fuente Ya.

Puede ejecutar la o las páginas para probar el concepto inmediatamente.

 

Concepto:Layout de tres columnas (actualización asíncrona de una columna)

El concepto trata sobre:html,css,php,mysql,ajax
Autor:

Retornar

Nombre del archivo:menu.html

Comentarios
El objetivo de este problema es implementar una página con tres columnas y luego
solo refrescar la columna central.
Mostraremos una lista de libros y sus descripciones en la página central. Iremos
paginando los resultados en la columna central.
Nombre del archivo:creartabla.php

Comentarios
Verificamos si existe la tabla libros en el servidor, en caso afirmativo
procedemos a borrarla:
$registros=mysql_query("drop table if exists libros",$conexion) or
  die("Problemas en el select:".mysql_error());

Creamos una tabla libros con la siguiente estructura:
mysql_query("create table libros (
                            codigo int auto_increment primary key,
                            nombre varchar(150),
							descripcion text
                         )",$conexion) or
  die("Problemas :".mysql_error());

Luego insertamos 7 registros de prueba.
Nombre del archivo:listado.php

Comentarios
Layout de 3 columnas (con refresco asíncrono de la columna central)

La columna1 flota hacia izquierda y tiene un ancho fijo:
#columna1 {
  float: left;
  width: 9.25em;
  background: #eee;
}

Luego es importante destacar que la columna2 contiene la columna 3.
Es importante el div con id="libros", es dentro de esta sección donde cargaremos
en forma asíncrona el contenido de la columna central (disponemos algunos videos en la
columna de la derecha para verificar que cuando recargamos la columna central las otras
dos columnas no se recargan):

	<div id="columna2">
      <div id="columna3">	
        Columna derecha
        ....videos...........
      </div>

	  <div id="libros">

      </div>

    </div>	   
Nombre del archivo:funciones.js

Comentarios
Lo primero que hacemos es registrar la función inicializarEventos para que se ejecute
una vez terminada de cargar la página por completo:
addEvent(window,'load',inicializarEventos,false);

La función inicializarEventos llama por primera vez a la función cargarPagina con el
objetivo que aparezca la información de la página central la primera vez que pedimos la
página listado (pasamos un valor aleatorio para que el IExplorer no traiga la página de
la Cache del navegador):
function inicializarEventos()
{

  var aleatorio=Math.random();
  cargarPagina('columnacentral.php?ale='+aleatorio); 
}


La función cargarPagina recibe la url de la página que queremos rescatar del servidor en 
forma asíncrona.
Creamos un objeto XMLHttpRequest:
  conexion1=crearXMLHttpRequest();
Indicamos el nombre de la función que procesará los eventos del objeto:
  conexion1.onreadystatechange = procesarEventos;
Indicamos el modo de conexión y el nombre del archivo a llamar.   
Enviamos la petición.

var conexion1;
function cargarPagina(url) 
{

  if(url=='')
  {
    return;
  }
  conexion1=crearXMLHttpRequest();
  conexion1.onreadystatechange = procesarEventos;
  conexion1.open("GET", url, true);
  conexion1.send(null);
}

La función procesarEventos obtiene la referencia del div donde debemos mostrar los datos de los
libros:
  var detalles = document.getElementById("libros");
Cuando los datos llegaron al navegador el siguiente if se verfica verdadero y procedemos a 
cargar el div con el trozo de HTML devuelto por el servidor:
  if(conexion1.readyState == 4)
  {
    detalles.innerHTML = conexion1.responseText;
    var ob1=document.getElementById('sig');
Otra cosa muy importante es obtener la referencia a los dos hipervínculos que nos permiten la
paginación de resultados, con esto cuando se presionen dichos hipervínculos procederemos a
cargar en forma asíncrona los datos en la columna central:
    if (ob1!=null)
      addEvent(ob1,'click',presionEnlace,false);
    var ob2=document.getElementById('ant');
    if (ob2!=null)
      addEvent(ob2,'click',presionEnlace,false);
  } 

La función presionEnlace se dispara cuando presionamos alguno de los dos hipervínculos "Anterior" o
"Siguiente".
En esta función debemos identificar si trabajamos con el IExplorer u otro navegador. Según este
dato procedemos a llamar a la función cargarPagina con la url almacenada en el hipervínculo (en nuestro
caso dicha página es columnacentral.php)

function presionEnlace(e)
{
  if (window.event)
  {
    window.event.returnValue=false;
    var url=window.event.srcElement.getAttribute('href');
    cargarPagina(url);     
  }
  else
    if (e)
    {
      e.preventDefault();
      var url=e.target.getAttribute('href');
      cargarPagina(url);     
    }
}
Nombre del archivo:columnacentral.php

Comentarios
Esta página genera un trozo de HTML con los nombres y descripción de los libros, añade además los
hipervínculos para paginación ("Siguiente", "Anterior").
Nombre del archivo:estilos.css

Retornar



Código Fuente Ya - 2015