Foros del Web » Programando para Internet » PHP »

Crear un buscador con paginador PHP

Estas en el tema de Crear un buscador con paginador PHP en el foro de PHP en Foros del Web. Hola, soy principiante en la programación en php, he logrado en poco tiempo desarrollar un Buscador simple por $_POST, Código PHP: <? if ( $_POST [ ...
  #1 (permalink)  
Antiguo 08/06/2012, 16:13
Joz
 
Fecha de Ingreso: junio-2012
Mensajes: 5
Antigüedad: 12 años, 5 meses
Puntos: 0
Crear un buscador con paginador PHP

Hola, soy principiante en la programación en php, he logrado en poco tiempo desarrollar un Buscador simple por $_POST,

Código PHP:
<?
if ($_POST['buscador'])

// Tomamos el valor ingresado
$buscar $_POST['palabra'];
$error "Buscar...";

// Si está vacío, lo informamos, sino realizamos la búsqueda
if($buscar==$error)
    {
    echo 
"<div class='notresultado' >No se ha ingresado una palabra a buscar<div class='notresultado' >";
    }
    else
    if(empty(
$buscar))
    {
    echo 
"<div class='notresultado' >No se ha ingresado una palabra a buscar<div class='notresultado' >";
    }
    else{
// Conexión a la base de datos y seleccion de registros
$con=mysql_connect("mysql2.000webhost.com","a_usuario","password");
mysql_select_db("a9374357_RENIEC"$con); 

$result mysql_query("SELECT * FROM Lugares WHERE Descripcion LIKE '%$buscar%' ORDER BY id DESC"$con); 

// Tomamos el total de los resultados
$total mysql_num_rows($result);

// Imprimimos los resultados
if ($row mysql_fetch_array($result)){ 
echo 
"<div class='resultado' >Se hallaron $total resultados para <b>$buscar</b></div>";
do { 
?>
<br />
<div class='titulo' ><a href="<?=$row['Enlace'];?>"><?=$row['Titulo'];?></a></div>
<div class='enlace' ><?=$row['Enlace']?></div>
<div class="descripcion"><?=$row['Descripcion'];?></div>
<div class="lugar">Lugar: <?=$row['Departamento'];?></div><br />

<?
} while ($row mysql_fetch_array($result)); 
echo 
" ";
} else { 
// En caso de no encontrar resultados
echo "<div class='notresultado' >No se encontraron resultados para <b>$buscar</b></div>"
}
}
}
?>
luego tambien logré crear resultados paginados con $_GET

Código PHP:
<?
//Conecto con la base de datos//
$con=mysql_connect("mysql2.000webhost.com","a_usuario","password");
mysql_select_db("a9374357_RENIEC"$con); 

//Obtenemos los resultados//
$result mysql_query("SELECT * FROM Lugares "$con); 

// Tomamos el total de los resultados
$total mysql_num_rows($result);

// Si no se encomtraron los resultados//
if ($total==0)

    echo 
"No se encontraron resultados";
    
mysql_close($con);
    exit();
}

//Paginamos//
$registros=3//Numero de registros

//Calculamos que se inicie en la primera pagina//
if(isset($_GET['page'])){
    
$pagina=$_GET['page'];
}else{
    
$pagina=1;
}

if (
is_numeric($pagina))
    
$inicio=(($pagina-1)*$registros);
else
    
$inicio=0;
$result mysql_query("SELECT * FROM Lugares LIMIT $inicio,$registros;"$con); 
$paginas ceil($total/$registros);
?>
<?php
if ($fila mysql_fetch_array($result));

do {
?>
<br />
<div class='titulo' ><a href="<?php echo $fila['../Paginación/Enlace'];?>"><?php echo $fila['Titulo'];?></a></div>
<div class='enlace' ><?php echo $fila['Enlace'];?></div>
<div class="descripcion"><?php echo $fila['Descripcion'];?></div>
<div class="lugar">Lugar: <?php echo $fila['Departamento'];?></div><br />
<?php
} while ($fila mysql_fetch_array($result));
?>
<br />
<ul class="pagination-clean">
<?
if ($pagina>1)
    echo 
"<li class='previous'><a href='Paginacion.php?page=". ($pagina-1) ."'>Anterior</a></li> ";
else
    echo 
"<li class='previous-off'>Anterior</li> ";
    for (
$cont=1;$cont<=$paginas;$cont++)
    {
        if (
$cont==$pagina)
            echo 
"<li class='active'>$cont</li> ";
        else
            echo 
"<li><a href='Paginacion.php?page="$cont ."'>$cont</a></li> ";
    }
