Foros del Web » Programando para Internet » PHP »

Error Al Consultar Registros Y Paginarlos

Estas en el tema de Error Al Consultar Registros Y Paginarlos en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 11/02/2008, 06:14
Avatar de acousticgerman  
Fecha de Ingreso: abril-2004
Ubicación: Merlo, buenos aires
Mensajes: 364
Antigüedad: 20 años
Puntos: 1
De acuerdo Error Al Consultar Registros Y Paginarlos

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
__________________
"Life goes on..."
  #2 (permalink)  
Antiguo 11/02/2008, 06:24
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 6 meses
Puntos: 25
Re: Error Al Consultar Registros Y Paginarlos

Mira esto espero que te guste salu2.

PHPPaging es una herramienta de paginación desarrollada en PHP, cuya función es dividir los resultados obtenidos de una base de datos, aunque no necesariamente, en varias páginas que mostrarán "n" registros cada una. Además es altamente personalizable, tanto en el estilo como en los textos a mostrar en la barra de navegación que se genera automáticamente.

Este script se caracteriza por su fácil adaptación a un sitio PHP terminado. Con solo incluir el archivo y ejecutar un par de funciones, el script devolverá también de manera amigable los datos que se deben mostrar en la página seleccionada.

La finalidad cardinal de PHPPaging es ofrecer una potente herramienta de paginación, y al mismo tiempo una solución sencilla al problema al que muchos diseñadores y/o programadores se enfrentan a la hora de crear un sitio web. Sin la necesidad de entender el código de la librería, se obtendrán resultados y estadísticas avanzadas sobre la paginación realizada.

Se adjunta la documentación y el tutorial que mostrará rápida y comprensiblemente la forma de uso de esta herramienta.


http://php.myokram.info/phppaging/
  #3 (permalink)  
Antiguo 11/02/2008, 06:38
Avatar de acousticgerman  
Fecha de Ingreso: abril-2004
Ubicación: Merlo, buenos aires
Mensajes: 364
Antigüedad: 20 años
Puntos: 1
De acuerdo Re: Error Al Consultar Registros Y Paginarlos

interesante, lo voy a ojear, pero aún así estoy buscando aprender a conocer a fondo códigos hechos en php para dominar PHP, un abrazo!!!


SIGO BUSCANDO RESPUESTA!!!!



GRACIAS AMIGO!!!!! (igual lo voy a ver ahora)
__________________
"Life goes on..."
  #4 (permalink)  
Antiguo 11/02/2008, 07:56
Avatar de acousticgerman  
Fecha de Ingreso: abril-2004
Ubicación: Merlo, buenos aires
Mensajes: 364
Antigüedad: 20 años
Puntos: 1
De acuerdo Re: Error Al Consultar Registros Y Paginarlos

alguien podría ayudarme??? gracias.
__________________
"Life goes on..."
  #5 (permalink)  
Antiguo 11/02/2008, 08:02
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Error Al Consultar Registros Y Paginarlos

Cambia esto en tu codigo para saber si hay algun error en tu instrucción SQL

Código PHP:
$ssql "select * from articulos " $criterio;
$rs mysql_query($ssql,$conn) or die ( mysql_error() ); // Linea modificada
$num_total_registros mysql_num_rows($rs);

$total_paginas ceil($num_total_registros $TAMANO_PAGINA);

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>";

// Siempre es mejor utilizar nombres diferentes para los querys

$ssql1 "select CODIGO_EMPRESA, DESCRIPCION, CODIGO_ORIGINAL, FOTO from articulos " $criterio " limit " $inicio "," $TAMANO_PAGINA;

$rs1 mysql_query($ssql1$conn) or die ( mysql_error() ); // Linea modificada

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>
"
;
}
?> 
Otra cosa siempre que creas una tabla es mejor hacerlo por fuera del while

Código PHP:
echo "<table width=\"80%\" bgcolor=\"gray\"><tr> 
y debes cerrar la etiqueta </table> por fuera del ciclo while sino estarias cerrando la tabla en la primera interacción del ciclo.

Saludos.

Última edición por Carlojas; 11/02/2008 a las 08:18
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 14:59.