Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/06/2015, 09:49
Avatar de mayhemarg
mayhemarg
 
Fecha de Ingreso: junio-2015
Ubicación: Buenos Aires
Mensajes: 3
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: [Pedido] Paginador para noticias formato blog.

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&oacute;n</a></li>
		<li><a href="registrar.php">Reg&iacute;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&oacute;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?