Foros del Web » Programando para Internet » PHP »

Problema con el uso de limit para dividir en pagina los mensajes de un foro

Estas en el tema de Problema con el uso de limit para dividir en pagina los mensajes de un foro en el foro de PHP en Foros del Web. Hola xic@s..!!! miren necesito vuestr ayuda... estoy aciendo un foro para clase.. y me e kedao enganchao en el uso del limit.. me ha comentado ...
  #1 (permalink)  
Antiguo 07/02/2008, 15:17
 
Fecha de Ingreso: enero-2006
Mensajes: 12
Antigüedad: 18 años, 3 meses
Puntos: 0
Exclamación Problema con el uso de limit para dividir en pagina los mensajes de un foro

Hola xic@s..!!! miren necesito vuestr ayuda... estoy aciendo un foro para clase.. y me e kedao enganchao en el uso del limit.. me ha comentado mi profesor por encima pero no me llega a funcionar..

Código PHP:
if (!isset($_GET['start']))
     {
    
$start=1;
    
$end=10;
     }else{
        
$start=$_GET['start'];
        
$end=$_GET['end'];

        }
$sql="select titulo,autor,fecha,id_tema from temas order by $ordernar limit $start,$end";
$result=mysql_query($sql);

//Comienzo para mostrar el numero de páginas

$total_num=mysql_num_rows($result);
$totalnum2=$total_num/10;
for(
$num=1;$num<$totalnum2;$num++)
{
$start=($num*10)-9;
$end=$num*10;
echo 
"<a href=\"index.php?start=".$start."&end=".$end."\">".$num."</a>";
}
?> 

pero me da un error.. al ir cambiando de pagina me van desapareciendo los enlaces.. me dice mi profesor que como $total_num vale 10, al acer la division, el for no lo llega acer., pero no se q acer al respecto..

me podeis ayudar por favor..!!
muchas gracias

Última edición por kimbo89; 07/02/2008 a las 15:20 Razón: codigo php
  #2 (permalink)  
Antiguo 07/02/2008, 15:41
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Re: Problema con el uso de limit para dividir en pagina los mensajes de un foro

Bueno, en primera creo no tienes bien definido las propiedades de limit, por lo que puedo deducir tu variable $end estas indicando hasta que indice tomar, sin embargo esa no es la funcion, veras estas son las propiedades de LIMIT

Código PHP:
$inicio 1;
$cuantos_registros_regresa 20;
$sq="select * from tabla LIMIT $inicio,$cuantos_registros_regresa"
ahora veras que vas por mal camino (pero con un mismo objetivo) porque en ves de pasar la varable $start y $end porque no mejor pasas el numero de pagina a cargar, por ejemplo:

supongamos que tenemos un foro y en determinado foro tenemos un numero de mensajes, supongamos 100, ahora, nosotros queremos visualizar 20 por pagina, entonses solo divimos el total de comentarios por el numero por pagina

Código PHP:
$total_reg 100;
$num_pag ceil($total_reg $cuantos_registros_regresa ); 
Como puedes ver, utilisamos la funcion ceil() que al dar un numero con decimales (por ejemplo 5.6) redondea el numero a uno mayor (en este caso a 6), esto es importante porque no podemos tener 5 paginas y media si fuera el caso, tendriamos que tener 6 paginas

ahora para la seccion de sql solo tienes que calcular desde cual indice comenzar recojer y cuantos se tienen que recojer

Código PHP:
$pag_actual 1//aqui tendrias que validar si se accede a la primera pagina o a una segunda con alguna varible GET
$reg_inicio = ($pag_actual 1) * $pag_actual//recuerda que el contador inicia desde 0

$sql="select * from tabla LIMIT $reg_inicio,$cuantos_registros_regresa"
y ahora solo te faltaria generar los enlaces

Código PHP:
echo '<a href="index.php?pag='.($pag_actual 1).'">Siguiente</a>'
esto es algo muy basico pero que creo te ayudara a comprender mejor el sistema de paginacion (que es lo que estas tratando de hacer)

si tienes alguna duda solo pregunta

aahh se me olvidaba, para generar los enlaces del tipo 'Anterior 1 2 3 4 Siguiente' es facil, solo con un for

Código PHP:
$url='';
for (
$i=1$i<=$total_pag$i++) {
if (
$i == $pag_actual) {
$url .= '<strong>'.$i.'</strong> ';
}else {
$url .= '<a href="index.php?pag='.$i.'">'.$i.'</a> ';
}

__________________
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 07/02/2008, 15:43
 
Fecha de Ingreso: enero-2006
Mensajes: 12
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Problema con el uso de limit para dividir en pagina los mensajes de un foro

okey muchisimas gracias..!! a servido de gran ayuda.. voy a probrarlo ara mismo..;)
  #4 (permalink)  
