Foros del Web » Programando para Internet » PHP »

Conflicto con foro en php (temas por paginas)

Estas en el tema de Conflicto con foro en php (temas por paginas) en el foro de PHP en Foros del Web. Hola a todos, quisieran que me ayude en este codigo, se trata de un mini foro, por el exceso de lista de temas en una ...
  #1 (permalink)  
Antiguo 05/05/2011, 20:00
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 12 años, 11 meses
Puntos: 0
Conflicto con foro en php (temas por paginas)

Hola a todos, quisieran que me ayude en este codigo, se trata de un mini foro, por el exceso de lista de temas en una sola pagina decidi que se cree otra pagina para que continue en esas. El tema es que se crean las paginas, pero no aparecen los temas como tal cual quiero yo, aparece lo mismo.

En este ejemplo cree 5 temas en el foro, y quiero que tres aparescan en cada pagina "$tamPag=3" es la cantidad de temas (3) por pagina pero no sale.

Alguien le encuentra el error? por favor se los agradeceria y les daria puntajes...

Cita:
<?php
require('configuracion.php');
require('funciones.php');
include('header.html');
$numeroRegistros = mysql_num_rows($consulta);

$tamPag=("3");
if(!isset($_GET["pagina"]))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$pagina = $_GET["pagina"];
}

$limitInf=($pagina-1)*$tamPag;


$numPags=ceil($numeroRegistros/$tamPag);
if(!isset($pagina))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$seccionActual=intval(($pagina-1)/$tamPag);
$inicio=($seccionActual*$tamPag)+1;

if($pagina<$numPags)
{
$final=$inicio+$tamPag-1;
}else{
$final=$numPags;
}

if ($final>$numPags){
$final=$numPags;
}
}

$noticia2 = mysql_query("SELECT * FROM foro WHERE identificador=0 ORDER BY ult_respuesta DESC LIMIT ".$limitInf.",". $tamPag=3, $con) or die ("<p>Ocurrio un error</p>");

$numeroDeresultados=mysql_num_rows($noticia2);

if($numeroDeresultados <= 0)
{
echo "<p>No se encontraron resultados</p>";
}
else {
if(mysql_num_rows($noticia2))
{
$template = implode("", file("temas.html"));
include('titulos.html');

while ($qry = mysql_fetch_array($noticia2))
{
$lado=mysql_num_rows($consulta);
while($row = mysql_fetch_array($consulta)) {
$color=($color==""?"#5b69a6":"");
$row["color"] = $color;
mostrarTemplate($template, $row);
}
}
}
}

if($pagina>1)

{
echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."'>";
echo "<font face='verdana' size='-2'>anterior</font>";
echo "</a> ";

}

for($i=$inicio;$i<=$final;$i++)
{
if($i==$pagina)
{
echo "<font face='verdana' size='-2'><b>".$i."</b> </font>";
}else{
echo "<a class='p' href='".$_SERVER["PHP_SELF"].
"?pagina=".$i."'>";
echo "<font face='verdana' size='-2'>".$i."</font></a> ";

}
}
if($pagina<$numPags)
{
echo " <a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."'>";
echo "<font face='verdana' size='-2'>Siguiente</font></a>";
}

include('footer.html');
?>
Este codigo lo saque de otro tema, solo le cambie algunas cosas que podian pero aun asi no hace lo que quiero...
  #2 (permalink)  
Antiguo 05/05/2011, 20:31
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Conflicto con foro en php (temas por paginas)

Con todo respeto es un despaparajo (desastre) tu código, para paginación es realmente sencillo
Código PHP:
Ver original
  1. //Verificamos en que página estamos
  2. if (isset($_GET['page'])) {
  3. $page = $_GET['page'];
  4. }else {
  5. $page = 1;
  6. }
  7.  
  8. //Configuración
  9. $numItemsPorPag = 10;
  10.  
  11. $sql = mysql_query('select id from tabla',$conexion) or die (mysql_error());
  12. //obtenemos el numero total de registros
  13. $numItems = mysql_num_rows($sql);
  14.  
  15. //obtenemos el total de páginas
  16. $numPages = ceil($numItems / $numItemsPorPag);
  17. //obtenemos el numero de items que se mostraran en la página actual
  18. $numItemsInicio = ($numImtesPorPag * ($page - 1));
  19.  
  20. //obtenemos los registros para la página actual
  21. $sql2 = mysq_query('select * from tabla limit '.$numItemsInicio.','.$numItemsPorPag);
  22.  
  23. //mostramos los registros
  24. while($row = mysql_fetch_assoc($sql2)) {
  25. echo $row['titulo'];
  26. }
  27.  
  28. //creamos el menú de paginación
  29. if ($page == 1) {
  30. echo 'Anterior - ';
  31. }else {
  32. echo '<a href="?page='.($page - 1).'">Anterior</a> - ';
  33. }
  34.  
  35. for($i=1; $i<=$numPages; $i++) {
  36. if ($i==$page) {
  37. echo $i.' - ';
  38. }else {
  39. echo '<a href="?page='.$i.'">'.$i.'</a> - ';
  40. }
  41. }
  42.  
  43. if ($numPage == $page) {
  44. echo 'Siguiente';
  45. }else {
  46. echo '<a href="?page='.($page + 1).'">Siguiente</a>';
  47. }