if (
$pagina<$paginas)
    echo 
"<li class='next'><a href='Paginacion.php?page=". ($pagina+1) ."'>Siguiente</a></li> ";
else
    echo 
"<li class='next-off'>Siguiente</li> ";
?>
Y ahora quiero que una persona ingrese una palabra, se muestren resultados, pero si son muchos se pagine, estaba viendo un tutorial pero me "estanqué" en una parte pues no me sale, el código era el siguiente:

Código HTML:
<form action="BuscadorPag.php" method="get">
<input name="busqueda" type="text" value="<?php echo $_GET['busqueda'];?>"/>
<input name="btnBuscar" type="submit" value="Ir" />
</form> 
Código PHP:
<?
//*************FILTRO*************//
if ($_REQUEST['btnBuscar']!="" && $_REQUEST['busqueda']!="")
{
    if (
is_numeric ($_REQUEST['busqueda']))
        
$filtro " AND id="$_REQUEST['busqueda'];
    else
        
$filtro " AND (Descripcion LIKE '%"$_REQUEST['busqueda'] ."%' OR Titulo LIKE '%"$_REQUEST['busqueda'] ."%')";

} else {
    echo 
"No ha ingresado alguna palabra a buscar";
}



//Conecto con la base de datos//
$con=mysql_connect("mysql2.000webhost.com","a_usuario","password");
mysql_select_db("a9374357_RENIEC"$con); 

//Obtenemos los resultados//
$result mysql_query("SELECT * FROM Lugares WHERE id=Titulo $filtro;"$con); 

// Tomamos el total de los resultados
$total mysql_num_rows($result);

// Si no se encomtraron los resultados//
if ($total==0)

    echo 
"No se encontraron resultados";
    
mysql_close($con);
    exit();
}

//Paginamos//
$registros=3//Numero de registros

//Calculamos que se inicie en la primera pagina//
if(isset($_GET['page'])){
    
$pagina=$_GET['page'];
}else{
    
$pagina=1;
}

if (
is_numeric($pagina))
    
$inicio=(($pagina-1)*$registros);
else
    
$inicio=0;
$result mysql_query("SELECT * FROM Lugares WHERE id=Titulo $filtro LIMIT $inicio,$registros;"$con); 
$paginas ceil($total/$registros);
?>
<?php
if ($fila mysql_fetch_array($result));

do {
?>
<br />
<div class='titulo' ><a href="<?php echo $fila['../Paginación/Enlace'];?>"><?php echo $fila['Titulo'];?></a></div>
<div class='enlace' ><?php echo $fila['Enlace'];?></div>
<div class="descripcion"><?php echo $fila['Descripcion'];?></div>
<div class="lugar">Lugar: <?php echo $fila['Departamento'];?></div><br />
<?php
} while ($fila mysql_fetch_array($result));
?>
<br />
<ul class="pagination-clean">
<?
if ($pagina>1)
    echo 
"<li class='previous'><a href='BuscadorPagGET.php?page=". ($pagina-1) ."'>Anterior</a></li> ";
else
    echo 
"<li class='previous-off'>Anterior</li> ";
    for (
$cont=1;$cont<=$paginas;$cont++)
    {
        if (
$cont==$pagina)
            echo 
"<li class='active'>$cont</li> ";
        else
            echo 
"<li><a href='BuscadorPagGET.php?page="$cont ."'>$cont</a></li> ";
    }
if (
$pagina<$paginas)
    echo 
"<li class='next'><a href='BuscadorPagGET.php?page=". ($pagina+1) ."'>Siguiente</a></li> ";
else
    echo 
"<li class='next-off'>Siguiente</li> ";
?>
Con este codigo me sale siempre que no se encontraron resultados, y creo que es porque no necesito igualar WHERE id=Titulo y cuando elimno esa parte e intento hacerlo simplemente con este codigo:

Código PHP:
<?
//*************FILTRO*************//
if ($_REQUEST['btnBuscar']!="" && $_REQUEST['busqueda']!="")
{
    
$buscar $_REQUEST['busqueda'];
} else {
    echo 
"Ingrese un texto a buscar";
}

//Conecto con la base de datos//
$con=mysql_connect("mysql2.000webhost.com","a_usuario","password");
mysql_select_db("a9374357_RENIEC"$con); 

