Foros del Web » Programando para Internet » PHP »

Problema raro, paginando resultados..

Estas en el tema de Problema raro, paginando resultados.. en el foro de PHP en Foros del Web. Estoy tratando de paginar resultados,.. pero quiero paginarlos por orden desendiente es decir los que tengan id mayor saldran primero, pero no entiendo :S no ...
  #1 (permalink)  
Antiguo 02/03/2010, 14:28
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 16 años, 11 meses
Puntos: 3
Problema raro, paginando resultados..

Estoy tratando de paginar resultados,.. pero quiero paginarlos por orden desendiente es decir los que tengan id mayor saldran primero, pero no entiendo :S no logro paginar resultados

Cuando pongo index.php?page=1
Salen los dos ultimos resultados pero si pongo index.php?page=2 salen los dos ultimos resultados tambien

Tengo tres funciones, una que muestra los ultimos registros de la tabla, otra que lo muestra dependiendo de la pagina, y otra donde ve si la variable de la pagina esta declarada y si es asi entonces usa una de las dos funciones ya mensionadas, bueno no se si me explique pero creo que seri mas facil entender mostrando mi codigo

Código PHP:
function last_postContents() {
    global 
$limit;
    
$link=new mySQL;
    
    
$consulta="SELECT * FROM articulos ORDER BY id DESC LIMIT $limit";
    
$link->conectar();
    
$result=$link->consultar($consulta);
    
    if (
$link->num_rows($result)>0)
    {
        
$i=0;
        while(
$row $link->fetch_array($result))
        {
            
$contenidos[$i]=$row['contenido'];
            
$i++;
        }
    } else {
        return 
1;
    }
    
    
$link->close;
    return 
$contenidos;
}
function 
postContents_byPages() {
    global 
$limit;
    global 
$pagina;
    
$total_paginas=ceil(get_TotalPost() / $limit);
    
$inicio=$pagina*limit;
    
    
$link=new mySQL;
    
    
$consulta="SELECT * FROM articulos ORDER BY id DESC LIMIT $inicio,$limit";
    
$link->conectar();
    
$result=$link->consultar($consulta);
    
    if (
$link->num_rows($result)>0)
    {
        
$i=0;
        while(
$row $link->fetch_array($result))
        {
            
$contenidos[$i]=$row['contenido'];
            
$i++;
        }
    } else {
        return 
1;
    }
    
    
$link->close;
    return 
$contenidos;
}

function 
index_postContents() {
    global 
$pagina;
    global 
$limit;
    if(isset(
$pagina))
    {
        if (
$pagina<=ceil(get_TotalPost()/$limit))
        {
            return 
postContents_byPages();
        } elseif(
$pagina>ceil(get_TotalPost()/$limit)) {
            echo 
'<script>location.href="index.php?error=1"</script>';
        }
    }
    else {
        return 
last_postContents();
    }
    

Lo que pasa es que luego quiero hacer algo como esto:
index.php
Código PHP:
<?

require('./config.php');
require(
'./funciones.php');
$limit=2;
if (isset(
$_GET['pagina']))
{
$pagina=$_GET['pagina'];
}

echo 
print_r(index_postContents());
?>
Alguien me puede ayudar con esto la verdad estoy bastante confundido..

Gracias de antemano
  #2 (permalink)  
Antiguo 02/03/2010, 14:59
Avatar de genuine_carlosV2  
Fecha de Ingreso: noviembre-2008
Ubicación: 127.0.0.1
Mensajes: 296
Antigüedad: 16 años
Puntos: 6
Respuesta: Problema raro, paginando resultados..

Usa el LIMIT de esta forma:
Código SQL:
Ver original
  1. LIMIT X , Y

Donde X es el punto desde el que empiezas e Y es la cantidad que coges. Por ejemplo, si la tabla tiene estos ids:
3
4
6
8
11
12

Y usas "LIMIT 1, 3", obtendrás 4, 6 y 8. Se entiende?

Saludos
__________________
Carlos

Recoger datos es solo el primer paso hacia la sabiduría. Pero compartir información es el primer paso hacia la comunidad. - IBM
  #3 (permalink)  
Antiguo 02/03/2010, 15:20
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Problema raro, paginando resultados..

Si justo lo que trato de hacer pero no entiendo que pasa que siempre devuelve el mismo resultado, sea cual sea la pagina :S

Código PHP:
    global $limit;
    global 
$pagina;
    
$total_paginas=ceil(get_TotalPost() / $limit);
    
$inicio=$pagina*limit;
    
    
$link=new mySQL;
    
    
$consulta="SELECT * FROM articulos ORDER BY id DESC LIMIT $inicio,$limit"
Cual puede ser el problema?

Última edición por Carlmycol; 02/03/2010 a las 15:30
  #4 (permalink)  
Antiguo 02/03/2010, 15:33
Avatar de genuine_carlosV2  
Fecha de Ingreso: noviembre-2008
Ubicación: 127.0.0.1
Mensajes: 296
Antigüedad: 16 años
Puntos: 6
Respuesta: Problema raro, paginando resultados..

Imagino que si, pero hay datos suficientes?

Otra cosa, si te fijas en lo que te escribí yo, puse un 1 y empecé en el segundo valor. Prueba a usar la función así (siempre y cuando $pagina vaya de 1 a X):
Código PHP:
$inicio=($pagina-1)*limit
__________________
Carlos

Recoger datos es solo el primer paso hacia la sabiduría. Pero compartir información es el primer paso hacia la comunidad. - IBM
  #5 (permalink)  
Antiguo 02/03/2010, 16:33
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Problema raro, paginando resultados..

Cita:
Iniciado por genuine_carlosV2 Ver Mensaje
Imagino que si, pero hay datos suficientes?

Otra cosa, si te fijas en lo que te escribí yo, puse un 1 y empecé en el segundo valor. Prueba a usar la función así (siempre y cuando $pagina vaya de 1 a X):
Código PHP:
$inicio=($pagina-1)*limit
Lo intenté y sale de la misma forma

Ya me tiene loco pues no le encuentro el error :S

Es posible que el error esté en el la tabla o algo asi?

Saludos
  #6 (permalink)  
Antiguo 02/03/2010, 18:17
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Problema raro, paginando resultados..

Encontre el error que estupido soy jeje casi siempre que tengo un problema con un codigo es por eso jeje.. xD U_U (eso pasa por mesclar C y php al mismo tiempo jeje)

Tenia
Código PHP:
$inicio=($pagina-1)*limit
limit sin $ lo multiplicaba por 0

Lo descubri de la manera mas bizarra xD
Código PHP:
echo "limite: $limit, pagina: $pagina, total: $total_paginas, $inicio es inicio"
Muchas gracias de todos modos por ayudarme amigo!!

Saludos!!
  #7 (permalink)  
Antiguo 02/03/2010, 18:30
Avatar de genuine_carlosV2  
Fecha de Ingreso: noviembre-2008
Ubicación: 127.0.0.1
Mensajes: 296
Antigüedad: 16 años
Puntos: 6
Respuesta: Problema raro, paginando resultados..

xDDDDD

Me alegro que lo arreglases, yo también vengo del C y me ha pasado muchas veces. Fíjate que ni me percaté que tenías el limit sin $.

Saludos
__________________
Carlos

Recoger datos es solo el primer paso hacia la sabiduría. Pero compartir información es el primer paso hacia la comunidad. - IBM

Etiquetas: raro, resultados
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 13:06.