Antiguo 07/02/2008, 16:06
 
Fecha de Ingreso: enero-2006
Mensajes: 12
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Problema con el uso de limit para dividir en pagina los mensajes de un foro

gracias por todo, pero una pregunta..
Código PHP:
//INICIO
//ver el total de registros
$todos="select * from temas";
$num_todos=mysql_query($todos);
$total_reg mysql_num_rows($num_todos);
$cuantos_registros_regresa=10//el numreo de registros por pagina
$num_pag ceil($total_reg $cuantos_registros_regresa ); //hacer la division para el total de paginas  

if(!isset($_GET['pag']))
{
$pag_actual 1//aqui tendrias que validar si se accede a la primera pagina o a una segunda con alguna varible GET
}

$reg_inicio = ($pag_actual 1) * $pag_actual//recuerda que el contador inicia desde 0

$sql="select titulo,autor,fecha,id_tema from temas order by $ordernar limit $reg_inicio,$cuantos_registros_regresa";

$result=mysql_query($sql);

$url='';

for (
$i=1$i<=$num_pag $i++) 
{
if (
$i == $num_pag ) {
$url .= '<strong>'.$i.'</strong> ';
}else {
$url .= '<a href="index.php?pag='.$i.'">'.$i.'</a> ';
}

echo 
$url
Al moverme de pagina no ace nada.. se pasa la variable por el $_Get pero no los muestra..
mira te dejo la url

http://miguelcasa.es/forito/file
  #5 (permalink)  
Antiguo 07/02/2008, 16:29
 
Fecha de Ingreso: enero-2006
Mensajes: 12
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Problema con el uso de limit para dividir en pagina los mensajes de un foro

problema resuelto..!!!!! era q en en $pag_actual, no guardaba el $_get
muchas gracias en serio..!!
  #6 (permalink)  
Antiguo 07/02/2008, 16:30
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Re: Problema con el uso de limit para dividir en pagina los mensajes de un foro

ajajaja, es senciilo el problema, el problema es que si validas si existe la varable $_GET["pag"] pero luego no haces nada con ella, te dejo el codigo modificado

Código PHP:
//INICIO 
//ver el total de registros 
$todos="select * from temas"
$num_todos=mysql_query($todos); 
$total_reg mysql_num_rows($num_todos); 
$cuantos_registros_regresa=10//el numreo de registros por pagina 
$num_pag ceil($total_reg $cuantos_registros_regresa ); //hacer la division para el total de paginas   

if(!isset($_GET['pag'])) { 
$pag_actual 1//aqui tendrias que validar si se accede a la primera pagina o a una segunda con alguna varible GET 
}else {
$pag_actual $_GET['pag'];
}

$reg_inicio = ($pag_actual 1) * $pag_actual//recuerda que el contador inicia desde 0 

$sql="select titulo,autor,fecha,id_tema from temas order by $ordernar limit $reg_inicio,$cuantos_registros_regresa"

$result=mysql_query($sql); 

$url=''

for (
$i=1$i<=$num_pag $i++)  

if (
$i == $num_pag ) { 
$url .= '<strong>'.$i.'</strong> '
}else { 
$url .= '<a href="index.php?pag='.$i.'">'.$i.'</a> '

}  
echo 
$url
Bueno ya vi que resolviste el problema tu mismo ^^
__________________
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 =)
  #7 (permalink)  
Antiguo 07/02/2008, 17:16
 
Fecha de Ingreso: febrero-2008
Mensajes: 72
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Problema con el uso de limit para dividir en pagina los mensajes de un foro

Buenas, yo tngo el siguiente problema, he puesto lo k habeis dicho, pues yo tambien hago el mismo foro, (vamos a la misma clase XD) y weno la cuestion es k me liado vastante y a mi me muestra las paginas, pero no me divide los temas y ademas, me los muestra todos, por lo que me gustaria saver como hacer que me funcione, dejo aqui mi codigo
Código PHP:
<a href="index.php"  ><img src="./volver.png"  border="0"></a>
<table bgcolor="fff6a3" width="800" align="center">
<tr background="./titema.jpg"><td width="600"><font color="red" >Titulo </td>
<td witdh="100" > <font color="red" >Autor</td>
<td witdh="100"> <font color="red" >Fecha</td>

