Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Paginación y resultados en columnas PHP - No trae primer registro

Estas en el tema de Paginación y resultados en columnas PHP - No trae primer registro en el foro de PHP en Foros del Web. Buenas, asi como lo describo.. estoy haciendo una consulta a la BD desde donde estoy trayendo todos los registros para un catálogo. Como el catálogo ...
  #1 (permalink)  
Antiguo 27/03/2013, 09:01
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 5 meses
Puntos: 175
Paginación y resultados en columnas PHP - No trae primer registro

Buenas, asi como lo describo.. estoy haciendo una consulta a la BD desde donde estoy trayendo todos los registros para un catálogo. Como el catálogo es una especie de "librero" parecido a los iBooks en aspecto, necesito

A- Paginarlo --> Ya lo logré
B- Colocar los registros en filas y columnas de a 4 libros --> Ya lo logré..

El problema es que no se en qué parte o porqué conflictúan los codigos de paginación y el de ordenamiento de columnas, ya que si tengo 32 libros (por ejemplo) solo me muestra 31... es decir, el primer registro siempre se pierde y ya intente con do-while, while y aun así no me lo muestra al registro 1 si es que es ASC o al ultimo registro si es DESC.. mi código:

EN LA CABECERA:
Código PHP:

<?php
include("../co/connect.php");

//Inicio del paginador
    
$currentPage $_SERVER["PHP_SELF"];
    
    
// este numero es el numero de resultados que quieren que se vean por pagina 
    //pueden poner algo asi: $maxRows_Rs = 6; para ver paginas con 6 resultados
    
$maxRows_Rs 17;// pongo asi o sino, no me trae los 16 primeros
    
    
$pageNum_Rs 0;
    
        if (isset(
$_GET['pageNum_Rs'])) {
        
          
$pageNum_Rs $_GET['pageNum_Rs'];
          
        }
        
    
$startRow_Rs $pageNum_Rs $maxRows_Rs;
    
    
mysql_select_db($db_nombre,$conn);

//paginador


$sql"SELECT id, nombre, imagen FROM productos WHERE id_categoria=10 ORDER BY id ASC ";

?>

RESULTADOS

Código PHP:

<?php

                
                
                
                
                
//paginador
                            
$query_limit_Rs sprintf("%s LIMIT %d, %d"$sql$startRow_Rs$maxRows_Rs);
                            
$resultados mysql_query($query_limit_Rs$conn) or die(mysql_error()."<br />".$sql);
                            
$filas mysql_fetch_assoc($resultados);
                            
                            if (isset(
$_GET['coincidencias'])) {
                              
$coincidencias $_GET['coincidencias'];
                            } else {
                              
$todos_los_Rs mysql_query($sql);
                              
$coincidencias mysql_num_rows($todos_los_Rs);
                            }
                    
//paginador
                
                
                
                
                
 
                
