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'> </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', $currentPage, max(0, $pageNum_Rs - 1), $queryString_Rs); ?>"></a>
<a href="<?php printf('%s?pageNum_Rs=%d%s', $currentPage, max(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", $currentPage, min($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', $currentPage, min($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ó.