Foros del Web » Programando para Internet » PHP »

problema con paginacion php

Estas en el tema de problema con paginacion php en el foro de PHP en Foros del Web. hola. habia dejando un tiempo de programar en php por motivos de salud y estoy retomando nuevamente para no dejar la practica. he creado 2 ...
  #1 (permalink)  
Antiguo 21/09/2011, 16:12
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Pregunta problema con paginacion php

hola. habia dejando un tiempo de programar en php por motivos de salud y estoy retomando nuevamente para no dejar la practica. he creado 2 funciones php: mostrar_registros y paginar para reducir el codigo de mi programacion. al mostrarlo en la web, me sale el siguiente error:

Código TEXT:
Ver original
  1. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\comenzando-desde cero\repaso 5 (bd)\ejemplo 2 (mostrando datos)\paginacion con funciones\ejemplo3\conexion.php on line 41

he revisado en mi archivo conexion.php la funcion fetch_array y no hay error.

Código PHP:
Ver original
  1. define("SERVIDOR","localhost");
  2.     define("USUARIO","root");
  3.     define("CLAVE","123456");
  4.     define("BASE_DATOS","agenda"); 
  5.    
  6.     $cn = NULL;
  7.     function Conexion()
  8.     {
  9.        global $cn;
  10.        
  11.        if (!($cn=mysql_connect(SERVIDOR,USUARIO,CLAVE)))
  12.        {
  13.           echo "Error conectando a la base de datos.";
  14.           exit();
  15.        }
  16.        if (!mysql_select_db(BASE_DATOS,$cn))
  17.        {
  18.           echo "Error seleccionando la base de datos.";
  19.           exit();
  20.        }
  21.        return $cn;
  22.     }
  23.    
  24.     // ejecuta la query cargada en $sql.
  25.     function query($sql)
  26.     {
  27.         global $cn;
  28.         $query = mysql_query($sql,$cn);
  29.         return $query;
  30.     }
  31.    
  32.     // retorna el numero de filas del result_set ($result)
  33.     function fetch_array($result)
  34.     {
  35.         global $cn;
  36.         $fila = mysql_fetch_array($result);
  37.         return $fila;
  38.     }
  39.    
  40.     // retorna el numero de filas del result_set ($result)
  41.     function num_rows($result)
  42.     {
  43.         global $cn;
  44.         $num_rows = mysql_num_rows($result);
  45.         return $num_rows;
  46.     }

este es mi codigo:

Código PHP:
Ver original
  1. function mostrar_registros($inicio,$registros)
  2. {
  3. global $cn;
  4.        
  5. // declaramos la primera consulta para sacar el total de registros para paginar.
  6. $sql        = "SELECT id FROM contactos";
  7. $rs_sql     = query($sql,$cn) or die(mysql_error());
  8. $total_registros    = num_rows($rs_sql);   
  9.        
  10. // utilizamos una consulta sql para mostrar los datos. declaramos la variable $sql y utilizamos la funcion LIMIT.  
  11. $sql_registros = "SELECT * FROM contactos LIMIT $inicio, $registros";
  12. $query_registros = query($sql_registros,$cn) or die(mysql_error());
  13. $total_paginas = ceil($total_registros / $registros);
  14.        
  15. }
  16.  
  17. function paginar($total_registros,$registros,$pagina,$total_paginas)
  18. {      
  19.        
  20. if($total_registros)
  21. {
  22.    
  23. if(($pagina - 1) > 0)
  24. {
  25. echo "<a href=\"ejemplo3.php?pagina=".($pagina-1)."\"> < Anterior</a>";
  26. }
  27.  
  28.    
  29. for ($i=1; $i<=$total_paginas; $i++){
  30. if ($pagina == $i)
  31. {
  32. echo "<a href = javascript:void(0);>&nbsp;".$pagina."</a>";
  33. }
  34. else
  35. {
  36. echo "<a href=\"ejemplo3.php?pagina=".$i."\">&nbsp;".$i."</a>";
  37. }  
  38. }
  39.          
  40. if(($pagina + 1)<=$total_paginas)
  41. {
  42. echo "<a href=\"ejemplo3.php?pagina=".($pagina+1)."\"> Siguiente ></a>";
  43. }
  44.            
  45.            
  46. }      
  47.        
  48. }

