Foros del Web » Programando para Internet » PHP »

Error en paginacion (PHP & PostgreSQL)

Estas en el tema de Error en paginacion (PHP & PostgreSQL) en el foro de PHP en Foros del Web. Amigos, estoy haciendo una paginacion con PHP y base datos Postgres, pero en la sentencia sql me esta dando este error: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: ...
  #1 (permalink)  
Antiguo 29/07/2014, 13:51
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 36
Error en paginacion (PHP & PostgreSQL)

Amigos, estoy haciendo una paginacion con PHP y base datos Postgres, pero en la sentencia sql me esta dando este error:

Código PHP:
Ver original
  1. Warning: pg_query(): Query failed: ERROR: la sintaxis LIMIT #,# no está soportada LINE 1: SELECT * FROM tb_usuarios ORDER BY id ASC LIMIT 0,20 ^ HINT: Use cláusulas LIMIT y OFFSET separadas. in D:\WampServer\www\sagi2\contents\usuarios\user_list.php on line 108

CODIGO LINEA 108

Código PHP:
Ver original
  1. 107: $sql="SELECT * FROM tb_usuarios ".$criterio." ORDER BY ".$orden." ASC LIMIT ".$limitInf.",".$tamPag;
  2. 108: $res=pg_query($sql);

Cuando dejo el SQL solamente hasta esta parte, me funciona bien pero no hace el paginado

Código PHP:
Ver original
  1. $sql="SELECT * FROM tb_usuarios ".$criterio." ORDER BY ".$orden;


Espero me puedan ayudar...
  #2 (permalink)  
Antiguo 29/07/2014, 15:10
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Error en paginacion (PHP & PostgreSQL)

usa esta sintaxis

limit 5 offset 0
  #3 (permalink)  
Antiguo 30/07/2014, 06:01
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 36
Respuesta: Error en paginacion (PHP & PostgreSQL)

Aun asi me da problemas, te dejo el codigo para que lo veas mejor:

Código PHP:
Ver original
  1. //////////CALCULO DE ELEMENTOS NECESARIOS PARA LA PAGINACION
  2.     //CANTIDAD DE ELEMENTOS POR PAGINA
  3.     $tamPag=20;
  4.  
  5.     //PAGINA ACTUAL -> SI NO ESTA DEFINIDA Y LIMITES
  6.     if(!isset($_GET["pagina"]))
  7.     {
  8.        $pagina=1;
  9.        $inicio=1;
  10.        $final=$tamPag;
  11.     }else{
  12.        $pagina = $_GET["pagina"];
  13.     }
  14.     //CALCULO DEL LIMITE INFERIOR
  15.     $limitInf=($pagina-1)*$tamPag;
  16.  
  17.     //CALCULO DEL NUMERO DE PAGINAS
  18.     $numPags=ceil($numeroRegistros/$tamPag);
  19.     if(!isset($pagina))
  20.     {
  21.        $pagina=1;
  22.        $inicio=1;
  23.        $final=$tamPag;
  24.     }else{
  25.        $seccionActual=intval(($pagina-1)/$tamPag);
  26.        $inicio=($seccionActual*$tamPag)+1;
  27.  
  28.        if($pagina<$numPags)
  29.        {
  30.           $final=$inicio+$tamPag-1;
  31.        }else{
  32.           $final=$numPags;
  33.        }
  34.  
  35.        if ($final>$numPags){
  36.           $final=$numPags;
  37.        }
  38.     }
  39.  
  40. //////////FIN -> CALCULO DEL NUMERO DE PAGINAS
  41.  
  42. //////////CREACION DE LA CONSULTA CON LIMITES
  43. $sql="SELECT * FROM tb_usuarios ".$criterio." ORDER BY ".$orden." ASC LIMIT limit 5 offset 0";
  44. $res=pg_query($sql);
  45. //////////FIN -> CONSULTA CON LIMITES
  #4 (permalink)  
Antiguo 30/07/2014, 06:02
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 36
Respuesta: Error en paginacion (PHP & PostgreSQL)

Cuando cambio el contenido de la linea asi me funciona.

Código PHP:
Ver original
  1. $sql="SELECT * FROM tb_usuarios ".$criterio." ORDER BY ".$orden." ASC LIMIT 3 OFFSET 1 ";

Pero cuando trato de sustituirlos por las variables me da problemas, no me muestra ningun error pero tampoco me muestra el contenido.

Código PHP:
Ver original
  1. $sql="SELECT * FROM tb_usuarios ".$criterio." ORDER BY ".$orden." ASC LIMIT ".$limitInf." OFFSET ".$tamPag." ";

Última edición por alexisverano; 30/07/2014 a las 06:09
  #5 (permalink)  
Antiguo 30/07/2014, 06:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Error en paginacion (PHP & PostgreSQL)

Cita:
Iniciado por alexisverano Ver Mensaje
Cuando cambio el contenido de la linea asi me funciona.

Código PHP:
Ver original
  1. $sql="SELECT * FROM tb_usuarios ".$criterio." ORDER BY ".$orden." ASC LIMIT 3 OFFSET 1 ";

Pero cuando trato de sustituirlos por las variables me da problemas, no me muestra ningun error pero tampoco me muestra el contenido.

Código PHP:
Ver original
  1. $sql="SELECT * FROM tb_usuarios ".$criterio." ORDER BY ".$orden." ASC LIMIT ".$limitInf." OFFSET ".$tamPag." ";
Altamente probable que las variables no contengan exactamente lo que crees que contienen.

¿Por qué no haces un echo para ver lo que queda armado? Con eso podríamos asegurarnos de qué está pasando, ya que el problema es más la formación del SQL como cadena de texto, que un problema de PHP...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 30/07/2014, 07:46
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Error en paginacion (PHP & PostgreSQL)

exacto, postgres no es como mysql, que es un poco mas permisos,
mas bien podrias hacer esto:

LIMIT ".intval($limitInf)." OFFSET ".intcal($tamPag)."

postgres si espera un numero, entonces pasale un numero no un string
se entiende?
  #7 (permalink)  
Antiguo 30/07/2014, 08:19
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 36
Respuesta: Error en paginacion (PHP & PostgreSQL)

Sustitui la linea de codigo de esta forma y no me muestra ningun resultado.

Código PHP:
Ver original
  1. $sql=" SELECT * FROM tb_usuarios ".$criterio." ORDER BY ".$orden." ASC LIMIT ".intval($limitInf)." OFFSET ".intval($tamPag)." ";
  #8 (permalink)  
Antiguo 30/07/2014, 08:29
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 36
Respuesta: Error en paginacion (PHP & PostgreSQL)

Ahora inverti los valores, quedando de esta forma y si me muestra los resultados,

Código PHP:
Ver original
  1. $sql=" SELECT * FROM tb_usuarios ".$criterio." ORDER BY ".$orden." ASC LIMIT ".intval($limitInf)." OFFSET ".intval($tamPag)." ";

Me esta dando un error al dar clic en siguiente del paginador, voy revisar y despues les comento sino puedo resolver.
  #9 (permalink)  
Antiguo 30/07/2014, 08:48
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 36
Respuesta: Error en paginacion (PHP & PostgreSQL)

YA, TODO OK...

Gracias a @Patriarka y @gnzsoloyo, por su tiempo y aportes.

Etiquetas: paginacion, select, sql, usuarios
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 03:59.