//Obtenemos los resultados//
$result mysql_query("SELECT * FROM Lugares LIKE '%$buscar%'"$con); 

// Tomamos el total de los resultados
$total mysql_num_rows($result);

// Si no se encomtraron los resultados//
if ($total==0)

    echo 
"No se encontraron resultados";
    
mysql_close($con);
    exit();
}

//Paginamos//
$registros=3//Numero de registros

//Calculamos que se inicie en la primera pagina//
if(isset($_GET['page'])){
    
$pagina=$_GET['page'];
}else{
    
$pagina=1;
}

if (
is_numeric($pagina))
    
$inicio=(($pagina-1)*$registros);
else
    
$inicio=0;
$result mysql_query("SELECT * FROM Lugares LIKE '%$buscar%' LIMIT $inicio,$registros;"$con); 
$paginas ceil($total/$registros);

?>
<?php
if ($fila mysql_fetch_array($result));

do {
?>
<br />
<div class='titulo' ><a href="<?php echo $fila['../Paginación/Enlace'];?>"><?php echo $fila['Titulo'];?></a></div>
<div class='enlace' ><?php echo $fila['Enlace'];?></div>
<div class="descripcion"><?php echo $fila['Descripcion'];?></div>
<div class="lugar">Lugar: <?php echo $fila['Departamento'];?></div><br />
<?php
} while ($fila mysql_fetch_array($result));
?>
<br />
<ul class="pagination-clean">
<?
if ($pagina>1)
    echo 
"<li class='previous'><a href='BuscadorPag.php?page=". ($pagina-1) ."'>Anterior</a></li> ";
else
    echo 
"<li class='previous-off'>Anterior</li> ";
    for (
$cont=1;$cont<=$paginas;$cont++)
    {
        if (
$cont==$pagina)
            echo 
"<li class='active'>$cont</li> ";
        else
            echo 
"<li><a href='BuscadorPag.php?page="$cont ."'>$cont</a></li> ";
    }
if (
$pagina<$paginas)
    echo 
"<li class='next'><a href='BuscadorPag.php?page=". ($pagina+1) ."'>Siguiente</a></li> ";
else
    echo 
"<li class='next-off'>Siguiente</li> ";

?>
Me sale un error en el navegador
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/a*****/public_html/BuscadorPag.php on line 121


Y esa linea es:
$total = mysql_num_rows($result);

Por favor necesito ayuda, si alguien puede darme alguna solución, le estaré muy agradecido. Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 08/06/2012, 23:52
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 8 meses
Puntos: 52
Hola no tienes que metarte la cabeza haciendo cosas que ya estan hechas, existe una excelente clase, o mejor dicho dos clases PHP 5 OO que tiene un buscador fulltext y ademas tiene paginador, visita http://www.objetivophp.com
  #3 (permalink)  
Antiguo 09/06/2012, 16:38
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 12 años, 5 meses
Puntos: 32
Respuesta: Crear un buscador con paginador PHP

Me parece perfecto que intentes hacerlo por tu cuenta, tu error esta aca:


Código PHP:
Ver original
  1. $result = mysql_query("SELECT * FROM Lugares LIKE '%$buscar%'", $con);

Porque te falta el where

Código PHP:
Ver original
  1. $result = mysql_query("SELECT * FROM Lugares WHERE Descripcion LIKE '%$buscar%'", $con);


Espero sirva, saludos y te felicito por tu esfuerzo de autosuperamiento!.
__________________
http://www.latinium.com.ar/
  #4 (permalink)  
Antiguo 01/07/2012, 15:27
Joz
 
Fecha de Ingreso: junio-2012
Mensajes: 5
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Crear un buscador con paginador PHP

Cita:
Iniciado por elgoncho99 Ver Mensaje
Me parece perfecto que intentes hacerlo por tu cuenta, tu error esta aca:


Código PHP:
Ver original
  1. $result = mysql_query("SELECT * FROM Lugares LIKE '%$buscar%'", $con);

Porque te falta el where

Código PHP:
Ver original
  1. $result = mysql_query("SELECT * FROM Lugares WHERE Descripcion LIKE '%$buscar%'", $con);


Espero sirva, saludos y te felicito por tu esfuerzo de autosuperamiento!.

MUCHAS GRACIAS, aunque lo solucione antes de leerlo, efectivamente ese era el error

Etiquetas: buscador-php, method-get, mysql-error, mysql_num_rows, paginacion-en-php
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 10:53.