• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Byter

[MySql] Duvidas...

8 mensagens neste tópico

Boas, tenho varias duvidas na MySQl.

Tenho um blog feito por mim e quero listar so os primeiros 15 posts por pagina, ja pensei fazer between id 1 and 15 mas se apagar posts ele so vai selecionar 14. Como faço para contar o numero de rows? Para ir da primeira Row ate á numero 15?

Outra duvida é, tenho uma coluna chamada categoria nos posts, mas quando listo ele lista a mesma categoria varias vezes, e so quero liste 1 vez cada categoria..

Isto é tudo para o PHP. Aguardo ajudas se possivel. Obrigado.

Cumprimentos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Utilizando o DISTINCT resolves o primeiro problema:

SELECT DISTINCT categoria

Quanto à primeira, muita gente opta por seleccionar todos de uma vez e depois através do PHP selecciona os primeiros 15... O que acaba por ser mais eficaz do que fazer várias queries a pedir os outros 15 e etc...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, e como faço no PHP?

Primeiro os GETs da pagina, certo?

E depois?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No caso do primeiro problema podes resolver através do LIMIT.

- Obter as rows de 1 a 15

SELECT * FROM tabela LIMIT 0, 15;

- Obter as rows de 16 a 30

SELECT * FROM tabela LIMIT 15, 15;

- Obter as rows de 31 a 45

SELECT * FROM tabela LIMIT 30, 15;

etc...

PS: Desculpem a minha ignorância. Como é que obter as rows todas é mais eficiente do que só as 15?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

PS: Desculpem a minha ignorância. Como é que obter as rows todas é mais eficiente do que só as 15?

Eu disse isso no caso de se andar sempre a ver os posts de 0 a 14, 15 a 29, 30 a 44, etc... Se for para isso vão haver várias queries à BD, o que reduz a performance. Mas realmente num blog quase ninguém faz isso, e só querem ver os posts recentes. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

SELECT * FROM tabela LIMIT 15, 15;?

Nao sera?

SELECT * FROM tabela LIMIT 15, 30;?

Viva, obrigado pelas repsostas. Agora tenho outro problema, como e que faço para quando envio categorias por CheckBoxs, depois de adicionar a db, ele me faz a list dividindo por virgulas? Tipo, se for Carros e Toyota , como faço para ele quando tiver virgulas por aquilo noutra categoria?

Cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

SELECT * FROM tabela LIMIT 15, 15;?

Nao sera?

SELECT * FROM tabela LIMIT 15, 30;?

Não. No LIMIT o primeiro valor é o índice da 1ª linha que queres obter (índice começa no 0) e o segundo valor é o número máximo de linhas que queres obter, ou seja, 15 de cada vez.

Viva, obrigado pelas repsostas. Agora tenho outro problema, como e que faço para quando envio categorias por CheckBoxs, depois de adicionar a db, ele me faz a list dividindo por virgulas? Tipo, se for Carros e Toyota , como faço para ele quando tiver virgulas por aquilo noutra categoria?

Cumps.

Não percebi a tua duvida...
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Entao, adiciono categorias o php Recebe as e poe Virgulas, e depois quando vou buscar a categoria ele conta como categoria diferente quando tem uma virgula.

0

Partilhar esta mensagem


Link 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