Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Ivan22

Paginação de site

Mensagens Recomendadas

Ivan22

olá

criei uma paginação básica para o meu site  mas estou a utilizar duas querys diferentes...

1º eu conto o numero de conteudos existentes na minha b.d

2º limito pelo LIMIT do sql, para mostrar no site

genero:

  function ($pagina_actual){

    $sql['conteudos']=mysql_query("SELECT filmes.* FROM filmes LIMIT  ".$pagina_actual. ", 3 ");

           

    //mostrar 3 filmes por pagina

    $sql['numero_conteudos']=mysql_query("SELECT filmes.* FROM filmes);

  //da me o numero total de conteudo que tenho na bd

    return $sql;

}

É possível juntar as duas querys?

em que por exemplo, tinha um campo ALIAS que guardava me o valor total dos conteudos.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado

Tens a certeza que isso está a funcionar correctamente?

É que logo na primeira query tens um erro, devia ser "SELECT * FROM filmes LIMIT " . (($pagina_actual - 1) * 3) . ", 3". Depois, tens a noção que o mysql_query só te devolve o resource e não os dados, certo?

Finalmente, não, não tens como fugir às duas queries; no entanto, a segunda será muito (mesmo muito) mais rápida se fizeres assim: "SELECT COUNT(*) FROM filmes". Isto devolve um número ao invés de um array.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
helt

podes também mandar uma query string pela url, que te diga o nº total de registos que tens. Aí só fazias o COUNT quando não houvesse query string...


––––•(-• [ ђєlt ] •-)•––––

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ivan22

sim funciona

esqueci me de colocar é o nome da função, porque isto nao é copy paste do meu codigo original

é apenas um exemplo mais simples

Não apresentei o restante codigo php

mas o que eu faço em relação a saber numero total de conteudos é

$num_conteudo=funcao($pagina_actual);

$num_conteudo=mysql_num_rows($num_conteudo['numero_conteudos']);

em relação ao $pagina_actual eu inicio á zero

depois por paginação, somo +1

obrigado pela dica, o segundo exemplo ; )

ha alguma maneira mais simples, de criar uma paginação

sem recorrer a muitas querys ?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado
podes também mandar uma query string pela url, que te diga o nº total de registos que tens. Aí só fazias o COUNT quando não houvesse query string...
óptima sugestão essa por get

Sério, achas?  :nono1:

Pá, essa solução é horrível por todos os motivos e mais alguns... Imagina que estás a inserir (ou a remover) registos no back-office do site e estão utilizadores a ver isto, como é? O count da query string está inválido!

Alguém faz o bookmark duma página quando ainda só tinhas duas... Volta lá passado, sei lá, um mês, via bookmark, e pensa assim "este gajo nunca mais actualizou o site, continua com as mesmas duas páginas". Pior ainda, ele fez o bookmark da segunda, tu apagaste registos e agora tens apenas uma página; quando ele voltar vai ficar a olhar para uma página vazia. Very nice.

O COUNT(*) é ultra rápido, não é sacando fora essa query que vais resolver potenciais problemas de servidor e de MySQL - se existe algum problema, podes ter a certeza que não é daí.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado
Que tal usares um ORM que te faça isso tudo?

Hey, Ivan22, tenho uma ideia ainda mais fixe: primeiro, ATQJF e depois CIFP.

Não pareço tão cool a citar acrónimos sem explicar o que são?

ATQJ: Apagas Tudo o Que Já Fizeste

CIFP: Começas do Início a Fazer o Pino

ORM: Object Relational Mapping (basicamente, é enjorcares um sistema em que os registos da BD estão mapeados a objectos de classe PHP - a Zend Framework, por exemplo, tem coisas para isso)


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.