Foros del Web » Programando para Internet » PHP »

Necesito insertar un código para paginación de noticias...

Estas en el tema de Necesito insertar un código para paginación de noticias... en el foro de PHP en Foros del Web. Hola, estoy haciendo un sitio web que contiene noticias... mi consulta sql es la siguiente y me funciona perfecta... @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original ...
  #1 (permalink)  
Antiguo 07/09/2010, 20:05
 
Fecha de Ingreso: diciembre-2009
Mensajes: 24
Antigüedad: 14 años, 4 meses
Puntos: 0
Necesito insertar un código para paginación de noticias...

Hola, estoy haciendo un sitio web que contiene noticias... mi consulta sql es la siguiente y me funciona perfecta...

Código PHP:
Ver original
  1. Código PHP:
  2.  
  3. <?php
  4. include("conectar.php");                            
  5. $noticias = mysql_query("SELECT id, noticia, titular, fecha, fotosmall, id, epigrafe FROM noticias ORDER BY id DESC LIMIT 10");
  6. $noticia1 = mysql_query("SELECT id, noticia, titular, fecha, fotosmall, id, epigrafe FROM noticias ORDER BY id DESC LIMIT 10");
  7. if($row_not = mysql_fetch_row($noticias)){
  8.     while ($row = mysql_fetch_row($noticia1))
  9.     {  
  10.    
  11.     if($row[4] != NULL)
  12.         {
  13.         echo "<table width='480'>";
  14.         echo "<td width='140' height='140'>";
  15.         echo "<img width='140' height='140' src='$row[4]'>";
  16.         echo "</td>";
  17.         echo "<td width='10' height='140'>";
  18.         echo "</td>";}
  19.         echo "<td width='370'>";
  20.         echo "<a class='fecha'>$row[3]</a><br>";
  21.         if($row[6] != NULL)
  22.        {echo "<a class='subtitulos'>$row[6]</a><br>";}
  23.         echo "<a class='titulos'>$row[1]</a><br><br>";
  24.         echo "<a class='texto' href='noticiacompleta.php?id=$row[5]'>$row[2]</a>";
  25.         echo "</td>";
  26.         echo "</table>";
  27.         echo "<hr>";    
  28.     }
  29. }
  30. else {                
  31.     echo "<a align='center' class='texto'>Actualizando Información...</a><br><br>";                                
  32. }
  33.  
  34.  
  35.  
  36. ?>

Mi problema es que 10 noticias son suficientes para verlas en pantalla, por eso las limité en 10, pero necesito poder paginarlas porque ya llevo 12 y no quiero tener un listado infinito hacia abajo...

Quiero saber algún script php para insertar en mi consulta sql para que se paginen las noticias de 10 en 10, pero que no haya que estar arreglándolo a medida que aumenta el número de noticias... cabe mencionar que estoy en proceso de aprendizaje de php y sql... si alguien pudiera ayudarme con esto le estaré eternamente agradecido...
  #2 (permalink)  
Antiguo 07/09/2010, 20:16
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: Necesito insertar un código para paginación de noticias...

pues hay un monton de info en san google..

te recomiendo que busques, y si tienes alguna dudilla pues vengas.. y te ayudamos.. es bastante sencillo la verdad :)
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #3 (permalink)  
Antiguo 07/09/2010, 20:33
 
Fecha de Ingreso: abril-2010
Ubicación: Bogotá; Colombia
Mensajes: 17
Antigüedad: 14 años
Puntos: 1
Respuesta: Necesito insertar un código para paginación de noticias...

Dale una buscada a una herramienta llamada "paginator.inc.php" es justo lo que buscas y bastante facil de implementar.
  #4 (permalink)  
Antiguo 07/09/2010, 21:08
 
Fecha de Ingreso: julio-2010
Mensajes: 127
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: Necesito insertar un código para paginación de noticias...

Código:
Estaba de paso y solo tengo unos minutos  asi que sere simple y dare poca informacion
lo que buscas se llama LIMIT
se utiliza asi:
$cantidad="10"; //la cantidad de noticias que quieres mostrar

