Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/06/2012, 16:13
Joz
 
Fecha de Ingreso: junio-2012
Mensajes: 5
Antigüedad: 11 años, 10 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.