Autor Tema: AYUDA! - ¿Cómo hago que mi sistema de noticias...?  (Leído 692 veces)

Desconectado WuggyCakes

  • PHPerit@
  • *
  • Mensajes: 1
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
AYUDA! - ¿Cómo hago que mi sistema de noticias...?
« en: 17 de Abril de 2015, 05:12:31 am »
Primero que todo, saludos.

Quería preguntarles acerca de algo que me ha estado inquietando últimamente: necesito hacer un sistema de paginación (no se como llamarlo, la verdad).

El objetivo es que después de consultar a la base de datos dos noticias ordenadas de más recientes a mas antiguas, en el fondo de la página me aparezcan opciones de que página quiero consultar. Algo así como:


Código: [Seleccionar]
Noticia uno
Código: [Seleccionar]
Noticia dos

Pagina: 1, 2, 3, 4, 5, 6, 7, 8, >>



Que al pasar de página, las noticias sigan su orden de más recientes a más antiguas justo donde se había quedado en la página anterior.

No se si me explico con claridad, pero algo así quiero lograr.

Gracias.

Comunidad PHPeros

AYUDA! - ¿Cómo hago que mi sistema de noticias...?
« en: 17 de Abril de 2015, 05:12:31 am »

Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:AYUDA! - ¿Cómo hago que mi sistema de noticias...?
« Respuesta #1 en: 25 de Abril de 2015, 00:54:32 am »
Ten en cuenta que LIMIT de SQL permite pasar dos parámetros que sería el comienzo y final para definir un segmento de búsqueda.

Ahí tienes la clave.
Twitter: @JoakoM010



Desconectado autorojo

  • PHPer@
  • **
  • Mensajes: 59
  • Karma: 0
    • Ver Perfil
Re:AYUDA! - ¿Cómo hago que mi sistema de noticias...?
« Respuesta #2 en: 16 de Mayo de 2015, 06:52:22 am »
Hay muchas maneras de "paginizar". A mi me pareció simple utilizar <select> y preparé un código más o menos así...

Código: [Seleccionar]
<?php 

// $actPag es la página actual
// $maxPag es el máximo de páginas

// Inicio de la tabla
echo "<table cellspacing=\"0px\" style=\"width: 100%; max-width:1000px; margin: auto; padding: 2 0;\">\n";
echo 
"\t<tr>\n";
echo 
"\t\t<td style=\"text-align:right;\">\n";

if(
$actPag 1)
{
echo "\t\t\t<button type=\"button\" onclick=\"location = 's_verpaginas.php'\">&lt;&lt;</button>\n"// Botón para volver a la primer página
echo "\t\t\t<button type=\"button\" onclick=\"location = 's_verpaginas.php?pagina="// Botón para ir a la página anterior
echo $actPag-1// Botón para ir a la página anterior
echo "'\">&lt;</button>\n"// Botón para ir a la página anterior
}

// Este sería un bucle con el menú de todas las páginas (desde el 1 hasta $maxPag) en <select> y <option>.
// Al pinchar en una opción, te redirecciona mediante javascript a la nueva página.
echo "\t\t\t<select onchange=\"location = this.options[this.options.selectedIndex].value\">\n";
for(
$i=1;$i<=$maxPag;$i++)
{
echo "\t\t\t\t<option value=\"s_verpaginas.php?pagina={$i}\"";
if($i == $actPag) echo " selected=\"selected\""// Selecciona la página actual
echo ">{$i}</option>\n";
}
echo 
"\t\t\t</select>\n";

if(
$actPag $maxPag)
{
echo "\t\t\t<button type=\"button\" onclick=\"location = 's_verpaginas.php?pagina="// Botón para ir a la página siguiente
echo $actPag+1// Botón para ir a la página siguiente
echo "'\">&gt;</button>\n"// Botón para ir a la página siguiente
echo "\t\t\t<button type=\"button\" onclick=\"location = 's_verpaginas.php?pagina={$maxPag}'\">&gt;&gt;</button>\n"// Botón para ir a la última página ($maxPag)
}

// Cierre de la tabla
echo "\t\t</td>\n";
echo 
"\t</tr>\n";
echo 
"</table>\n";

?>

Para mostrar "dos noticias ordenadas de mas recientes a mas antiguas" podrías hacer una consulta así:

SELECT * FROM `noticias` ORDER BY `id` DESC LIMIT 2;

SELECT * - seleccionar todas las columnas
FROM `noticias` - de la tabla 'noticias'
ORDER BY `id` - ordenadas por 'id'
DESC - de manera descendente (es decir, ordenará las ID empezando por la última)
LIMIT 2 - con límite de 2 filas


Respecto a "paginizar", es algo muy complicado y hay muchas formas de hacerlo. Justamente hoy estaba preparando un menú con páginas en PHP. Si estás interesado puedo publicar aquí mismo el código completo.