he implementado una paginacion de resultados. cree las funciones paginar() y mostrar_datos(). al mostrar los resultados, me muestra el siguiente error.
Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in /home/peruarte/public_html/paginacion/conexion.php on line 40
en mi archivo conexion.php declaro la conexion de la bd y las funciones query y fetch_array.
Código PHP :
// ejecuta la query cargada en $sql. function query($sql) { global $cn; $query = mysql_query($sql,$cn); return $query; } // retorna el numero de filas del result_set ($result) function fetch_array($result) { $fila = mysql_fetch_array($result); return $fila; } // retorna el numero de filas del result_set ($result) function num_rows($result) { $num_rows = mysql_num_rows($result); return $num_rows; }
en el archivo paginar.php declare la funcion mostrar_registros() y paginar().
Código PHP :
// crearemos una funcion para mostrar todos los registros. function mostrar_registros($inicio,$registros) { global $cn; // declaramos la primera consulta para sacar el total de registros para paginar. $sql = "SELECT id FROM contactos"; $rs_sql = query($sql,$cn) or die(mysql_error()); $total_registros = num_rows($rs_sql); // utilizamos una consulta sql para mostrar los datos. declaramos la variable $sql y utilizamos la funcion LIMIT. $sql_registros = "SELECT * FROM contactos LIMIT $inicio, $registros"; $query_registros = query($sql_registros,$cn) or die(mysql_error()); $total_paginas = ceil($total_registros / $registros); } function paginar($total_registros,$registros,$pagina,$total_paginas) { if($total_registros) { if(($pagina - 1) > 0) { echo "<a href=\"ejemplo.php?pagina=".($pagina-1)."\"> < Anterior</a>"; } for ($i=1; $i<=$total_paginas; $i++){ if ($pagina == $i) { echo "<a href = javascript:void(0);> ".$pagina."</a>"; } else { echo "<a href=\"ejemplo.php?pagina=".$i."\"> ".$i."</a>"; } } if(($pagina + 1)<=$total_paginas) { echo "<a href=\"ejemplo.php?pagina=".($pagina+1)."\"> Siguiente ></a>"; } } }
y en mi archivo ejemplo.php muestro los resultados con un while.
Código PHP :
/* incluiremos el archivo llamado conexion.php con y tambien el archivo paginar.php. */ include("conexion.php"); include("paginar.php"); // llamamos a la funcion conexion(). $cn = Conexion(); // declaramos la variable $registros. le asignamos el valor 5 por el limite de registros a mostrar. $registros = 5; $pagina = $_GET['pagina']; // la variable $pagina a enviar es por el metodo $_GET. // declaramos la variable $pagina. condicionamos la variable pagina si es true or false. if (!$pagina) { $inicio = 0; // inicia el registro en 0. $pagina = 1; // si no hubieran mas registros, se mostraria el numero 1. } else // caso contrario me mostraria el total de registros a paginar. { } mostrar_registros($inicio,$registros); // mustro los datos en un while. while($row = fetch_array($query_registros)) { // los campos a mostrar. } // Libero memoria con la funcion mysql_free_result(): mysql_free_result($query_registros); // mostramos la funcion paginar(). paginar($total_registros,$registros,$pagina,$total_paginas); mysql_close($cn); //cierra la conexion.
he testeado el sql y no me muestra error en la sintaxis. lo que si me muestra es el error del while. cual es el error que no me muetra lo registros ?.
les estare agradecido si me ayudan con mi tema.