Hola a todos, hace tiempo hice un formulario busqueda por palabra clave para realizar consultas a una base de datos y paginar los resultados de acuerdo a la palabra que se ponga en el buscador.
En un principio me funcionó bien, pero ahora no está funcionando y me tira el siguiente error:
a. ERROR:
Número de registros encontrados: 451
Se muestran páginas de 7 registros cada una
Mostrando la página 1 de 65
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/httpd/misitioweb.com.ar/public_html/paginacion.php on line 216
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/httpd/misitioweb.com.ar/public_html/paginacion.php on line 242
-------------------------------------------------------------
b. ESTE ES EL FORMULARIO DE BUSQUEDA (catalogo.html)
<form method = "get" action="paginacion.php">
<strong>Si no conoce el código del producto realice una<br>Busqueda libre:</strong><br>
<input type="text" name="criterio" size="20" />
<input type="submit" value="Buscar" />
</form>
------------------------------------------------------------
c. ESTE ES EL CÓDIGO DEL ARCHIVO QUE PROCESA Y MUESTRA LOS DATOS (paginacion.php)
<div class="floatleft2">
<p class="margin3">
<table width="80%" border="0" bordercolor="none" bgcolor="black" align="center">
<td width="100%"><font color="#ffffff" size="1" face="Arial">Resultados por Nº de Código</font></td>
</tr>
</table>
<table width="80%" border="1" bordercolor="gray" bgcolor="gray" align="center">
<tr>
<td width="10%" bgcolor="gray">Código</td>
<td width="40%" bgcolor="gray">Descripción</td>
<td width="10%" bgcolor="gray">Original</td>
<td width="10%" bgcolor="gray">Foto</td>
</tr>
// CONECTO A LA BASE DE DATOS Y DETERMINO AL CAMPO "DESCRIPCION" COMO EL CAMPO EN EL QUE SE VAN A BUSCAR LAS COINCIDENCIAS CON LA PALABRA ESCRITA EN EL BUSCADOR
<?
//conecto con la base de datos
$conn = mysql_connect("localhost","nombre_tabla","password ");
mysql_select_db("nombre_basededatos",$conn);
//inicializo el criterio y recibo cualquier cadena que se desee buscar
$criterio = "";
if ($_GET["criterio"]!=""){
$txt_criterio = $_GET["criterio"];
$criterio = " where DESCRIPCION like '%" . $txt_criterio . "%'";
}
//Limito la busqueda
$TAMANO_PAGINA = 7;
//examino la página a mostrar y el inicio del registro a mostrar
$pagina = $_GET["pagina"];
if (!$pagina) {
$inicio = 0;
$pagina=1;
}
else {
$inicio = ($pagina - 1) * $TAMANO_PAGINA;
}
//miro a ver el número total de campos que hay en la tabla con esa búsqueda
$ssql = "select * from articulos " . $criterio;
$rs = mysql_query($ssql,$conn);
$num_total_registros = mysql_num_rows($rs);
//calculo el total de páginas
$total_paginas = ceil($num_total_registros / $TAMANO_PAGINA);
//pongo el número de registros total, el tamaño de página y la página que se muestra
echo "Número de registros encontrados: " . $num_total_registros . "<br>";
echo "Se muestran páginas de " . $TAMANO_PAGINA . " registros cada una<br>";
echo "Mostrando la página " . $pagina . " de " . $total_paginas . "<p>";
//construyo la sentencia SQL
$ssql = "select CODIGO_EMPRESA, DESCRIPCION, CODIGO_ORIGINAL, FOTO from articulos " . $criterio . " limit " . $inicio . "," . $TAMANO_PAGINA;
// MUESTRO LOS RESULTADOS EN COLUMNAS DE LOS SIGUIENTES CAMPOS:
$rs = mysql_query($ssql);
while ($fila = mysql_fetch_object($rs)){
echo "<table width=\"80%\" bgcolor=\"gray\"><tr>
<td width=\"10%\" border=\"1\" bgcolor=\"white\"><font color=\"black\" size=\"1\" face=\"Arial\">$fila->CODIGO_EMPRESA</font></td>
<td width=\"40%\" border=\"1\" bgcolor=\"white\"><font color=\"black\" size=\"1\" face=\"Arial\">$fila->DESCRIPCION</font></td>
<td width=\"10%\" border=\"1\" bgcolor=\"white\"><font color=\"black\" size=\"1\" face=\"Arial\">$fila->CODIGO_ORIGINAL</td>
<td width=\"10%\" border=\"1\" bgcolor=\"white\"><font color=\"black\" size=\"1\" face=\"Arial\">$fila->FOTO</font></td></p>
</tr>
</table>
";
}
?>
//CIERRO LA CONEXIÒN
<?
mysql_free_result($rs);
mysql_close($conn);
?>
<p class="margin3">
<table width="80%"><tr>
<td color="blue"><font color="blue">
// AQUÌ ARMO LA PAGINACIÒN DE LOS RESULTADOS
<?
if ($total_paginas > 1){
for ($i=1;$i<=$total_paginas;$i++){
if ($pagina == $i)
//si muestro el índice de la página actual, no coloco enlace
echo $pagina . " ";
else
//si el índice no corresponde con la página mostrada actualmente, coloco el enlace para ir a esa página
echo " <a href='paginacion.php?pagina=" . $i . "&criterio=" . $txt_criterio . "'>" . $i . "</a> ";
}
}
?>
</font></td></tr></table>
</div>
-----------------------------------------------
Cabe destacar que los datos que conectan a la base están bien.
GRAZIEEEEEE