entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Paginación PHP y Mysql

Hola amigos! una vez más molestando pidiendo de su ayuda, estoy realizando por primera vez la paginación con php y mysql ya que tengo un sitio en donde me arroja varios resultados de registros de una base de datos la cual quiero paginar y para ello indicarle la cantidad de resultados por página. Me estoy basando en este tutorial que encontré ( https://mimentevuela.wordpress.com/2015/12/25/paginacion-con-php-y-mysql/ ). Mi problema es que al momento de hacer mi consulta sql, en la parte del LIMIT si lo coloco después de mi consulta como se muestra a continuación en mi código si me muestra los números de página y se aumentan o disminuyen si yo le cambio en mi numero de resultados de pagina que es el $num_rec_per_page a 20 ó 5 etc. oero me sigue arrojando mas de 10 resultados cuando se supone que yo le estoy indicando que soólo me arroje 10. Si yo cambio mi LIMIT dentro de la consulta sql, si me imprime los 10 resultados pero mis numero de paginas deja de funcionar. Quisiera saber el por que me sucede esto ó alguna sugerencia, se los agradeceré mucho. Saludos.

<?php
  $num_rec_per_page=10;
  if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; };
  $start_from = ($page-1) * $num_rec_per_page;

  $sql = "
    SELECT
      p.id,
      p.folio,
      p.tipo,
      p.operacion,
      p.precio_en_pesos,
      p.precio_en_dolares,
      p.renta_ano,
      p.renta_mes,
      p.renta_dia,
      p.terreno,
      p.construccion,
      p.url_de_la_propiedad,
      c.numero_de_banos,
      c.numero_de_recamaras,
      c.numero_de_cajonesest,
      l.nombre AS colonia
    FROM
      propiedades AS p
    INNER JOIN
      caracteristicas AS c ON c.id_propiedad = p.id
    INNER JOIN
      localidades AS l ON l.id = p.colonia
    WHERE
      p.estado = 1 AND
      p.inmobiliaria = 4
  ;";

**  $sql .= " LIMIT ".$start_from.", ".$num_rec_per_page;**
    $stmt = $this->db->prepare($sql);
    $stmt->execute();
    $total_records = $stmt->rowCount();
    $total_pages = ceil($total_records / $num_rec_per_page);
?>

1 Respuesta

3votos

carlossevi Puntos63580

No sé si habrá más fallos, pero como mínimo la consulta SQL está mal construida, porque le pones un punto y coma ";" antes del LIMIT, con lo que éste no tiene efecto.

1voto

magarzon comentado

¿Dónde? Yo veo una coma, que es la forma abreviada de LIMIT 10 OFFSET 3 (por ejemplo)

Edito: Vale, ya lo vi, ANTES del LIMIT, pensé que te referías a la coma entre el offset y el nº de página

1voto

carlossevi comentado

$sql = "
    SELECT
      p.id,
      p.folio,
      p.tipo,
      p.operacion,
      p.precio_en_pesos,
      p.precio_en_dolares,
      p.renta_ano,
      p.renta_mes,
      p.renta_dia,
      p.terreno,
      p.construccion,
      p.url_de_la_propiedad,
      c.numero_de_banos,
      c.numero_de_recamaras,
      c.numero_de_cajonesest,
      l.nombre AS colonia
    FROM
      propiedades AS p
    INNER JOIN
      caracteristicas AS c ON c.id_propiedad = p.id
    INNER JOIN
      localidades AS l ON l.id = p.colonia
    WHERE
      p.estado = 1 AND
      p.inmobiliaria = 4      
  ;"; // <<-- AQUÍ

$sql .= " LIMIT ".$start_from.", ".$num_rec_per_page;

3votos

magarzon comentado

Edité mi respuesta, ya lo vi, no leí lo de ANTES, y lo buscaba después

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta