Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/11/2010, 02:19
oxcar
 
Fecha de Ingreso: febrero-2010
Ubicación: Madrid, España
Mensajes: 36
Antigüedad: 14 años, 2 meses
Puntos: 0
Problema al paginar y dividir en 2 columnas

Hola a todos,

estoy intentando crear un catálogo virtual, paginando los resultados y dividiendo en 2 columnas los resultados de cada categoría. Es decir, lo que estoy intentando hacer es que cuando un usuario seleccione una categoría, el php le devuelve 4 productos por página (el resto lo pagina), y estos 4 resultados que los divida en 2 columnas, dando por consiguiente 2 filas.

Para realizar esto estoy usando un código que he tomado de algún lugar (probé con tantos códigos que no recuerdo el sitio exacto):
Código:
<?php

$categ1 = 1; //Número de la categoría. Campo "categoria" de la tabla SQL.
$categ2 = 1; // Número de la sub-categoría. Campo "categoria2" de la tabla SQL.

$host="localhost";
$user="user";
$pass="password";
$db="basededatos";
if(!$link=@mysql_connect($host,$user,$pass)) die ("Error");
$base=@mysql_select_db($db,$link)or die("Error");
require 'PageNavigator.php';
//Maximo de paginas, procurar que sea # par
define("PERPAGE", 4);
define("OFFSET", "offset");
$offset=(int)@$_GET[OFFSET];
 
$recordoffset=$offset*PERPAGE;
$sql="SELECT * FROM productos WHERE categoria = $categ1 AND categoria2= $categ2 ORDER BY id ASC LIMIT $recordoffset,". PERPAGE;
$total="SELECT COUNT(*) as cuantos FROM productos";
$result = @mysql_query($sql);
$result0 = @mysql_query($total);
$totalrecords=mysql_fetch_assoc($result0);
$totalrecords=$totalrecords['cuantos'];
// esto de par e impar es para tener una mejor fluidez de datos
 
$fieldPar;
$fieldImpar;
$i=0;
while ($row = @mysql_fetch_array($result, MYSQL_ASSOC)){
$i++;
if(($i%2)){
$fieldImpar[] = $row;
}else{
$fieldPar[] = $row;
}
}
$pagename=basename($_SERVER['PHP_SELF']);
$numpages = ceil($totalrecords/PERPAGE);
$otherparameter = "&amp;unparametro=VALOR :D";
$primedio=ceil((count($fieldImpar)+count($fieldPar))/2);
 
?>
Posteriormente pongo ésto encima de la tabla de los 4 resultados:

Código:
<?php
for($i=0;$i<$primedio;$i++){
?>
Y por último:
Código:
<?
}
?>
Mi problema es que no sé dónde tengo que poner la última parte, ya que donde lo ponga lo que hace es repetir los 4 productos de nuevo. Es decir, si pongo el código al final de la tabla con los 4 productos, me repite de nuevo los 4 productos debajo de éstos.

El código que tengo con las tablas es el siguiente:

Código:
<?php
for($i=0;$i<$primedio;$i++){
?>
                <td width="300"><table width="300" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td colspan="3"><img src="images/<?=$fieldImpar[$i][foto]?>" width="300" height="200"></td>
                  </tr>
                  <tr>
                    <td height="10" colspan="3"></td>
                  </tr>
                  <tr>
                    <td colspan="3" class="PRODname"><?=$fieldImpar[$i][nombre]?></td>
                  </tr>
                  <tr>
                    <td colspan="3"><span class="PRODdescrip"><?=$fieldImpar[$i][descripcion]?></span></td>
                  </tr>
                  <tr>
                    <td height="10" colspan="3"></td>
                  </tr>
                  <tr>
                    <td width="75"><img src="images/productos/referencia.jpg" width="75" height="14"></td>
                    <td width="8">&nbsp;</td>
                    <td width="217" class="PRODref"><?=$fieldImpar[$i][referencia]?></td>
                  </tr>
                  <tr>
                    <td colspan="3">&nbsp;</td>
                  </tr>
                </table></td>
                <td width="20">&nbsp;</td>
                <td width="300"><table width="300" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td colspan="3"><img src="images/<?=$fieldPar[$i][foto]?>" width="300" height="200"></td>
                  </tr>
                  <tr>
                    <td height="10" colspan="3"></td>
                  </tr>
                  <tr>
                    <td colspan="3" class="PRODname"><?=$fieldPar[$i][nombre]?></td>
                  </tr>
                  <tr>
                    <td colspan="3"><span class="PRODdescrip"><?=$fieldPar[$i][descripcion]?></span></td>
                  </tr>
                  <tr>
                    <td height="10" colspan="3"></td>
                  </tr>
                  <tr>
                    <td width="75"><img src="images/productos/referencia.jpg" width="75" height="14"></td>
                    <td width="8">&nbsp;</td>
                    <td width="217" class="PRODref"><?=$fieldPar[$i][referencia]?></td>
                  </tr>
                  <tr>
                    <td colspan="3">&nbsp;</td>
                  </tr>
                </table></td>
                <td width="15">&nbsp;</td>
              </tr>
              <tr>
                <td><table width="300" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td colspan="3"><img src="images/<?=$fieldImpar[$i][foto]?>" width="300" height="200"></td>
                  </tr>
                  <tr>
                    <td height="10" colspan="3"></td>
                  </tr>
                  <tr>
                    <td colspan="3" class="PRODname"><?=$fieldImpar[$i][nombre]?></td>
                  </tr>
                  <tr>
                    <td colspan="3"><span class="PRODdescrip"><?=$fieldImpar[$i][descripcion]?></span></td>
                  </tr>
                  <tr>
                    <td height="10" colspan="3"></td>
                  </tr>
                  <tr>
                    <td width="75"><img src="images/productos/referencia.jpg" width="75" height="14"></td>
                    <td width="8">&nbsp;</td>
                    <td width="217" class="PRODref"><?=$fieldImpar[$i][referencia]?></td>
                  </tr>
                  <tr>
                    <td colspan="3">&nbsp;</td>
                  </tr>
                </table></td>
                <td>&nbsp;</td>
                <td><table width="300" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td colspan="3"><img src="images/<?=$fieldPar[$i][foto]?>" width="300" height="200"></td>
                  </tr>
                  <tr>
                    <td height="10" colspan="3"></td>
                  </tr>
                  <tr>
                    <td colspan="3" class="PRODname"><?=$fieldPar[$i][nombre]?></td>
                  </tr>
                  <tr>
                    <td colspan="3"><span class="PRODdescrip"><?=$fieldPar[$i][descripcion]?></span></td>
                  </tr>
                  <tr>
                    <td height="10" colspan="3"></td>
                  </tr>
                  <tr>
                    <td width="75"><img src="images/productos/referencia.jpg" width="75" height="14"></td>
                    <td width="8">&nbsp;</td>
                    <td width="217" class="PRODref"><?=$fieldPar[$i][referencia]?></td>
                  </tr>
                  <tr>
                    <td colspan="3">&nbsp;</td>
                  </tr>
                </table></td>
<?
}
?>
<center>
<?php
//numero de paginas minimo necesarias
if($numpages>1){
//Crea el navegador
$nav = new PageNavigator($pagename, $totalrecords, PERPAGE, $recordoffset, 4, $otherparameter);
echo $nav->getNavigator();
}
?>
El último código creo que es para que se paginen los datos, aunque esa parte el php me lo pone encima de la tabla aunque pongo el código al final de ésta. Eso es otra cosa que no entiendo, pero ya lo miraré.

¿Puede alguien ayudarme, por favor? Muchas gracias por adelantado.