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

vsempre

Contar Registos

13 mensagens neste tópico

Boas

Estou aqui com um pequeno problema.

Estou a fazer um directório e precisava de um "script" que me conta-se o número de registos que cada categoria tem. Algo do género:

Desporto (1) - Saúde (5) - Informática (2)....

O código que tenho para aparecer as categorias é este:

mysql_select_db($database_ligacao, $ligacao);
$query_rsSitesCat = "SELECT * FROM sites_categorias ORDER BY nome ASC";
$rsSitesCat = mysql_query($query_rsSitesCat, $ligacao) or die(mysql_error());
$row_rsSitesCat = mysql_fetch_assoc($rsSitesCat);
$totalRows_rsSitesCat = mysql_num_rows($rsSitesCat);

Já tentei usar isto mas apenas aparece o total da primeira categoria que depois é repetido pelas outras.

mysql_select_db($database_ligacao, $ligacao);
$query_rsCatTotal = "SELECT * FROM sites_categorias WHERE id = $row_rsSitesCat[id]";
$rsCatTotal = mysql_query($query_rsCatTotal, $ligacao) or die(mysql_error());
$row_rsCatTotal = mysql_fetch_assoc($rsCatTotal);
$totalRows_rsCatTotal = mysql_num_rows($rsCatTotal);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Experimenta isto :

mysql_select_db($database_ligacao, $ligacao);
$query_rsSitesCat = "SELECT nome, COUNT(nome) FROM sites_categorias GROUP BY nome";
$rsSitesCat = mysql_query($query_rsSitesCat, $ligacao) or die(mysql_error());

while($row = mysql_fetch_assoc($rsSitesCat)){
echo $row['name']." ("$row['COUNT(name)'].") - ";
}

PS : Não testei, por isso pode ter erros :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Obrigado pela ajuda.

Estou a ter um erro nesta linha e não estou a conseguir dar conta, será que me podes ajudar?

echo $row['name']." ("$row['COUNT(name)'].") - ";

O erro é:

Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' line 160

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Já funciona, no entanto tenho o mesmo problema..

Ele conta o primeiro registo e depois dá o valor desse registo para todos.. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

O problema está que na query esle está a utilizar os campos de select em PT e estás a ir buscar no row os campos em EN.

Deverá ser algo do género:

echo $row['nome']." (".$row['COUNT(nome)'].") - ";

Acho que assim já deve funcionar.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas Tico,

No testei que fiz, já tinha utilizado o nome correcto, mas obrigado pela ajuda.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Eu tenho duas tabelas:

Tabela Categorias, com:  id + nome

Tabela Sites com: id + cat_id + nome + imagem + url + texto

Se não estou em erro tenho que utilizar duas querys.

1 - Para listar todas as categorias

2 - Que me diga o total de websites que tenho por categoria, para isso tenho que fazer uma query à tabela "sites", correcto?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas Tico,

A tabela "sites_categorias" tal como disse em cima, apenas contém dois campos: id + nome

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ah!

Então tens de fazer um JOIN, para numa só query ir contar os registos que pretendes.

$query_rsSitesCat = "SELECT sites_categorias.nome AS nome, COUNT(sites.cat_id) FROM sites_categorias INNER JOIN sites ON sites_categorias.id = sites.cat_id GROUP BY sites_categorias.nome";

Mais uma vez, não testei, pelo que se tiveres à mão o phpmyadmin ou algum cliente mysql que te corra as queries, era preferivel :)

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