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> </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> </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
?>
Y si a alguien le sirve el codigo de arriba pues perfecto tambien