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>



