Ya logré hacer que no haya errores en las variables ni constantes y tampoco en las consultas. Pero sigo teniendo un problema. Por ejemplo, limito el registro a 3 por página. Creo 1, 2 o 3 noticias y un 1 aparece en el paginador. Cuando creo la cuarta y quinta noticia, aparece un 2 en el paginador, pero se siguen mostrando las 5 noticias en vez de que las noticias 1 y 2 vayan a parar a la segunda página. Y si voy a la página 2, se siguen mostrando todas las noticias. Es decir, las páginas las crea, pero muestran todas lo mismo: todos los registros.
El código es este:
Código:
<?php
// iniciamos session
session_start ();
// archivos necesarios
require_once 'admin/config.php';
require_once 'admin/conexion.php';
require_once 'admin/esUsuario.php';
// obtengo puntero de conexion con la db
$dbConn = conectar();
// vemos si el usuario quiere desloguar
if ( !empty($_GET['salir']) ) {
// borramos y destruimos todo tipo de sesion del usuario
session_unset();
session_destroy();
}
// verificamos que no este conectado el usuario
if ( !empty( $_SESSION['usuario'] ) && !empty($_SESSION['password']) ) {
$arrUsuario = esUsuario( $_SESSION['usuario'], $_SESSION['password'], $dbConn );
}
// listado de noticias
// traemos listado de noticias
$arrNoticias = array();
$query = "SELECT idNoticia, titulo, copete FROM `noticias` WHERE fPublicacion < '".date('Y-m-d')."' ORDER BY fPublicacion DESC";
$resultado = mysql_query ($query, $dbConn);
while ( $row = mysql_fetch_assoc ($resultado)) {
array_push( $arrNoticias,$row );
}
//paginador
//Total de noticias por página
$por_pag = 2;
// Variable para página actual
$pag_actual = 1;
//variable para máximo de páginas
$pag_max= 2;
//CUenta las noticias:
$consulta = "SELECT COUNT(*) FROM noticias WHERE fPublicacion < '".date('Y-m-d')."' ";
$res = mysql_query($consulta) or die ('Error en la consulta');
list ($total_noticias) = mysql_fetch_row($res);
//Calcular el total de páginas
$pag_max = ceil($total_noticias / $por_pag);
// Buscar en GET la página a mostrar, si no exista, será la 1
if (isset($_GET['pag'])) {
$pag_actual = (int) $_GET['pag']; //Forzamos a que sea un valor entero
// Verifica que la página esté dentro de los límiites permitidos
if ($pag_actual < 1) {$pag_actual = 1;}
if ($pag_actual > $pag_max) {$pag_actual = $pag_max;}
}
//Ya tienes la página actual, ahora hay que limitar la consulta
$inicio = ($pag_actual * $por_pag) - $por_pag;
// Limitamos la consulta
$consulta = "SELECT * FROM noticias ORDER BY fPublicacion WHERE fPublicacion < '".date('Y-m-d')."' DESC LIMIT $inicio, $por_pag";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Blog Personal</title>
</head>
<body>
<h1>Blog Personal</h1>
<?php if ( !empty($_GET['registro']) ) { ?>
<div>El registro ha sido exitoso.</div>
<?php } ?>
<?php if ( empty($arrUsuario['usuario']) ) { ?>
<ul>
<li><a href="ingresar.php">Iniciar sesión</a></li>
<li><a href="registrar.php">Regístrate gratis</a></li>
</ul>
<?php } else { ?>
<p>Bienvenido <?php echo $arrUsuario['usuario'] ?> - <a href="index.php?salir=true">Salir</a></p>
<?php if ( $arrUsuario['tipo'] == 'admin' ) { ?>
<ul>
<li><a href="admin/index.php">Panel de administración</a></li>
</ul>
<?php } ?>
<?php } ?>
<h2>Noticias</h2>
<?php foreach ( $arrNoticias as $noticias ) { ?>
<div>
<h3><a href="vernoticia.php?idNoticia=<?php echo $noticias['idNoticia']; ?>"><?php echo $noticias['titulo']; ?></a></h3>
<p><?php echo $noticias['copete']; ?></p>
</div>
<?php } ?>
<?php for($i = 1; $i < $pag_max; $i++) { ?>
<table><tr>
<?php echo "<td><a href=\"index.php?pag=$i\">$i</a></td>"; ?>
</tr></table>
<?php } ?>
</body>
</html>
Ahora bien, creo que el problema mayor recide aquí:
Código:
<h2>Noticias</h2>
<?php foreach ( $arrNoticias as $noticias ) { ?>
<div>
<h3><a href="vernoticia.php?idNoticia=<?php echo $noticias['idNoticia']; ?>"><?php echo $noticias['titulo']; ?></a></h3>
<p><?php echo $noticias['copete']; ?></p>
</div>
<?php } ?>
Con el
foreach estoy trayendo todas las noticias de la primer consulta que hago al traer el Id, título y copete de la noticia. Y yo solo quiero que se muestren 3 por página. ¿Cómo tendría que proseguir para poder limitar a solo 3 registros por página?