Muy buenas.
Estoy intentando hacer una paginación de resultados de el buscador de mi web pero no acabo de entender el por que no funciona correctamente.
Me saca un NOTICE
Notice: Undefined index: num in C:\xampp\htdocs\paxarin\prueba-buscador\index.php on line 54
Esta es la linea
$pagina=$_GET["num"];
Cuando le doy a buscar me saca todos los resultado aunque tengo declarado que solo me saque 5 resultados
$registros=5;
Alguien puede decirme el por que ocurre esto?
Aqui os dejo el codigo completo
Código:
<?php
$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("cursopaginadb", $server_link);
if(!$db_selected){
die("No se pudo seleccionar la Base de Datos ". mysql_error());
}
//if para que cuando se cargue la pagina no aparezca el error de no existe busqueda
if (empty($_GET['frase'])){
$texto_busqueda = "";
}else{
$texto_busqueda = $_GET['frase'];}
// 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 titulo, url, descripcion,
MATCH (titulo, url, descripcion)
AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias
FROM buscador WHERE MATCH (titulo, url, descripcion)
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>");
// mostramos los resultados
while($row = mysql_fetch_array($sqlBuscar)){
echo "<strong><a href='#'>$row[titulo]</a></strong> <em></em><br />";
echo "<a href='".substr(strip_tags($row['url']), 0, 255)."' >Ir a pagina</a>";
//echo "<a href=''>".substr(strip_tags($row['url']), 0, 255)."...</a>";
echo "<p>".substr(strip_tags($row['descripcion']), 0, 255)."...</p>";
}
}
// 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 //
//otro mensaje del tipo Oops...!
elseif($totalRows == 0){
echo stripslashes("Su busqueda no arrojo resultados para <strong>$frase</strong>");
}
}
$registros=5;
$pagina=$_GET["num"];
if(is_numeric($pagina))
$inicio=(($pagina-1)*$registros);
else
$inicio=0;
$sqlBuscar=mysql_query("SELECT * FROM buscador ORDER BY titulo LIMIT $inicio, $registros;",$server_link);
//redondeo de paginas con ceil
$paginas= ceil($totalRows/$registros);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Prueba buscador</title>
</head>
<body>
<form name="buscar" action="<?php $_SERVER['PHP_SELF'] ?>" method="get">
Buscar: <input type="text" size="50" value="<?php echo ($texto_busqueda); ?>" name="frase" />
<input type="submit" name="buscar" value="Buscar" />
</form>
<?php
if($pagina>1)
echo "<a href='index.php?num=". ($pagina-1) ."'>Anterior</a> ";
for($cont=1;$cont<=$paginas;$cont++)
{
//verificamos en la pagina que estamos para que no este el link
if($cont==$pagina)
echo $cont ." ";
else
echo "<a href='index.php?num=". $cont ."'>$cont</a> ";
}
if($pagina<$paginas)
echo "<a href='index.php?num=". ($pagina+1) ."'>Siguiente</a> ";
?>
</body>
</html>