PHP - Problema con paginacion php y mysql

 
Vista:
sin imagen de perfil

Problema con paginacion php y mysql

Publicado por Luis (1 intervención) el 05/03/2014 05:08:29
he estado tratando de hacer que los resultados de búsqueda se dividan en pagina y no logro hacerlo
tengo este código y busca muy bien los resultados pero en ocasiones los resultados son tantos que la pagina no carga y me gustaría paginar los resultados

este es mi codigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<form name="buscar" action="<?php $_SERVER['PHP_SELF'] ?>" method="get">
    Buscar: <input type="text" size="50" value="<?php echo $_GET['frase']; ?>" name="frase" />
    <input type="submit" name="buscar" value="Buscar" />
</form>
 
<?php
// conectar al servidor
$server_link = mysql_connect("localhost", "root", "");
if(!$server_link){
    die("Falló la Conexión ". mysql_error());
}
// seleccionamos la base de datos
$db_selected = mysql_select_db("db", $server_link);
if(!$db_selected){
    die("No se pudo seleccionar la Base de Datos ". mysql_error());
}
// varificamos que el formulario halla sido enviado
if(isset($_GET['buscar']) && $_GET['buscar'] == 'Buscar'){
    $frase = addslashes($_GET['frase']);
    // hacemos la consulta de busqueda
    // ver explicación mas abajo
    $sqlBuscar = mysql_query("SELECT libro, id_libro, capitulo, verso, texto,
                            MATCH (libro, id_libro, capitulo, verso, texto)
                            AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias
                            FROM reina_valera_60, libros_biblia WHERE MATCH (libro, id_libro, capitulo, verso, texto)
                            AGAINST ('$frase' IN BOOLEAN MODE)
                            ORDER BY coincidencias DESC", $server_link)
                            or die(mysql_error());
    $totalRows = mysql_num_rows($sqlBuscar);
    // Enviamos un mensaje
    // indicando la cantidad de resultados ($totalRows)
    // para la frase busada ($frase)
    if(!empty($totalRows)){
        echo stripslashes("<p>Su b&uacute;squeda arroj&oacute; <strong>$totalRows</strong> resultados para <strong>$frase</strong></p><hr>");
        // mostramos los resultados
        while($row = mysql_fetch_array($sqlBuscar)){
         echo "<div class='resu'><div class='titu'>";
            echo "<strong>$row[libro]: cap: $row[capitulo] : $row[verso]</strong> ";
         echo " || <em class='coin'>Coincidencias: ". round($row['coincidencias']) ."</em></div>";
            echo "<p>".substr(strip_tags($row['texto']), 0, 255)."...</p>";
         echo "</div>";
        }
    }
    // si se ha enviado vacio el formulario
    // mostramos un mensaje del tipo Oops...!
    elseif(empty($_GET['frase'])){
        echo "Debe introducir una palabra o frase.";
    }
    // si no hay resultados //
    elseif($totalRows == 0){
        echo stripslashes("Su busqueda no arrojo resultados para <strong>$frase</strong>");
    }
}
?>


intente hacerlo de esta manera pero muestra 5 resultados y la paginación no muestra mas resultados.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<form name="buscar" action="<?php $_SERVER['PHP_SELF'] ?>" method="get">
    Buscar: <input type="text" size="50" value="<?php echo $_GET['frase']; ?>" name="frase" />
    <input type="submit" name="buscar" value="Buscar" />
</form>
 
<?php
// conectar al servidor
$server_link = mysql_connect("gersoncrespocom.ipagemysql.com", "tonysg", "001313");
if(!$server_link){
    die("Falló la Conexión ". mysql_error());
}
// seleccionamos la base de datos
$db_selected = mysql_select_db("biblia", $server_link);
if(!$db_selected){
    die("No se pudo seleccionar la Base de Datos ". mysql_error());
}
// varificamos que el formulario halla sido enviado
if(isset($_GET['buscar']) && $_GET['buscar'] == 'Buscar'){
    $frase = addslashes($_GET['frase']);
// maximo por pagina
$limit = 5;
 
// pagina pedida
$pag = (int) $_GET["pag"];
if ($pag < 1)
{
   $pag = 1;
}
$offset = ($pag-1) * $limit;
 
    // hacemos la consulta de busqueda
    // ver explicación mas abajo
    $sqlBuscar = mysql_query("SELECT SQL_CALC_FOUND_ROWS libro, id_libro, capitulo, verso, texto,
                            MATCH (libro, id_libro, capitulo, verso, texto)
                            AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias
                            FROM reina_valera_60, libros_biblia WHERE MATCH (libro, id_libro, capitulo, verso, texto)
                            AGAINST ('$frase' IN BOOLEAN MODE)
                            ORDER BY coincidencias DESC LIMIT $offset, $limit", $server_link)
                            or die(mysql_error());
                     $sqlTotal = "SELECT FOUND_ROWS() as total";
    $totalRows = mysql_num_rows($sqlBuscar);
   $rs = mysql_query($sql);
   $rsTotal = mysql_query($sqlTotal);
 
   $rowTotal = mysql_fetch_assoc($rsTotal);
   // Total de registros sin limit
   $total = $rowTotal["total"];
    // Enviamos un mensaje
    // indicando la cantidad de resultados ($totalRows)
    // para la frase busada ($frase)
    if(!empty($totalRows)){
        echo stripslashes("<p>Su b&uacute;squeda arroj&oacute; <strong>$totalRows</strong> resultados para <strong>$frase</strong></p><hr>");
 
        // mostramos los resultados
        while($row = mysql_fetch_array($sqlBuscar)){
         echo "<div class='resu'><div class='titu'>";
            echo "<strong>$row[libro]: cap: $row[capitulo] : $row[verso]</strong> ";
         echo " || <em class='coin'>Coincidencias: ". round($row['coincidencias']) ."</em></div>";
            echo "<p>".substr(strip_tags($row['texto']), 0, 255)."...</p>";
         echo "</div>";
        }
    }
    // si se ha enviado vacio el formulario
    // mostramos un mensaje del tipo Oops...!
    elseif(empty($_GET['frase'])){
        echo "Debe introducir una palabra o frase.";
    }
    // si no hay resultados //
    elseif($totalRows == 0){
        echo stripslashes("Su busqueda no arrojo resultados para <strong>$frase</strong>");
    }
}
?>
<?php
         $totalPag = ceil($total/$limit);
         $links = array();
         for( $i=1; $i<=$totalPag ; $i++)
         {
            $links[] = "<a href=\"?pag=$i\">$i</a>";
         }
         echo implode(" - ", $links);
      ?>

Agradesco puedan ayudarme ya que soy nuevo en esto del php
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder