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.