El código lo he hecho al vuelo, puede contener errores ya que no lo he probado, pero básicamente debería funcionar
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 05/05/2011, 20:37
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Conflicto con foro en php (temas por paginas)

Exacto, tu código es prácticamente un revoltijo y tiene varios errores =/
También haces muuuchas operaciones innecesarias o que las puedes hacer en una sola línea.
Mejor intenta el código de Nemutagk que debería funcionar

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #4 (permalink)  
Antiguo 05/05/2011, 21:24
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Conflicto con foro en php (temas por paginas)

Aun me sigue el problema ese, cambio de pagina pero queda aun lo mismo, use el codigo que me pasaste, le cambie a 2 para probar y me aparecen los dos y cuando cambio sigue igual, no muestra el otro... no entiendo porque sucede eso..
  #5 (permalink)  
Antiguo 05/05/2011, 21:26
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Conflicto con foro en php (temas por paginas)

Muestra el código que tienes, y se mas explicito, a que te refieres con que aparecen los dos? dos que?, y cuando cambias no muestra el otro??? cual otro?, no soy adivino, se mas explicito
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #6 (permalink)  
Antiguo 05/05/2011, 21:29
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Conflicto con foro en php (temas por paginas)

Cita:
Aun me sigue el problema ese, cambio de pagina pero queda aun lo mismo, use el codigo que me pasaste, le cambie a 2 para probar y me aparecen los dos y cuando cambio sigue igual, no muestra el otro... no entiendo porque sucede eso..
Estás seguro de haber cambiado las variables necesarias y la query por lo que necesitas?
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #7 (permalink)  
Antiguo 05/05/2011, 21:39
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Conflicto con foro en php (temas por paginas)

si cambie la query y lo demas necesario para que me aparesca los datos y demas, disculpa me referia a los temas, para probar intente cambiar la variable $numItemsPorPag por 2 en ves de 10, y yo publique 4 temas. A lo que voy es que me aparecen nadamas los 2 primeros temas, cambio a la siguiente pagina y me sigue dando los mismos temas anteriores en ves de los siguientes, a ver si me podes entender un poco ahora.

El esquema seria algo asi

Primera pagina:

Tema 1
Tema 2

Anterior - 1 - 2 - Siguiente

-----


Segunda pagina:

Tema 1
Tema 2

Anterior - 1 - 2 - Siguiente

------

En ves de aparecer en la segunda pagina los "Tema 3" y "Tema 4" me aparece nadamas los temas 1 y 2 como en la primera pagina.

Talves ahora se entienda, cual es la solucion para esto?? porque al codigo nadamas le modifique la ubicacion en la tabla de la base de datos para obtener los resultados y el contenido de while($row = mysql_fetch_assoc($sql2)) { ... } con lo mismo del anterior paso para que me aparescan los resultados.
  #8 (permalink)  
Antiguo 05/05/2011, 21:42
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Conflicto con foro en php (temas por paginas)

Tienes que cambiar las dos Query's
Código PHP:
Ver original
  1. //Código...
  2.  
  3. $sql = mysql_query('select id from tabla',$conexion) or die (mysql_error());
  4.  
  5. //más código...
  6.  
  7. $sql2 = mysql_query('select * from tabla limit '.$numItemsInicio.','.$numItemsPorPag) or die(mysql_error());
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #9 (permalink)  
Antiguo 05/05/2011, 21:46
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Conflicto con foro en php (temas por paginas)

Si ya lo hise lo cambie por

Cita:
$sql = mysql_query('select id, autor, titulo, fecha, foto, respuestas, ult_respuesta from foro',$con) or die (mysql_error());

$sql2 = mysql_query('select id, autor, titulo, fecha, foto, respuestas, ult_respuesta from foro limit '.$numItemsInicio.','.$numItemsPorPag);
id, autor, titulo, fecha, foto, respuestas, ult_respuesta lo coloque para que me muestre la informacion, no se si eso afecta a eso.

Con el codigo que me pasaste es lo mismo que me pasaba con lo anterior, solo que este mas resumido y prolijo...
  #10 (permalink)  
Antiguo 05/05/2011, 21:55
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Conflicto con foro en php (temas por paginas)

Probando el código había dos errores:
Código PHP:
Ver original
  1. //El error era que la variable $numItemsPorPag estaba mal escrita en la parte
  2. //donde se calcula los items a mostrar por página
  3. //error:
  4. $numItemsInicio = ($numImtesPorPag * ($page - 1));
  5.  
  6. //Correcto
  7. $numItemsInicio = ($numItemsPorPag * ($page - 1));
  8.  
  9. //el segundo error es que falta la letra L a mysql_query en el segundo query
  10. //y faltaba el mysql_error()
  11. $sql2 = mysql_query('select * from tabla limit '.$numItemsInicio.','.$numItemsPorPag) or die(mysql_error());
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #11 (permalink)  
Antiguo 05/05/2011, 22:01
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Conflicto con foro en php (temas por paginas)

Ahora si =) era ese pequeñito error. El de la L ya me habia dado cuenta cuando me salto error, pero que bien quedo ahora gracias chicos, les dejo puntos y un cordial saludos. Suerte y que les valla bien, les agradecimos mucho, sigan asi!! hasta la proxima!! Adios
  #12 (permalink)  
Antiguo 05/05/2011, 22:44
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Conflicto con foro en php (temas por paginas)

Suerte
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies

Etiquetas: conflicto, foro, temas
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 09:14.