
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
intente hacerlo de esta manera pero muestra 5 resultados y la paginación no muestra mas resultados.
Agradesco puedan ayudarme ya que soy nuevo en esto del php
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úsqueda arrojó <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úsqueda arrojó <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


0