Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 120
Sexo: Masculino

Contar - Exibir registros iguais usando duas tabelas

27-06-2013 19:18

Olá, novamente venho pedir um help...

Tenho 3 tabelas: usuarios, noticias e comentarios
Ao comentar uma notícia, será gravado na tabela comentarios:
id = automatico
cods = id da tabela noticias
users = usuario da tabela usuarios
(etc)

Estou usando para listar na página listar.php:

$sql = mysql_query("SELECT * FROM noticias WHERE categoria='Esporte' ORDER BY id DESC"); while($coluna = mysql_fetch_array($sql)){ $id = $coluna["id"]; (etc)  

Na mesma página listar.php, estou usando para contar a quantidade de comentários:

$sql_c = mysql_query("SELECT cods, COUNT(cods) FROM comentarios GROUP BY cods = 'cods' HAVING COUNT(cods)>1"); $total = mysql_num_rows($sql_c); while($data = mysql_fetch_array($sql_c)){ $cods = $data["cods"];

Não está funcionando direito a contagem de comentários:

<? if($cods != "") {  if($id == $cods) {  echo $total+1; } else { echo "0";  } } ?>

Só está contando o primeiro mesmo assim conta errado... Coloquei:

var_dump($id); var_dump($cods);

e os id's mudam, mas os cods são sempre o mesmo, assim:
string(2) "15" string(2) "15"
string(2) "14" string(2) "15"
string(2) "13" string(2) "15"
string(2) "12" string(2) "15"

No cods 15 aparece (2 comentários, mas deveria ser 4)
No cods 14 aparece (0 comentários, mas deveria ser 3)
No cods 13 aparece (0 comentários)
No cods 12 aparece (0 comentários)
--------------------
Preciso muito de ajuda!
Obrigado

MOVIDO PARA MYSQL
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17670
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Contar - Exibir registros iguais usando duas tabelas

27-06-2013 19:46

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 120
Sexo: Masculino

Contar - Exibir registros iguais usando duas tabelas

28-06-2013 02:49

Poxa web, muito obrigado, deu certin...
Mas todas as CATEGORIAS estão sendo listada...
Como adicionar:
WHERE categoria='Esportes' ORDER BY id DESC

Pois tenho que listar cada página por categoria e contar os comentários recebidos.
Ficou assim:
$sql_c = mysql_query("SELECT noticias.*,count(comentarios.cods) AS quantos FROM noticias  LEFT JOIN comentarios ON noticias.id=comentarios.cods GROUP BY noticias.id"); while($coluna = mysql_fetch_array($sql_c)) { $id = $coluna["id"]; $categoria = $coluna["categoria"]; (etc...) 

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17670
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Contar - Exibir registros iguais usando duas tabelas

28-06-2013 08:48

O WHERE entra depois da linha do ON

ON bd1.id=bd2.ref
WHERE tabela.coluna='esse valor'

O ORDER BY entra depois do GROUP BY

GROUP BY bd1.id
ORDER BY tabela.coluna ASC
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 120
Sexo: Masculino

Contar - Exibir registros iguais usando duas tabelas

28-06-2013 22:40

Deu certo, mas agora, a paginação parou de funcionar!
xiiiiii
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 120
Sexo: Masculino

Contar - Exibir registros iguais usando duas tabelas

29-06-2013 01:10

Olá web, Testei de várias maneiras antes de perguntar de novo (rsrs)
Será que tem como isolar este "contador" para que ele não interfira na impressão de dados da pagina, pois agora ele está funcionando, mas a paginação parou de funcionar e as "fotos" não são mais visualizadas...
Veja a paginação:

$_pagi_sql = "SELECT * FROM noticias WHERE categoria = 'Esportes' ORDER BY id DESC"; $_pagi_cuantos = 2;  $_pagi_nav_primera = "&#171;";  $_pagi_nav_ultima = "&#187;";  include("clientes/paginator.class.php"); while($coluna = mysql_fetch_array($_pagi_result)) { $id = $coluna["id"]; (etc...) 

Usando como está ACIMA, o "contador" pára de funcionar e somente a paginação e funciona e as "fotos" são visualizadas normalmente.
----------------
Usando ABAIXO a paginação pára de funcionar e as "fotos" não são visualizadas e somente o contador funciona:

$sql_c = mysql_query("SELECT noticias.*,count(comentarios.cods) AS quantos FROM noticias  LEFT JOIN comentarios ON noticias.id=comentarios.cods WHERE noticias.categoria='Esportes'  GROUP BY noticias.id DESC"); while($coluna = mysql_fetch_array($sql_c)) { extract($coluna); 

0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 120
Sexo: Masculino

Contar - Exibir registros iguais usando duas tabelas

29-06-2013 02:06

Continuei "fussando" até conseguir, resolvi não editar a msg anterior para vc ver como estava "rançoso" (rsrs)

Mas agora tá resolvido e ficou assim: (só acrescentei isso -> AND noticias.id='$id' )

<?php  session_start(); include "system/config.php"; include "clientes/sessao.php"; $_pagi_sql = "SELECT * FROM noticias WHERE categoria = 'Esportes' ORDER BY id DESC"; $_pagi_cuantos = 2;  $_pagi_nav_primera = "&#171;";  $_pagi_nav_ultima = "&#187;";  include("clientes/paginator.class.php"); while($coluna = mysql_fetch_array($_pagi_result)) { $id = $coluna["id"]; (etc...) $sql_c = mysql_query("SELECT noticias.*,count(comentarios.cods) AS quantos FROM noticias LEFT JOIN comentarios  ON noticias.id=comentarios.cods WHERE noticias.categoria='Esportes' AND noticias.id='$id' GROUP BY noticias.id DESC"); while($dados = mysql_fetch_array($sql_c)) { extract($dados); ?> <? //coloquei onde quero que conte echo $quantos; }  ?> // colocar a materia, foto e dados referentes ex: <? echo $materia; ?> <? } ?> // fechar o 1º while

Agora está paginando e contando...
Valeu web, muito obrigado... Luz e Paz!
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17670
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Contar - Exibir registros iguais usando duas tabelas

29-06-2013 07:53

Boa. Só para deixar a consulta mais dinâmica, selecione somente as colunas que precisa, ao invés do *, e também feche a consulta com mysql_close().
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 120
Sexo: Masculino

Contar - Exibir registros iguais usando duas tabelas

29-06-2013 14:55

OK web... feito.

ficou: noticias.id,noticias.categoria e <? } mysql_close(); ?>

Obrigado pelo toque cara!
0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado