Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/08/2011, 10:18
Avatar de xarmagedonx
xarmagedonx
 
Fecha de Ingreso: marzo-2009
Mensajes: 360
Antigüedad: 15 años, 1 mes
Puntos: 29
[Aporte] Paginador en php (funcional 100%)

Hola a todos!!, acabo de construir un paginador en php, 100% funcional, vi muchos post sobre usuarios que buscan un paginador en php, y que no pueden armarlo porque necesitan script que su host no acepta, o porque es muy complejo de editar el código y adaptarlo a su buscador.

100% FUNCIONAL SIN SCRIPT

Agradecimientos:

vgonga1986

darkasecas

Ellos me ayudaron a terminar el paginador.

rogertm

Por aportar su tutorial en 2008 de como armar un buscador simple en php y mysql:

http://www.forosdelweb.com/f18/aport...-mysql-632623/

Bueno ahora si, para los que necesitaban un paginador, que hace tiempo buscan y no pudieron armarlo por falta de conocimiento en php o por diferentes razones.

Voy a explicarlo todo en base al buscador de rogertm

Paso 1)

Tienen que poner esto, abajo de la "conexión con su base de datos" o "selección de base de datos":

Para no equivocarse y saber donde tienen que pegar este código tienen que pegarlo abajo de este símbolo "}".

Código PHP:
//Limito la busqueda 
$TAMANO_PAGINA 10

//examino la página a mostrar y el inicio del registro a mostrar 
$pagina $_GET["pagina"]; 
if (!
$pagina) { 
        
$inicio 0
        
$pagina=1

else { 
       
$inicio = ($pagina 1) * $TAMANO_PAGINA

Quedaría así:

Código PHP:
// seleccionamos la base de datos 
$db_selected mysql_select_db("aca tu base de datos"$server_link); 
if(!
$db_selected){ 
    die(
"No se pudo seleccionar la Base de Datos "mysql_error()); 

//Limito la busqueda 
$TAMANO_PAGINA 10

//examino la página a mostrar y el inicio del registro a mostrar 
$pagina $_GET["pagina"]; 
if (!
$pagina) { 
        
$inicio 0
        
$pagina=1

else { 
       
$inicio = ($pagina 1) * $TAMANO_PAGINA

Paso 2) Entras en tu base de datos desde tu host, si usas php-myadmin clickeas en la opción insertar y vas a ver una sección que diga "Columna".

Ahí vas a tener diferentes nombres, ID, titulodelanoticia o como se llamen, en el buscador de roger se llaman noticiaTitulo y noticiaNoticia:

Paso 3)

Después de la verificación de la consulta:
Código PHP:
// verificamos que se haya enviado una consulta 
if(isset($_GET['buscar']) && $_GET['buscar'] == 'Buscar'){ 
    
$frase htmlspecialchars($_GET['frase']); 
(Si no les dice htmlspecialchars no se preocupen no es que tienen mal su código, pero con htmlspecialchars es más seguro)

Bueno, abajo de eso pegan este código en el siguiente paso le vamos a dar una utilidad a la variable nueva que hicimos:
Código PHP:
$sssql mysql_query("SELECT noticiaTitulo, noticiaNoticia, 
                              MATCH (noticiaTitulo, noticiaNoticia) 
                              AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias 
                              FROM webs
                              WHERE MATCH (noticiaTitulo, noticiaNoticia)
                              AGAINST ('$frase' IN BOOLEAN MODE) 
                              ORDER BY coincidencias DESC "
$server_link
                              or die(
mysql_error()); 
Si en vez de noticiaTitulo y noticiaNoticia tienen otras columnas, las modifican por los nombres que tengan, si son más solo agregan una coma después de cada una.

Paso 4) Abajo del código que pegaron recién, tienen que tener otro muy parecido o igual, a ese último, le agregan abajo de "order by coincidencias desc", LIMIT $inicio, $TAMANO_PAGINA

el de abajo les quedaría así, esto les va a servir para limitar los resultados que aparecen en cada página:
Código PHP:
    $sqlBuscar mysql_query("SELECT noticiaTitulo, noticiaNoticia, 
                              MATCH (noticiaTitulo, noticiaNoticia) 
                              AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias 
                              FROM webs
                              WHERE MATCH (noticiaTitulo, noticiaNoticia)
                              AGAINST ('$frase' IN BOOLEAN MODE) 
                              ORDER BY coincidencias DESC
                              LIMIT $inicio, $TAMANO_PAGINA "
$server_link
                              or die(
mysql_error()); 
Paso 5) Abajo de este último paso seguro tienen una variable así:
Código PHP:
$totalRows mysql_num_rows($sqlBuscar); 
Borrenle el $sqlBuscar y le escriben $ssql, les quedaría, sino el paginador no les va a funcionar y va a repetir en todas las páginas los mismos 10 resultados:

Código PHP:
$totalRows mysql_num_rows($ssql); 
abajo agregan, esto va a servir para saber la cantidad total de páginas:
Código PHP:
//calculo el total de páginas
$total_paginas ceil($totalRows $TAMANO_PAGINA); 
y esto también, para que indique algo así:

Cita:
Número de registros encontrados: 260
Se muestran páginas de 10 registros cada una
Mostrando la página 5 de 26
Código PHP:
//pongo el número de registros total, el tamaño de página y la página que se muestra 
echo "Número de registros encontrados: " $totalRows "<br>"
echo 
"Se muestran páginas de " $TAMANO_PAGINA " registros cada una<br>"
echo 
"Mostrando la página " $pagina " de " $total_paginas "<p>"
quedaría:
Código PHP:
$totalRows mysql_num_rows($ssql);
//calculo el total de páginas
$total_paginas ceil($totalRows $TAMANO_PAGINA);
//pongo el número de registros total, el tamaño de página y la página que se muestra 
echo "Número de registros encontrados: " $totalRows "<br>"
echo 
"Se muestran páginas de " $TAMANO_PAGINA " registros cada una<br>"
echo 
"Mostrando la página " $pagina " de " $total_paginas "<p>"
Paso 6)

Arriba de "//Error debe introducir una palabra", que muestra el error, y más abajo otro distinto si no se encontro ningún resultado.

Vamos a pegar otro código, el último =):
Código PHP:
    // si se ha enviado vacio el formulario 
//muestro los distintos índices de las páginas, si es que hay varias páginas 
if ($total_paginas 1){ 
       for (
$i=1;$i<=$total_paginas;$i++){ 
           if (
$pagina == $i
              
//si muestro el índice de la página actual, no coloco enlace 
              
echo $pagina " "
           else 
              
//si el índice no corresponde con la página mostrada actualmente, coloco el enlace para ir a esa página 
              
echo "<a href='indextest1.php?frase=" $frase "&buscar=Buscar&pagina=" $i "'>" $i "</a> "
       } 

Aca van a editar "indextest1.php" por el nombre de su página principal, casi siempre es index.php o index.html pero miren bien.

Un saludo!!, si tuvieron errores dejan un comentario y los ayudo

Última edición por xarmagedonx; 05/08/2011 a las 10:24