Foros del Web » Programando para Internet » PHP »

Ayuda Con Paginacion...

Estas en el tema de Ayuda Con Paginacion... en el foro de PHP en Foros del Web. Hola, necesito ayuda con esto: estoy haciendo un foro en el que los resultados de los mensajes posteados están paginados c/ 10. Lo que hice ...
  #1 (permalink)  
Antiguo 16/04/2007, 10:14
Avatar de webdesignsite  
Fecha de Ingreso: enero-2007
Mensajes: 155
Antigüedad: 17 años, 2 meses
Puntos: 1
Ayuda Con Paginacion...

Hola, necesito ayuda con esto: estoy haciendo un foro en el que los resultados de los mensajes posteados están paginados c/ 10. Lo que hice es que cuando alguien postea un mensaje que el mismo se vea inmediatamente mediante un link con anclaje como este foro, algo así: foro.php?pagina=3&newpost=30#31, o sea, que ese foro estará paginado en 10 resultados c/ pagina y c/ vez que alguien postee se dirigirá directamente a la pagina de resultado que corresponda a ese post.

Bién, luego de esta introducción, mi problema es este: cuando se postea un mensaje y éste corresponde por ej. al post nº 11, 21, 31, 41, 51, etc.,
debería direccionarse a su pagina y anclaje correspondiente y no lo hace (por ej. post nº31 sería foro.php?pagina=3&newpost=30#31), este problema ocurre solo en esa ocación después funciona perfecto.

Donde podría estar el problema?, supongo que el inconveniente podría estar cuando en el script se dividen $total_paginas = ceil($num_total_registros / $TAMANO_PAGINA); en el ceil, pero no me funciono.

El script de paginación que utilizo es este, ademas utilizo template:

/examino la página a mostrar y el inicio del registro a mostrar
$pagina = $_GET["pagina"];
if (!$pagina) {
$inicio = 0;
$pagina=1;
}
else {
$inicio = ($pagina - 1) * $TAMANO_PAGINA;
}

//miro a ver el número total de campos que hay en la tabla con esa búsqueda
$ssql = "select * from foro";
$rs = mysql_query($ssql,$conn);
$num_total_registros = mysql_num_rows($rs);
//calculo el total de páginas
$total_paginas = ceil($num_total_registros / $TAMANO_PAGINA);


//pongo el número de registros total, el tamaño de página y la página que se muestra
set_var("mostrarpag"," <font color='#000000' size='1' face='Verdana, Arial, Helvetica, sans-serif'>Página </font> " . "<font color='#000000' size='1' face='Verdana, Arial, Helvetica, sans-serif'><strong>$pagina </strong></font>" . " <font color='#000000' size='1' face='Verdana, Arial, Helvetica, sans-serif'>de </font> " . " <font color='#000000' size='1' face='Verdana, Arial, Helvetica, sans-serif'><strong>$total_paginas </strong></font> ");
set_var("totpag"," <font color='#000000' size='1' face='Verdana, Arial, Helvetica, sans-serif'>Registros encontrados: </font> " . " <font color='#000000' size='1' face='Verdana, Arial, Helvetica, sans-serif'><strong>$num_total_registros </strong></font> ");

//construyo la sentencia SQL
$ssql = "select * from foro " . " limit " . $inicio . "," . $TAMANO_PAGINA;
$rs = mysql_query($ssql);

/************************************************** ****/
/* Funcion paginar
* actual: Pagina actual
* $num_total_registros: Total de registros
* por_pagina: Registros por pagina
* enlace: Texto del enlace
* Devuelve un texto que representa la paginacion
*/
function paginar($actual, $num_total_registros, $TAMANO_PAGINA, $enlace) {
$total_paginas = ceil($num_total_registros/$TAMANO_PAGINA);
$anterior = $actual - 1;
$posterior = $actual + 1;
if ($actual>1)
$texto = "<a href=\"$enlace$anterior#comfaq\"><font color='0000ff' size='1' face='Verdana, Arial, Helvetica, sans-serif'><strong>&laquo;Anterior</strong></font></a> ";
else
$texto = "";
for ($i=1; $i<$actual; $i++)
$texto .= "<a href=\"$enlace$i#comfaq\"><font color='0000ff' size='1' face='Verdana, Arial, Helvetica, sans-serif'><strong>$i</strong></font></a> ";
$texto .= "<font color='000000' size='1' face='Verdana, Arial, Helvetica, sans-serif'><strong>$actual </strong></font>";
for ($i=$actual+1; $i<=$total_paginas; $i++)
$texto .= "<a href=\"$enlace$i#comfaq\"><font color='0000ff' size='1' face='Verdana, Arial, Helvetica, sans-serif'><strong>$i</strong></font></a> ";
if ($actual<$total_paginas)
$texto .="<a href=\"$enlace$posterior#comfaq\"><font color='0000ff' size='1' face='Verdana, Arial, Helvetica, sans-serif'><strong>Siguiente&raquo;</strong></font></a>";
else
$texto .= "";
return $texto;
}

set_var("pags",paginar($pagina, $num_total_registros, $TAMANO_PAGINA, "foro.php?pagina="));



y en la parte en la que se debería dirigir luego de postear a otro archivo es esta:
$ssql = "SELECT * FROM foro order by id DESC";
$rs = mysql_query($ssql);
$f = mysql_fetch_object($rs);
header("Location:foro.php?pagina=$total_paginas&ne wpost=$f->id#$f->id");

Bueno espero haber sido claro.

Gracias.


Saludos!!!

Última edición por webdesignsite; 16/04/2007 a las 14:28
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 10:24.