</tr>
<?php
mysql_connect
("localhost","root","");
mysql_select_db("foro");
$categoria$_GET["cate"];
$sql="Select * from tema where id_categoria=$categoria";
$resul=mysql_query($sql);
$muestra=mysql_num_rows($resul);
$to=$muestra/20;
$n 0;

$to="select * from tema";
$nu=mysql_query($to);
$to mysql_num_rows($nu);
$cuant=10
$n_pag ceil($to $cuant );

if(!isset(
$_GET['pag']))
{
$actual 1; }
else
{
$pag_actual=$_GET['pag'];
}
$ini=$actual*$cuant;


$sql="select * from tema limit $in,$cuant";

$result=mysql_query($sql);

$ura='';


while (
$temamysql_fetch_array($resul))
{
if (
$n%== 0)
{
$color="./tema1.jpg";
$n++;
}
else
{
$color="./tema2.jpg";
$n++;
}

?>
<tr background="<?php echo $color ?>"><td> <img src="./1.png"> <a href="ver_tema.php?tem=<?php echo $tema['id_tema']?>&cate=<?php echo $categoria?>"><?php echo $tema['titulo'?></a></td>
<td ><?php echo $tema['autor'?> </td>
<td > <?php echo $tema['fecha'?></td>

<?php 
}

echo 
"<tr background=\"./titema.jpg\"><td><font color=\"shadow\">Hay "mysql_num_rows($resul)." tema</tr></td>";

mysql_free_result($resul);
mysql_close();
?>
</td><td>
<?php
for ($ii=1$ii<=$n_pag $ii++) 
{
if (
$ii == $num_pag ) {
$ura .= '<strong>'.$ii.'</strong> ';
}else {
$ura .= '<a href="temas.php?cate='.$_GET["cate"] .'&pag='.$ii.'">'.$ii.'</a> ';
}

echo 
$ura;
?>
</td></tr>
</table>
dejo tambien las tablas para que se vea bien lo que kiero hacer. Gracias y espero ansioso la respuesta
  #8 (permalink)  
Antiguo 07/02/2008, 17:23
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Re: Problema con el uso de limit para dividir en pagina los mensajes de un foro

bueno, en primera te siguiero como amigo que organices tu codigo mejor y que lo comentes para que se te haga un buen habito, creeme lo agradeceras cuando manejes codigos mas extensos y mas complejos, ahora con tu problema es que tienes una maraña de variables que al menos en el codigo que pones no se bien que funciones tengas, lo que si es que tu problema principal es que no estas realizando la paginacion como debe, cambia este codigo

Código PHP:
if(!isset($_GET['pag'])) 

$actual 1; } 
else 

$pag_actual=$_GET['pag']; 

$ini=$actual*$cuant
por este otro

Código PHP:
if(!isset($_GET['pag'])) 

$actual 1; } 
else 

$actual=$_GET['pag']; 

$ini=($actual 1) *$cuant
y ve si te funciona
__________________
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 07/02/2008, 17:38
 
Fecha de Ingreso: febrero-2008
Mensajes: 72
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Problema con el uso de limit para dividir en pagina los mensajes de un foro

ya, lo de las variables tienes razon, el caso esk lo tnia todo bien, sin muchas variables sin usar, y todo es debido al hacer intentos sobre la paginacion, he cambiado lo que mas dicho pero sigue sin funcionarme, me sigue mostrando todos los temas... asique cuando doy a un enlace de una pagina este me la saca pero me muestra todos, el problema esta en que cuando llega a los 10, no para de mostrar mensajes
  #10 (permalink)  
Antiguo 07/02/2008, 17:46
 
Fecha de Ingreso: febrero-2008
Mensajes: 72
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Problema con el uso de limit para dividir en pagina los mensajes de un foro

he solucionado otro problema, cuando abres un enlace, te indicaba que estabas en la ultima pag, esto es debido a que tenia puesto:

Código PHP:
for ($ii=1$ii<=$n_pag $ii++) 
{
if (
$ii == $n_pag ) {
$ura .= '<strong>'.$ii.'</strong> ';
}else {
$ura .= '<a href="temas.php?cate='.$_GET["cate"] .'&pag='.$ii.'">'.$ii.'</a> ';
}

echo 
$ura
y lo he cambiado por

Código PHP:
for ($ii=1$ii<=$n_pag $ii++) 
{
if (
$ii == $actual ) {
$ura .= '<strong>'.$ii.'</strong> ';
}else {
$ura .= '<a href="temas.php?cate='.$_GET["cate"] .'&pag='.$ii.'">'.$ii.'</a> ';
}

echo 
$ura
y muestra la pagina actual en la que estas, (esto lo pongo para que kimbo89 lo cambien porque si no le seguira pasando).

pero sigue sin pararme los temas
  #11 (permalink)  
Antiguo 08/02/2008, 01:35
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Re: Problema con el uso de limit para dividir en pagina los mensajes de un foro

Pero no indicas a que te refieres en cuanto a que te regresa todos los registros, segun tu consulta que estas paginando estas llamando a todos los registros dentro de la tabla tema, sin embargo en tu primer consulta haces un filtro para recolectar los registros de la tabla tema filtrandola con la variable $categoria sobre el campo id_categoria, ahora, la pregunta es, en realidad la paginacion funciona (aunque sea con todos los registros de la tabla tema) o no importa a que pagina le des siempre muestra los mismos registros
__________________
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 =)
  #12 (permalink)  
Antiguo 08/02/2008, 01:51
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Re: Problema con el uso de limit para dividir en pagina los mensajes de un foro

bueno, creo que al final sera mas facil asi, ya que por mas que le busco no le encuentro pies o cabeza a tu codigo (sin ofender ^^), aqui te dejo el codigo que deberia de funcionar con algunos aditamentos

Código PHP:
<?php

//verificamos si existe la varble $_GET["pag"]
if (isset($_GET["pag"])) {
$pag_actual $_GET["pag"];
}else {
$pag_actual 1;
}

//indicamos cuantos registros se mostraran por pagina
$reg_pag 10;

//recolecto todos los registros para la categoria $categoria
$sql_reg mysql_query("select * from temas where id_categoria = '".$categoria."'",$tu_variable_conexion) or die (mysql_error());

//obtenemos el total de registros
$total_registros mysql_num_rows($sql_reg);

//liberamos memoria
mysql_free_result($sql_reg);

//calculamos cuantas paginas necesitamos
$total_pag ceil($total_registros $reg_pag);

//ahora calculamos desde que indice recolectamos los registros
$reg_inicio = ($pag_actual 1) * $reg_pag;

//ahora recolectamos los registros necesarios para mostrar en la pagina actual
$sql_result mysql_query("select * from temas where id_categoria = '".$categoria."' limit ".$reg_inicio.",".$reg_pag,$tu_variable_conexion) or die (mysql_error());

//ahora creamos los enlaces
$enlaces '';

//verificamos si estamos en la primera pagina
if ($pag_actual == 1) {
$enlaces 'Anterior ';
}else {
$enlaces '<a href="'.$_SERVER['PHP_SELF'].'?pag='.($pag_actual 1).'">Anterior</a> ';
}

//ahora creamos la numeracion de las paginas
for ($i=1$i<=$total_pag$i++) {
    if (
$i == $pag_actual) {
        
$enlaces .= '<strong>'.$i.'</strong>';
    }else {
        
$enlaces .= '<a href="'.$_SERVER['PHP_SELF'].'?pag='.$i.'">'.$i.'</a> ';
    }
}

//ahora verificamos si nos encontramos en la ultima pagina
if ($pag_actual == $total_pag) {
$enlaces .= 'Siguiente';
}else {
$enlaces .= '<a href="'.$_SERVER['PHP_SELF'].'?pag='.($pag_actual 1).'">Siguiente</a>';
}

//ahora no se bien como sea tu estructura, pero creo que esto ya lo puedes modificar sin problema
?>
<table width="200" border="1">
  <tr>
    <td>Campo 1</td>
    <td>Campo 2</td>
    <td>Campo3</td>
  </tr>
  <?php while($row=mysql_fetch_assoc($sql_result)) { ?>
  <tr>
    <td><?php echo $row["campo_01"]; ?></td>
    <td><?php echo $row["campo_02"]; ?></td>
    <td><?php echo $row["campo_03"]; ?></td>
  </tr>
  <?php ?>
</table>
__________________
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 =)
  #13 (permalink)  
Antiguo 08/02/2008, 03:30
 
Fecha de Ingreso: febrero-2008
Mensajes: 72
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Problema con el uso de limit para dividir en pagina los mensajes de un foro

Jo*** por fin, despues de tanto tiempo vienes tu y nos salvas!!!!!! jejeje muchas gracias tio de verdad ahora ya funciona perfectamente, tedevemos una!!
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

SíEste tema le ha gustado a 1 personas




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