$pag = (int) $_GET["pag"]; 
if ($pag < 1) //si la pagina es la primera entonces te dira que es 0, debemos ponerle de cantidad 1
{ 
   $pag = 1; 
} 
$inicio = $cantidad * $pag; //el inicio es variable dependiendo en la pagina en la que estes: osea si estas en la pagina 3 y son de 10 en 10 comentarios el inicio sera en la noticia #30


$noticias = mysql_query("SELECT id, noticia, titular, fecha, fotosmall, id, epigrafe FROM noticias ORDER BY id DESC LIMIT $inicio,$cantidad);

//aqui pones tu forma de imprimir las noticias

$sql = "SELECT SQL_CALC_FOUND_ROWS id,noticia titular,date,class,link,comment FROM noticias order by id DESC LIMIT $inicio, $cantidad"; 
$sqlTotal = "SELECT FOUND_ROWS() as total"; 
 
$rs = mysql_query($sql); 
$rsTotal = mysql_query($sqlTotal); 
 
$rowTotal = mysql_fetch_assoc($rsTotal); 
// Total de registros sin limit 
$total = $rowTotal["total"]; 
         $totalPag = ceil($total/$contenido); 
         for($i=1; $i<=$totalPag ; $i++) 
         { 
            $links[] = "<a href=\"?pag=$i\">$i</a>";  
         } 
         echo implode($links);
__________________
Mi ultima web.
  #5 (permalink)  
Antiguo 07/09/2010, 21:44
 
Fecha de Ingreso: diciembre-2009
Mensajes: 24
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Necesito insertar un código para paginación de noticias...

Muchas gracias... al parecer funciona bien pero tiene un error al final en la última línea... faltará algo?? no me aparecen los links de las páginas y me sale

Warning: Division by zero in C:\AppServ\www\agropecuario.cl\noticias.php on line 549

Warning: implode() [function.implode]: Argument must be an array in C:\AppServ\www\agropecuario.cl\noticias.php on line 554
  #6 (permalink)  
Antiguo 07/09/2010, 22:17
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Necesito insertar un código para paginación de noticias...

pues otro ejemplo
el error que aparece es porque estas pasando un parámetro que no es un array, cuando necesitas que lo sea,
y la división por cero... mandamiento matemático...
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #7 (permalink)  
Antiguo 07/09/2010, 23:10
 
Fecha de Ingreso: diciembre-2009
Mensajes: 24
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Necesito insertar un código para paginación de noticias...

Cita:
Iniciado por rodojpm Ver Mensaje
Código:
Estaba de paso y solo tengo unos minutos  asi que sere simple y dare poca informacion
lo que buscas se llama LIMIT
se utiliza asi:
$cantidad="10"; //la cantidad de noticias que quieres mostrar

$pag = (int) $_GET["pag"]; 
if ($pag < 1) //si la pagina es la primera entonces te dira que es 0, debemos ponerle de cantidad 1
{ 
   $pag = 1; 
} 
$inicio = $cantidad * $pag; //el inicio es variable dependiendo en la pagina en la que estes: osea si estas en la pagina 3 y son de 10 en 10 comentarios el inicio sera en la noticia #30


$noticias = mysql_query("SELECT id, noticia, titular, fecha, fotosmall, id, epigrafe FROM noticias ORDER BY id DESC LIMIT $inicio,$cantidad);

//aqui pones tu forma de imprimir las noticias

$sql = "SELECT SQL_CALC_FOUND_ROWS id,noticia titular,date,class,link,comment FROM noticias order by id DESC LIMIT $inicio, $cantidad"; 
$sqlTotal = "SELECT FOUND_ROWS() as total"; 
 
$rs = mysql_query($sql); 
$rsTotal = mysql_query($sqlTotal); 
 
$rowTotal = mysql_fetch_assoc($rsTotal); 
// Total de registros sin limit 
$total = $rowTotal["total"]; 
         $totalPag = ceil($total/$contenido); 
         for($i=1; $i<=$totalPag ; $i++) 
         { 
            $links[] = "<a href=\"?pag=$i\">$i</a>";  
         } 
         echo implode($links);
Primero que todo, gracias....
El código tenía un par de caracteres que faltaban (un " y un ; en algunas partes) pero eso lo puede arreglar y se solucionó...

Pero tengo 2 problemas que no he podido solucionar aún...

1.- La primera página que me muestra es la segunda que debería mostrar... sólo cuando le pongo $pag = 0 en vez de $pag < 0, se vé correcto, pero no sé si está bien desde el punto de vista teórico.... así

if ($pag = 0)
{
$pag = 1;
}


2.- Me aparece este error en vez de los links de las páginas:

Warning: Division by zero in C:\AppServ\www\agropecuario.cl\noticias.php on line 550
1

Bueno, igual aparece el link 1 al final que me lleva a la misma página... en teoría debería aparecer también la página 2, cierto?? pero no aparece...
  #8 (permalink)  
Antiguo 08/09/2010, 14:43
 
Fecha de Ingreso: julio-2010
Mensajes: 127
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: Necesito insertar un código para paginación de noticias...

Código:
Estaba de paso y solo tengo unos minutos  asi que sere simple y dare poca informacion
lo que buscas se llama LIMIT
se utiliza asi:
$cantidad="10"; //la cantidad de noticias que quieres mostrar

$pag = (int) $_GET["pag"]; 
if ($pag < 1) //si la pagina es la primera entonces te dira que es 0, debemos ponerle de cantidad 1
{ 
   $pag = 1; 
} 
$inicio = $cantidad * $pag; //el inicio es variable dependiendo en la pagina en la que estes: osea si estas en la pagina 3 y son de 10 en 10 comentarios el inicio sera en la noticia #30


$noticias = mysql_query("SELECT id, noticia, titular, fecha, fotosmall, id, epigrafe FROM noticias ORDER BY id DESC LIMIT $inicio,$cantidad);

//aqui pones tu forma de imprimir las noticias

$sql = "SELECT SQL_CALC_FOUND_ROWS id,noticia titular,date,class,link,comment FROM noticias order by id DESC LIMIT $inicio, $cantidad"; 
$sqlTotal = "SELECT FOUND_ROWS() as total"; 
 
$rs = mysql_query($sql); 
$rsTotal = mysql_query($sqlTotal); 
 
$rowTotal = mysql_fetch_assoc($rsTotal); 
// Total de registros sin limit 
$total = $rowTotal["total"]; 
         $totalPag = ceil($total/$cantidad); 
         for($i=1; $i<=$totalPag ; $i++) 
         { 
            $links[] = "<a href=\"?pag=$i\">$i</a>";  
         } 
         echo implode($links);
__________________
Mi ultima web.
  #9 (permalink)  
Antiguo 08/09/2010, 14:44
 
Fecha de Ingreso: julio-2010
Mensajes: 127
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: Necesito insertar un código para paginación de noticias...

el problema es que puse una variable como contenido y otro como cantidad... me dices el error y te ayudo
__________________
Mi ultima web.
  #10 (permalink)  
Antiguo 09/09/2010, 01:22
 
Fecha de Ingreso: diciembre-2009
Mensajes: 24
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Necesito insertar un código para paginación de noticias...

ahora ya no aparece el error "division by zero" y se ven perfectos los links de la páginas en la parte de abajo, pero... las muestra mal...

Cuando abro la página de las noticias me aparece la que en teoría debería ser la segunda pagina, como si fuera la primera y me aparecen los links 1 y 2 (obviamente a respectivas páginas)... el 1 me lleva a la misma página y el 2 me lleva a otra que aún no tiene información...

Ahora bien, si le cambio arriba if ($pag < 1) por if ($pag = 0) me la muestra bien pero no me aparece el link a la segunda página...

no puedo descifrar qué podrá ser pero es probable que el llamado de la página sea responsable del error...

tengo 2 posibles soluciones, pero no sabría ejecutarlas...

1.- habría que hacer que la página 0 no lleve contenido, o que la consulta se salte la numeración de la ppágina 0, de esta forma la página 1 correspondiente vendría a quedar como la primera y problema solucionado...

2.- cambiar la forma de llamar la página... como lo intenté, ponerle if ($pag = 0), pero habría que arreglar el problema del link de la página 2 que no aparece...

Agradezco tu ayuda, esto sería lo último y no te molesto más...

Etiquetas: paginacion, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:54.