Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/08/2012, 19:08
Avatar de thetwister
thetwister
 
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 15 años, 9 meses
Puntos: 3
Problemas para modificar paginacion con php mysql

Hola gente del Foro! ¿que cuentan?

Vengo a pedirles algo de ayuda con una paginación con PHP y MYSQL

Estoy haciendo una paginacion de la informacion que aparece en una tabla que previamente se conecta a una base de datos, eso ya esta listo pero ahora necesito que se muestre algo asi :

1 | 2 | 3 | 4 | 5 | 6 | ... | 410 |

y estando en una pagina mas avanzada asi

1 | ... 9 | 10 | 11 | 12 | 13 | ... | 410 |

Ya tengo hecha la primera parte, ese codigo puede paginar desde la pagina 1 hasta la pagina x segun la cantidad de filas que vaya a mostrar pero no se como adaptar mi codigo para que haga lo que puse arriba, es decir ,los puntos ... y asi, ya busque en internet pero no entendi muchos de ellos u otros hacian otras cosas un poco diferentes

Aqui lo que llevo

Código PHP:
 <?php
          
          $conectar
=mysql_connect("localhost","root","") OR die(mysql_error());
          
mysql_select_db("noticias",$conectar);
                      @
$nupag=$_GET['nupag'];
                    if (
$nupag=="")
                    {
                        
$nupag=1;    
                    }
                   
//Evaluamos si recibimos la pagina
                   
if(isset($_GET['pg']))
                      {
                        
//Definimos la pagina
                        
$inicia=$_GET['pg'];
                      }
                  else
                      {
                        
//Iniciamos la pagina
                        
$inicia=0;
                      }
          
                     
// $caja es en caso de que llege la peticion de un boton de form, no le hagan caso a esa variable
                                   
                      
$contar_f1=mysql_query("SELECT COUNT(*) FROM articulos",$conectar);
                      

                      
$total_f1=@mysql_fetch_array($contar_f1);
                              
                    
//Variable contadora
                    
$cont=1;
                    
                    
//Variable de numero
                    
$num=1;
                    
                    
//Variable de avance
                    
$avance=1;
                    
$pex=0;
                    
                
//Cantidad de datos a mostrar por pagina ---- IMPORTANTE
                    
$elementos=3;                                    
                      
            
?>    
                      <div class='d_b2_fila_no'>Noticias: <?php echo $total_f1[0]; ?> </div>
                      
            <?php //Imprimir fila sobre informacion de cada columna antes de hacer el "WHILE" ?>
                    <div class="d_b3_con">
                        <table width="500" border="1" cellspacing="0" cellpadding="0">
                      <tr>
                        <td>ID</td>
                        <td>Titulo</td>
                        <td>Fecha</td>
                        <td>&nbsp;</td>
                      </tr>                  
            
            <?php
            
//Conectarse a la Base de datos
                      
$cons_b_esc=mysql_query("SELECT * FROM articulos",$conectar);

                      
//Ciclo para que al final solo muestre la cantidad de filas que se desea por pagina, en este caso 3 filas
                      
while ($trae=mysql_fetch_array($cons_b_esc))
                        {
                            
//Evaluamos si entra el contador
                        
if($cont>=$inicia)
                        {
                            
//Evaluamos si imprime los $elementos registros
                            
if($num<=$elementos)
                            {
                                
//$cin=include('icd/busca_etps_onlynum_for_besc.php');
               
?>    
                           
                           <tr>
                            <td><?php echo @utf8_encode($trae['id']); ?></div>
                            <td><?php echo @utf8_encode($trae['titulo']); ?></td>
                            <td><?php echo @utf8_encode($trae['fecha']); ?></td>
                            <td>&nbsp;</td>
                        </tr>   
                        
                  <?php
                         $num
++;
                                
$pex++;
                                
                            }
                        }
                    
                    
//Incrementamos el contador
                    
$cont++;
                        }
            @
mysql_close($conectar);
        
?>
        </table>
        <?php
               
                        
//Se divide el numero total de filas en la base de datos por la cantidad que quiero mostrar por pagina
                        //en este caso 11 filas / 3 = 3.6 + funcionCEIL = 4
                        
$paginas=ceil($total_f1[0]/$elementos);
                        echo 
"<div class='d_b2_fila_paginacion'>";                
                        
//Ciclo que imprima los numero de pagina
                        
for($ct=1;$ct<=$paginas;$ct++)
                        {
                            
//Este IF es para que cambie de color la div que muestra el numero de pagina actual
                            
if ($nupag==$ct)
                            {
                            
//Imprimir el valor de ct    
                            
echo "<div class='etapas_box' style='background:#10548B;'><p class='paginacion'><a class='paginacion' href='?pg=$avance&nupag=$ct'>".$ct."</a></p></div>";                    
                            }
                            
//Este ELSE para que muestre las demas divs en color normal
                            
else{
                                
//Imprimir el valor de ct    
                            
echo "<div class='etapas_box'><p class='paginacion'><a class='paginacion' href='?pg=$avance&nupag=$ct'>".$ct."</a></p></div>";    
                            }
                            
                            
$avance+=$elementos
                        }
                        echo 
"</div>";
                        
                
//FIN
                 
?>
Alguien me puede hechar una mano con algun ejemplo o algo para hacer eso de los puntos?

Y si a alguien le sirve el codigo de arriba pues perfecto tambien