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>