$columnes 4# Número de columnas (variable)
                 
            
                 
                
for ($i=1$row mysql_fetch_array ($resultados); $i++) 
                {
                    
$resto = ($i $columnes); # Número de celda del <tr> en que nos encontramos
                    
if ($resto == 1
                    {
                        echo 
"<div class='estantes'>";
                    } 
# Si es la primera celda, abrimos <tr>
                    
                    
                    
                    
                            
echo "<div class='libros'> 
                                    
                                  <a href='ampliar-productos.php?id="
.$row['id']."' rel='facebox'>
                                    
                                  <img src='../img/prod/mini/"
.$row['imagen']."' title='".$row['nombre']."'class='tool' />
                                  
                                  </a>
                                  </div>"

                    
                    if (
$resto == 0
                    {
                        echo 
"</div>";
                    } 
# Si es la última celda, cerramos </tr>
                
}
                
                
                
/* if ($resto <> 0) 
                { # Si el resultado no es múltiple de $columnes acabamos de rellenar los huecos
                    $ajust = $columnes - $resto; # Número de huecos necesarios
                    for ($j = 0; $j < $ajust; $j++) 
                    {
                        echo "<div class='libros'>&nbsp;</div>";
                    }
                    
                }
                mysql_close($conn);*/
                
                
                
            
?>
PAGINADOR:
Código PHP:

<?php
            
//paginador
        
            
$totalPages_Rs ceil($coincidencias/$maxRows_Rs)-1;

            
$queryString_Rs "";
            
//if 1
            
if (!empty($_SERVER['QUERY_STRING'])) 
            {
            
                  
$params explode("&"$_SERVER['QUERY_STRING']);
                
                  
$newParams = array();
                
                  foreach (
$params as $param
                 {
                 
                 
                     
//if 2
                    
if (stristr($param"pageNum_Rs") == false && stristr($param"coincidencias") == false
                    {
                    
                          
array_push($newParams$param);
                    }
//if 2 close
                    
                   
}//foreach close
                
                
                  //if 3
                   
if (count($newParams) != 0
                 {
                    
$queryString_Rs "&" htmlentities(implode("&"$newParams));
                   }
//if 3 close
                 
            
}//if 1 close
            
                
$queryString_Rs sprintf("&coincidencias=%d%s"$coincidencias$queryString_Rs);
                
                
//paginador
      
?>
        
                    <div id="pager">
                            
                        
                        
                                <?php 
                                
//boton Anterior
                                // mostrar si no es la primera pagina
                                  
if ($pageNum_Rs 0) {
                                
?>
                                <a href="<?php printf('%s?pageNum_Rs=%d%s'$currentPagemax(0$pageNum_Rs 1), $queryString_Rs); ?>"></a>
                                <a href="<?php printf('%s?pageNum_Rs=%d%s'$currentPagemax(0$pageNum_Rs 1), $queryString_Rs); ?>">
                                <img src="../img/btn-ant.gif" />
                                </a>
                                <?php ?>
                                
                                
                                <?php 
                                
//numeraciones   
                                    
$last=$totalPages_Rs+1;
                                    
$current=$pageNum_Rs+1;
                                    
                                        
                                    
//for
                                    
for ($i=1$i<=$last$i++) 
                                    {
                                        
                                        
//if 4
                                        
if($current==$i)
                                        {
                                            echo 
"<a href='#' style='color:#F90; text-decoration:none; font-weight:bold; font-size:18px;'>".$i."</a>";
                                        }else{
                                
?>
                                                    
                                    <a href="<?php printf("%s?pageNum_Rs=%d%s"$currentPagemin($totalPages_Rs$i-1), $queryString_Rs?>">
                                         <?php echo $i?>          </a>
                                    <?php       
                                        
}// if 4 close
                                    
}//for close
                                    
?>
                                    <?php 
                                    
// Mostrar si no es la ultima pagina
                                    
if ($pageNum_Rs $totalPages_Rs) {  ?>
                                     
                                        <a href="<?php printf('%s?pageNum_Rs=%d%s'$currentPagemin($totalPages_Rs$pageNum_Rs 1), $queryString_Rs); ?>">
                                        
                                        <img src="../img/btn-desp.gif" />                            </a> 
                                       
                                    <?php ?>
                    </div><!--paginador-->
si me pudieran dar una mano para hallar el error o modificarlo de tal manera que me muestre los 32 registros... y no 31... ya probé de todo lo que se me ocurrió.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #2 (permalink)  
Antiguo 27/03/2013, 09:06
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: Paginación y resultados en columnas PHP - No trae primer registro

Hola primero que nada recomendar leer este post
http://www.forosdelweb.com/f18/anunc...ecada-1008145/

Ya Resolviendo tu problema, ya probaste cambiar el for de los resultados inicializandolo en $i=0 porque de lo contrario creo que no te devuelve la posición 0 del result
  #3 (permalink)  
Antiguo 27/03/2013, 09:19
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Paginación y resultados en columnas PHP - No trae primer registro

Tu problema está aquí:

Código PHP:
Ver original
  1. //paginador
  2. $query_limit_Rs = sprintf("%s LIMIT %d, %d", $sql, $startRow_Rs, $maxRows_Rs);
  3. $resultados = mysql_query($query_limit_Rs, $conn) or die(mysql_error()."<br />".$sql);
  4. $filas = mysql_fetch_assoc($resultados);

Al poner

Código PHP:
Ver original
  1. $filas = mysql_fetch_assoc($resultados);

Se te mueve al segundo registro y desde ahí lo toma mysql_fetch_array. No importa si el for empieza en 0, 1 o 20. Para solucionarlo usa:

Código PHP:
Ver original
  1. mysql_data_seek($resultados, 0);

antes del for.

http://php.net/manual/es/function.mysql-data-seek.php

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 27/03/2013, 09:24
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 5 meses
Puntos: 175
Respuesta: Paginación y resultados en columnas PHP - No trae primer registro

Gracias alex1084 conozco esa normativa, pero en el server que esta alojado el sitio funciona perfectamente la interfaz mysql (aún).. mi problema no es de interfaces..

en cuanto al FOR, ya lo he probado, si lo inicializo en 0 me desarma la estructura, sigue sin traerme el primer registro si el ORDER BY es ASC, y para colmo la primera fila de libros me lo deja huérfano a un libro y recién en la fila de abajo empieza a traerme los demás de manera normal...

Si no le pongo la estructura de columnas y demas, me los trae todos, pero cuando intento ordenarlos es donde se me desaparece, por eso no encuentro la falla o el conflicto..

voy a probar lo que me dices andresdzphp
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #5 (permalink)  
Antiguo 27/03/2013, 09:29
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 5 meses
Puntos: 175
Respuesta: Paginación y resultados en columnas PHP - No trae primer registro

Es así mismo andresdzphp... ni se me habría ocurrido al menos en el momento, ya que estaba tan estresado para que quede asi.. aunque luego tendré que modificarlo, ya que el data_seek ya no existirá en las versiones posteriores, pero bue.



que ya me hice bolas con el código... voy a ordenarlo un poco, pero funcionó muy bien..

Gracias a Alex tambien =D

Si quieren verlo, esta aquí

http://www.grupoeditorialatlas.com/p...o.php?page=all

ahora solo tengo que arreglar las fotos, pero ya es otro tema distinto.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...

Etiquetas: limitar, mysql, paginador, registros
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 05:31.