Foros del Web » Programando para Internet » PHP »

ayuda con paginacion

Estas en el tema de ayuda con paginacion en el foro de PHP en Foros del Web. No se como hacerlo como lo tengo ahora los pagina de 4 en 4 pero me muestra todos los productos y yo quiero que me ...
  #1 (permalink)  
Antiguo 31/01/2010, 07:37
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
ayuda con paginacion

No se como hacerlo como lo tengo ahora los pagina de 4 en 4 pero me muestra todos los productos y yo quiero que me los ordene por categoria



cuando selecciono el numero 1 la url me cambia de nombre a
paginacion.php?id_categoria=00
paginacion.php?pag=1

Indice.php
Código HTML:
<li><a href="paginacion.php?id_categoria=00"><strong>paginacion</strong></a>
<li><a href="paginacion.php?id_categoria=01"><strong>paginacion</strong></a> 
paginacion.php
Código PHP:
<?php
// maximo por pagina 

$limit 4

 

// pagina pedida 

$pag = (int) $_GET["pag"]; 

if (
$pag 1



   
$pag 1



$offset = ($pag-1) * $limit

 

 

$sql "SELECT SQL_CALC_FOUND_ROWS nombre_categoria,nombre_producto,ruta_foto_grande,ruta_foto_pequena,descripcion_producto FROM producto,foto,categoria where id_foto=producto_id_foto and id_categoria=producto_id_categoria   group by nombre_producto   LIMIT $offset, $limit"

$sqlTotal "SELECT FOUND_ROWS() as total"

 

$rs mysql_query($sql); 

$rsTotal mysql_query($sqlTotal); 

 

$rowTotal mysql_fetch_assoc($rsTotal); 

// Total de registros sin limit 

$total $rowTotal["total"]; 

 

$nombre_categoria=0;

         while (
$row mysql_fetch_assoc($rs)) 

         { 

                        echo 
"<div class='producto'>";

        if(
$nombre_categoria==0){

            echo    
"  <div class='categoria'><h1>".ucfirst("{$row['nombre_categoria']}")."</h1></div>";

        }

            echo 
"<div class='nombre'><h2>{$row['nombre_producto']}</h2></div>

                 <div class='imagen'>

                     <a href=' {$row['ruta_foto_grande']}' /><img src=' {$row['ruta_foto_pequena']} '/></a>

                     <div class='ampliar'>

                         <p><a href=' {$row['ruta_foto_grande']}' />ampliar</a></p></div>

                 </div>

                 <div class='descripcion'><p>{$row['descripcion_producto']}</p></div></br></br></br><hr></div></br>    "
;

      
$nombre_categoria++;

 }

     

      



         
$totalPag ceil($total/$limit); 

         
$links = array(); 

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

         { 

            
$links[] = "<a href=\"?pag=$i\">$i</a>";  

         } 

         echo 
implode(" - "$links); 

      
?>
  #2 (permalink)  
Antiguo 31/01/2010, 11:52
Avatar de Kenichi  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 160
Antigüedad: 15 años, 3 meses
Puntos: 6
Respuesta: ayuda con paginacion

Segun entiendo lo que dices, solo tienes que agregar la otra variables ademas de la pagina para que quede algo asi:
Código HTML:
<a href="paginacion.php?id_categoria=00&pag=1">Pagina 1</a> 
Saludos
__________________
Cansado de tener que hacer webs con doble login, o no entender nada del codigo de phpBB? Usa un sistema de foros simple, usa Linken Foros
  #3 (permalink)  
Antiguo 31/01/2010, 12:00
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: ayuda con paginacion

en la consulta tendría que poner and id_categoria={$_GET['id_categoria']}
pero después me sale un error de sintaxis

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /var/www/html/php/paginacion/paginacion.php on line 28
  #4 (permalink)  
Antiguo 01/02/2010, 02:55
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
hacer paginacion con 3 tablas y al mismo tiempo ordene por categoria

tenia que sustituir el & por el ?

indice.php
<li><a href="paginacio.php?id_categoria=00&pag=1"><strong >paginacio</strong></a>

paginacion.php
<a href=\"paginacio.php?id_categoria={$_GET['id_categoria']}&pag=$i\">$i</a>";

gracias Kenichi

seria posible poner un botón de siguiente y otro anterior porque a ahora solo me sale numeros 1,2 etc...

Última edición por GatorV; 01/02/2010 a las 11:23
  #5 (permalink)  
Antiguo 01/02/2010, 10:40
Avatar de Kenichi  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 160
Antigüedad: 15 años, 3 meses
Puntos: 6
Respuesta: ayuda con paginacion

Pues si, es muy facil:
Código PHP:
$siguiente $_GET['pag'] + 1;
echo 
"<a href='paginacio.php?id_categoria=".$_GET['id_categoria']."&pag=".$siguiente."'>Siguiente</a>"
Con anterior solo debes cambiar el $siguiente por
Código PHP:
$anterior $_GET['pag'] - 1
Saludos
__________________
Cansado de tener que hacer webs con doble login, o no entender nada del codigo de phpBB? Usa un sistema de foros simple, usa Linken Foros
  #6 (permalink)  
Antiguo 01/02/2010, 12:38
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: ayuda con paginacion

funciona casi perfecto lo que pasa si tengo 3 paginas hi hago siguiente me sale la 4 sin contenidor con la quinta passa los mismo y en anterior 0 -1 -2

tanto siguiente como anterior trabajan independientemente del for dentro del for no lo puedo meter porque si tengo 3 paginas me salen 3 siguientes i 3 anteriores

pero de alguna manera le tendria que decir a siguiente i anterior en que posicion esta la variabla $i

Código PHP:
                        $siguiente $_GET['pag'] + 1;
echo 
"<a class='paginacio' href='paginacio.php?id_categoria=".$_GET['id_categoria']."&pag=".$siguiente."'>Siguiente</a>";



         for( 
$i=1$i<=$totalPag $i++) 
         { 
            
$links[] = "<a class='paginacio'  href=\"paginacio.php?id_categoria={$_GET['id_categoria']}&pag=$i\">$i</a>";  
         } 
         


         echo 
implode(" - " ,  $links); 
         
         
                  
$anterior $_GET['pag'] - 1;
echo 
"<a class='paginacio' href='paginacio.php?id_categoria=".$_GET['id_categoria']."&pag=".$anterior."'>Anterior</a>"

/paginacio.php?id_categoria=00&pag=4

http://img638.imageshack.us/img638/7530/paginacion.jpg

lo que esta de amarillo tendria que salir los 4 productos
pero si tengo 9 productos solo me pueden salir 3 paginas

Última edición por albertrc; 01/02/2010 a las 12:45
  #7 (permalink)  
Antiguo 01/02/2010, 13:09
Avatar de Kenichi  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 160
Antigüedad: 15 años, 3 meses
Puntos: 6
Respuesta: ayuda con paginacion

Pues claro, tienes que validar con la cantidad de paginas para mostrar el siguiente, por ejemplo
Código PHP:
$siguiente $_GET['pag'] + 1;
// La variable $i queda del for
if ($i == $siguiente)
{
 
// Aca ya no hay mas paginas
}
else
{
 
// Aca si muestras el enlace

__________________
Cansado de tener que hacer webs con doble login, o no entender nada del codigo de phpBB? Usa un sistema de foros simple, usa Linken Foros
  #8 (permalink)  
Antiguo 01/02/2010, 16:16
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: ayuda con paginacion

tarda una posición de mas en hacer la validación en la 4 no tendría que salir anterior hasta la 5 no desaparece

si presiono siguiente en la 5 y va a la 6 me vuelve a parecer anterior y tampoco tendría que aparecer

esto me passa tanto en siguiente como en anterior

me estas ayudando mucho es mi primera paginacion


Código PHP:
                        $siguiente $_GET['pag'] + 1;
                        if (
$i == $siguiente) {
                       
                        }
                          else {
                               echo 
"<a class='paginacio' href='paginacio.php?id_categoria=".$_GET['id_categoria']."&pag=".$siguiente."'>Siguiente</a>";
                          }




         for( 
$i=1$i<=$totalPag $i++) 
         { 
            
$links[] = "<a class='paginacio'  href=\"paginacio.php?id_categoria={$_GET['id_categoria']}&pag=$i\">$i</a>";  
         } 
         


         echo 
implode(" - " ,  $links); 
         
         
                  
$anterior $_GET['pag'] - 1;
                  if (
$i == $anterior){
                  
                  }
                  else{
                      echo 
"<a class='paginacio' href='paginacio.php?id_categoria=".$_GET['id_categoria']."&pag=".$anterior."'>Anterior</a>";
                        } 
  #9 (permalink)  
Antiguo 01/02/2010, 20:58
Avatar de Kenichi  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 160
Antigüedad: 15 años, 3 meses
Puntos: 6
Respuesta: ayuda con paginacion

Pues el problema es que no puedes comparar el $i con otra cosa, si $i no esta declarado primero, es decir, tienes que hacer la comparación después del for.
y hay que corregir un error mio:
en vez de
Código PHP:
if ($i == $siguiente
hay que poner
Código PHP:
if ($totalPag == $siguiente
y en anterior hay que ver si en realidad hay un anterior, por ejemplo
Código PHP:
if ($_GET['pag'] <= 0)
{
 
// Aqui no hay anterior
}
else
{
 
// Aqui si

__________________
Cansado de tener que hacer webs con doble login, o no entender nada del codigo de phpBB? Usa un sistema de foros simple, usa Linken Foros
  #10 (permalink)  
Antiguo 02/02/2010, 05:52
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: ayuda con paginacion

he puesto $limit en los 2 siguiente y anterior
paginacio.php?id_categoria=00&pag=3
aquí siguiente me desaparece esto creo que estaría correcto porque solo tengo 3 paginas
y en anterior también me sale si esta pag=1 anterior desaparece
Código PHP:
<?php 
$siguiente 
= ($_GET['pag']   +1);
                        if (
$limit == $siguiente) {
                       
                        }
                          else {
                               echo 
"<a class='paginacio' href='paginacio.php?id_categoria=".$_GET['id_categoria']."&pag=".$siguiente."'>Siguiente</a>";
                          }




         for( 
$i=1$i<=$totalPag $i++) 
         { 
            
$links[] = "<a class='paginacio'  href=\"paginacio.php?id_categoria={$_GET['id_categoria']}&pag=$i\">$i</a>";  
         } 
         


         echo 
implode(" - " ,  $links); 
         
         
                    
                  
$anterior = ($_GET['pag'] - 1);
                  if (
$limit== $anterior){
                  
                  }
                  else if(
$_GET['pag'] != 1){
                      echo 
"<a class='paginacio' href='paginacio.php?id_categoria=".$_GET['id_categoria']."&pag=".$anterior."'>Anterior</a>";
                        }

?>


esto no funciona
aqui he probado $totalPag

ahora siguiente me desaparece una posición antes, en la posición 2 desaparece y no puede acceder a la tercera

si selecciono el numero 3 siguiente me vuelve aparecer

esto no puedo utilizarlo porque no esta contando las posiciones if ($_GET['pag'] <= 0)


Código PHP:
  $siguiente = ($_GET['pag'] + 1);
                        if (
$totalPag == $siguiente) {
                       
                        }
                          else {
                               echo 
"<a class='paginacio' href='paginacio.php?id_categoria=".$_GET['id_categoria']."&pag=".$siguiente."'>Siguiente</a>";
                          }




         for( 
$i=1$i<=$totalPag $i++) 
         { 
            
$links[] = "<a class='paginacio'  href=\"paginacio.php?id_categoria={$_GET['id_categoria']}&pag=$i\">$i</a>";  
         } 
         


         echo 
implode(" - " ,  $links); 
         
         
                    
                  
$anterior = ($_GET['pag'] - 1);
                  if (
$totalPag == $anterior){
                  
                  }
                  else{
                      echo 
"<a class='paginacio' href='paginacio.php?id_categoria=".$_GET['id_categoria']."&pag=".$anterior."'>Anterior</a>";
                        } 
esto seria mas bien de html y css
http://img14.imageshack.us/content_r...paginacion.jpg
me gustaría centrar el paginador i separar siguiente del 1 y anterior del 3



también quiero cambiar el - de color marrón ahora es negro

ahora son elementos de linia y tendría que convertirlos de bloque lo que pasa es que después se ponen un debajo el otro he intentado poner <p><a> etc..</a></p> y lo mismo con div


estoy intentando un margin-top: 1em

Última edición por albertrc; 02/02/2010 a las 10:46
  #11 (permalink)  
Antiguo 02/02/2010, 11:57
Avatar de Kenichi  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 160
Antigüedad: 15 años, 3 meses
Puntos: 6
Respuesta: ayuda con paginacion

A ver, no lees lo que te digo?
tiene que ser ASI:
Código PHP:
 for( $i=1$i<=$totalPag $i++)  
{  
            
$links[] = "<a class='paginacio'  href=\"paginacio.php?id_categoria={$_GET['id_categoria']}&pag=$i\">$i</a>";   
         }  
          


         echo 
implode(" - " ,  $links);  
          
          
                     
$siguiente = ($_GET['pag'] + 1); 
                        if (
$totalPag == $siguiente) { 
                        
                        } 
                          else { 
                               echo 
"<a class='paginacio' href='paginacio.php?id_categoria=".$_GET['id_categoria']."&pag=".$siguiente."'>Siguiente</a>"
                          }
                  if (
$_GET['pag'] <= 0){ 
                   
                  } 
                  else{ 
                      
$anterior = ($_GET['pag'] - 1);
                      echo 
"<a class='paginacio' href='paginacio.php?id_categoria=".$_GET['id_categoria']."&pag=".$anterior."'>Anterior</a>"
                        } 
Dejalo exactamente como esta y pruebalo.
Saludos.
__________________
Cansado de tener que hacer webs con doble login, o no entender nada del codigo de phpBB? Usa un sistema de foros simple, usa Linken Foros
  #12 (permalink)  
Antiguo 02/02/2010, 13:14
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: ayuda con paginacion

he probado de esta manera en la posición 2 siguiente desaparece y no tendria que desaparecer hasta la posicion 3

selecciono el numero 3 y me aparece siguiente y anterior, siguiente no tendría que aparecer

porque sino puedo acceder a la pagina 4 y solo tengo 3


y anterior tendria que desaparecer en la posicon 1 y no a la 0


gracias por tu ayuda

con esto creo que ya me funciona
Código PHP:
 $siguiente = ($_GET['pag']   +1);
                        if (
$limit == $siguiente) {
                       
                        }
                          else {
                               echo 
"<a class='paginacio' href='paginacio.php?id_categoria=".$_GET['id_categoria']."&pag=".$siguiente."'>Siguiente</a>";
                          }




         for( 
$i=1$i<=$totalPag $i++) 
         { 
            
$links[] = "<a class='paginacio'  href=\"paginacio.php?id_categoria={$_GET['id_categoria']}&pag=$i\">$i</a>";  
         } 
         


         echo 
implode(" - " ,  $links); 
         
         
                    
                  
$anterior = ($_GET['pag'] - 1);
                  if (
$limit== $anterior){
                  
                  }
                  else if(
$_GET['pag'] != 1){
                      echo 
"<a class='paginacio' href='paginacio.php?id_categoria=".$_GET['id_categoria']."&pag=".$anterior."'>Anterior</a>";
                        } 

Etiquetas: paginacion
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 09:46.