Es frecuente en la gran mayoría de los blog, tener un paginador que te permite acceder a las noticias anterior y siguiente. En este tutorial aprenderemos (o por lo menos lo intentaremos) ver como conseguir ese efecto de la forma menos traumática.

Para empezar, partiremos de la base de una tabla en nuestra base de datos llamada hipotéticamente “noticias”. Esta tabla podría tener los siguientes campos: id, titulo, texto y fecha.

CREATE TABLE `noticia` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`titulo` VARCHAR( 150 ) NOT NULL ,
`texto` TEXT NOT NULL ,
`fecha` DATETIME NOT NULL ,
FULLTEXT (`texto`)
)

Ahora desde dreamweaver, creamos un recordset cuya consulta podría ser similar a esta
SELECT noticia.id, noticia.titulo, noticia.texto, noticia.fecha WHERE noticia.id = idPara completar este recordset, creamos una variable donde el nombre es “id”, el tipo “numérico”, el valor predeterminado “1″ y el valor de tiempo de ejecución “$_GET['id']”

Esto nos daría un código más o menos parecido a esto.
$id_rsNoticia = "1";
if (isset($_GET['id'])) {
$id_rsNoticia = (get_magic_quotes_gpc()) ? $_GET['id'] : addslashes($_GET['id']);
}

mysql_select_db($database_conn, $conn);
$query_rsNoticia = "SELECT noticia.id, noticia.titulo, noticia.texto, noticia.fecha WHERE noticia.id = %s", GetSQLValueString($id_rsNoticia, "int"));
$rsNoticia = mysql_query($query_rsNoticia, $conn) or die(mysql_error());
$row_rsNoticia = mysql_fetch_assoc($rsNoticia);
$totalRows_rsNoticia = mysql_num_rows($rsNoticia);

Bien, tal y como tenemos nuestro recordset, este nos mostraría en pantalla el registro cuyo “id” le pasemos por url, de la manera “noticia.php?id=1″. Lo que necesitamos ahora es averiguar cuales son los registros anteriores y siguientes, basandonos en un orden lógico de fecha. Para eso, vamos a crear dentro de nuestra consulta 2 subconsultas nuevas.

Nos centramos entonces en
SELECT noticia.id, noticia.titulo, noticia.texto, noticia.fecha" que es donde realizaremos las subconsultas.
SELECT noticia.id, noticia.titulo, noticia.texto, noticia.fecha,

(SELECT anterior.id FROM noticia AS anterior
WHERE anterior.fecha ORDER BY anterior.fecha DESC LIMIT 0,1) AS anterior,

(SELECT siguiente.id FROM noticia AS siguiente
WHERE siguiente.fecha>noticia.fecha
ORDER BY siguiente.fecha ASC LIMIT 0,1) AS siguiente
Esto traducido quiere decir que aparte de seleccionar los campos anteriormente citados, seleccionamos el id de la tabla “noticia” cuyo alias es “anterior”, donde la fecha será anterior a la de la consulta principal. Este registro lo ordenamos por fecha Descendente y limitamos el número de registro a devolver a uno. A esta subconsulta la llamaremos “anterior”.

Lo mismo para la siguiente subconsulta. Seleccionamos el id de la tabla “noticia” cuyo alias es “siguiente”, donde la fecha será posterior a la de la consulta principal. Este registro lo ordenamos por fecha Ascendente y limitamos el número de registro a devolver a uno. A esta subconsulta la llamaremos “siguiente”.

El resultado final del recordset será el siguiente
SELECT noticia.id, noticia.titulo, noticia.texto, noticia.fecha,

(SELECT anterior.id FROM noticia AS anterior
WHERE anterior.fecha ORDER BY anterior.fecha DESC LIMIT 0,1) AS anterior,

(SELECT siguiente.id FROM noticia AS siguiente
WHERE siguiente.fecha>noticia.fecha
ORDER BY siguiente.fecha ASC LIMIT 0,1) AS siguiente

WHERE noticia.id = %s

Si nos fijamos en el panel “Vinculaciones” de Dreamweaver, el juego de registros debería devolvernos los siguientes campos: id, titulo, texto, fecha, anterior y siguiente.

Para terminar la faena, la maquetación final de la noticia podría ser similar a esto.
/ -