Foros del Web » Programando para Internet » PHP »

Problema con el paginador del buscador

Estas en el tema de Problema con el paginador del buscador en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 10/09/2012, 05:06
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 14 años, 2 meses
Puntos: 6
Problema con el paginador del buscador

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&uacute;squeda arroj&oacute; <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>
__________________
http://www.paxarindesign.es
  #2 (permalink)  
Antiguo 10/09/2012, 05:12
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Problema con el paginador del buscador

Donde declaras, NUM ?

que tienes $_GET["NUM"]
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #3 (permalink)  
Antiguo 10/09/2012, 05:14
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Problema con el paginador del buscador

Cita:
Iniciado por gldelossantos Ver Mensaje
Donde declaras, NUM ?

que tienes $_GET["NUM"]
En este bloque que esta dentro del HTML
Código:
 <?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> ";
			?>
__________________
http://www.paxarindesign.es
  #4 (permalink)  
Antiguo 10/09/2012, 05:33
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Problema con el paginador del buscador

Ok amigo, desde tu linea

$registros = 5;

vas a reemplazar todas tus lineas por estas.

$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>
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #5 (permalink)  
Antiguo 10/09/2012, 08:40
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Problema con el paginador del buscador

Cita:
Iniciado por gldelossantos Ver Mensaje
Ok amigo, desde tu linea

$registros = 5;

vas a reemplazar todas tus lineas por estas.

$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>
La verdad no lo entiendo.
Cambie lo que me indicaste y sigo igual, hago una busqueda en al que existen 6 registros. Me los sigue mostrando en la misma pagina y me sigue apareciendo el NOTICE
Notice: Undefined index: num in C:\xampp\htdocs\paxarin\prueba-buscador\prueba.php on line 54
__________________
http://www.paxarindesign.es

Etiquetas: formulario, html, mysql, paginador, registro, sql, buscadores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:51.