Última edición por esaenz22; 21/09/2011 a las 16:39 Razón: inserte mas codigo para que se entienda mejor el tema.
  #2 (permalink)  
Antiguo 21/09/2011, 17:10
 
Fecha de Ingreso: julio-2011
Mensajes: 220
Antigüedad: 12 años, 9 meses
Puntos: 72
Respuesta: problema con paginacion php

Parece que lo que falta es seleccionar la base de datos.
  #3 (permalink)  
Antiguo 21/09/2011, 17:34
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: problema con paginacion php

Tal vez la variable $cn cargada con la conexión no está en el mismo archivo, simplemente déjalo así:
Código PHP:
Ver original
  1. $rs_sql = query($sql) or die(mysql_error());
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #4 (permalink)  
Antiguo 22/09/2011, 00:05
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: problema con paginacion php

esaenz22, el error es claro: la variable que estas proporcionando a la funcion fetch_array() no es un recurso valido de MySQL, porque, seguramente porque tienes el error en la consulta.

Aparentemente tus funciones estan bien, entonces, revisa que en todas las consultas verifiques si hay error o no, modificando tu funcion query():

Código PHP:
Ver original
  1. $query = mysql_query($sql,$cn) or die("'No se puede ejecutar: $sql<br />MySQL dijo:" . mysql_error());

Con ese simple or die() podras averiguar cual es exactamente el problema.

lubtufano, puede ser que $cn sea NULL por no haber conectado aun, ya veremos que dice el error.

Cita:
Iniciado por Sourcegeek
Tal vez la variable $cn cargada con la conexión no está en el mismo archivo, simplemente déjalo así:
No veo de que manera podria afectar que $cn no este en el mismo archivo, si en todas sus funciones de acceso a base de datos tiene global $cn; y, en todo caso, la funcion query() ignora ese parametro.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 22/09/2011, 09:30
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: problema con paginacion php

gracias por sus respuestas muchachos. Triby, he revisado mi consulta y lo imprimi en el phpmyadmin y no me mostro un error. siempre he utilizado el or die() para saber si no hay error de sintaxis en el sql.

el error sql k me muestra es en la variable $sql_registros.

Código PHP:
Ver original
  1. $sql_registros = "SELECT * FROM contactos LIMIT $inicio, $registros";

eso es lo que he modificado.

Código PHP:
Ver original
  1. // crearemos una funcion para mostrar todos los registros.
  2.     function mostrar_registros($inicio,$registros)
  3.     {
  4.         global $cn;    
  5.        
  6.         // declaramos la primera consulta para sacar el total de registros para paginar.
  7.         $sql        = "SELECT id FROM contactos";
  8.         $rs_sql     = query($sql,$cn) or die(mysql_error());
  9.         $total_registros    = num_rows($rs_sql);   
  10.        
  11.         // utilizamos una consulta sql para mostrar los datos. declaramos la variable $sql y utilizamos la funcion LIMIT.  
  12.         $sql_registros = "SELECT * FROM contactos LIMIT $inicio, $registros";
  13.         $query_registros = query($sql_registros,$cn) or die(mysql_error());
  14.         $total_paginas = ceil($total_registros / $registros);
  15.        
  16.     }

Última edición por esaenz22; 22/09/2011 a las 10:02 Razón: correcion del tema y del codigo.
  #6 (permalink)  
Antiguo 28/11/2011, 14:37
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 13 años, 9 meses
Puntos: 67
Respuesta: problema con paginacion php

Hola, mirá porque no pruebas con esta clase para paginaciones en php, está genial, pruebala y me cuentas, ok?
__________________
Páginas web de alta calidad y hechas a la medida.

Etiquetas: mysql, paginacion, registro, sql, variables
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




La zona horaria es GMT -6. Ahora son las 21:51.