Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

formalivre

[Resolvido] mostrar quantidade de registros em uma categoria.

Recommended Posts

olá amigos.

preciso de uma ajuda mais uma vez.

em minha tabela existe um campo "id_cat" onde é cadastrada a categoria de uma empresa.

em uma página eu mostro as categorias das empresas.

o que eu preciso é que na frente de cada categoria fosse mostrado a quantidade de registros que possuem esta categoria no campo "id_cat"

exemplo:

-Alimentação (3)

-Academia (10)

seria mostrar quantas vezes esta categoria está registrada no campo "id_cat"

espero que tenha ficado claro. obrigado. desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi Matias. deculpe. eu ia postar o meu código e acabei esquecendo.

a página onde mostram as categorias está assim:

<? include("config.php"); ?>
	<table border="0" cellpadding="3" cellspacing="0" style="border-collapse: collapse">
    <tr>
	<?
    $i = 1;
    $colunas = 3;
    
    $q_cervejas = mysql_query("select nome, id from categorias order by nome asc");
    while($cervejas = mysql_fetch_object($q_cervejas)){
    $resto = $i % $colunas;
    ?>                                    
        <td width="260" height="20">
		<img src="imagens/setinha.gif" width="18" height="18" /> <a href="listar_empresas.php?cat=<? print $cervejas->nome; ?>" class="linque1"><? print $cervejas->nome; ?></a>
        </td>
	<?
    if($resto == 0){
    print "\n</tr>\n<tr>\n";
    }
    
    $i++;
    
    }
    if($resto != 0){ ?>
    </tr>
	<? } ?>
</table>
as empresas cadastradas ficam em outra tabela. tabela "promocao".

eu preciso fazer outra consulta nesta tabela?

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça uma consulta utilzando " mysql_num_rows" ela vai retornar a qt de registros que tem na tabela :

 


<? include("config.php"); ?> 
       <table border="0" cellpadding="3" cellspacing="0" style="border-collapse: collapse"> 
   <tr> 
       <? 
   $i = 1; 
   $colunas = 3; 


   $q_cervejas = mysql_query("select nome, id from categorias order by nome asc"); 

   // Quantidade de registros 
      $quantidade = mysql_num_rows ( $q_cervejas );

   //
   while($cervejas = mysql_fetch_object($q_cervejas)){ 
   $resto = $i % $colunas; 
   ?>                                     
       <td width="260" height="20"> 
               <img src="imagens/setinha.gif" width="18" height="18" /> <a href="listar_empresas.php?cat=<? print $cervejas->nome; ?>" class="linque1"><? print $cervejas->nome; ?></a> <?php echo $resultado; ?>
       </td> 
       <? 
   if($resto == 0){ 
   print "\n</tr>\n<tr>\n"; 
   } 

   $i++; 

   } 
   if($resto != 0){ ?> 
   </tr> 
       <? } ?> 
</table>

 

 

fiz isto rapido e sem testes, estou meio ocupado... qualquer coisa posta ae ;]

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado pela resposta Tomb.

vou tentar explicar melhor.

tenho 2 tabelas:

"categorias" e "promocao"

na tabela "categorias" tenho 318 categorias cadastradas.

as empresas são cadastradas na tabela "promocao".

o cliente escolhe a sua categoria selecionando a mesma na tabela "categorias"

na tabela "promocao" existe um campo "id_cat" onde esta categoria é registrada.

nesta página eu simplesmente mostro as categorias e faço um link para carregar as empresas.

<? include("config.php"); ?>
	<table border="0" cellpadding="3" cellspacing="0" style="border-collapse: collapse">
    <tr>
	<?
    $i = 1;
    $colunas = 3;
    
    $q_cervejas = mysql_query("select nome, id from categorias order by nome asc");
    while($cervejas = mysql_fetch_object($q_cervejas)){
    $resto = $i % $colunas;
    ?>                                    
        <td width="260" height="20">
		<img src="imagens/setinha.gif" width="18" height="18" /> <a href="listar_empresas.php?cat=<? print $cervejas->nome; ?>" class="linque1"><? print $cervejas->nome; ?></a>
        </td>
	<?
    if($resto == 0){
    print "\n</tr>\n<tr>\n";
    }
    
    $i++;
    
    }
    if($resto != 0){ ?>
    </tr>
	<? } ?>
</table>
eu teria ao meu entender fazer uma outra consulta na tabela "promocao" para verificar quantas vezes as respectivas categorias são mostradas em cada registro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, exatamente oque você disse:

$q_cervejas = mysql_query("select nome, id from categorias order by nome asc");
    while($cervejas = mysql_fetch_object($q_cervejas)){
    $resto = $i % $colunas;
         $query = mysql_query("SELECT * FROM promocao WHERE id_cat = {$cervejas->id_cat}");
         $qntas = mysql_num_rows( $query );
    ?>                                    
        <td width="260" height="20">
                <img src="imagens/setinha.gif" width="18" height="18" /> 
                <a href="listar_empresas.php?cat=<?php echo $cervejas->nome; ?>" class="linque1">
                   <?php echo $cervejas->nome, $qntas; ?></a>
        </td>
talvez seja possível fazer melhor, com uma subquery.. mas agora to na facul, e não vou conseguir implementar um exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá obrigado pela resposta.

está aparecendo um erro:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/webflyer/public_html/clikpromocao/encontrar_promocoes.php on line 36

 

nesta linha:

$qntas = mysql_num_rows( $query );
o que pode ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz alguns testes.

e verifiquei que o erro está aqui nesta parte:

"SELECT * FROM promocao WHERE id_cat = {$cervejas->id_cat}"
e mais precisamente aqui:

{$cervejas->id_cat}
que outro argumento poderia ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei amigo.. depende da estrutura das suas tabelas.

você entendeu oque eu tentei te mostrar como fazer??

 

execute assim:

$query = mysql_query("SELECT * FROM promocao WHERE id_cat = {$cervejas->id_cat}")or die(mysql_error());
se tiver duvidas, poste o schema das 2 tabelas.

 

Por qual campo você relaciona as 2 tabelas?

Qual é a chave primária da tabela de categoria ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

mostrou o seguinte erro agora:

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1"

 

as tabelas são assim:

 

tabela "categorias"

campos: id - nome

---------------------

tabela "promocao"

campos: usuario_id - id_cat - empresa

 

onde no campo "id_cat" é cadastrada a categoria da empresa.

 

acho que o campo que relaciona as tabelas é o "id_cat"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então você deverá fazer:

$query = mysql_query("SELECT * FROM promocao WHERE id_cat = {$cervejas->id}")or die(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo.

agora mostrou tudo com zero "0"

está assim:

$q_cervejas = mysql_query("select nome, id from categorias order by nome asc");
    while($cervejas = mysql_fetch_object($q_cervejas)){
    $resto = $i % $colunas;
         $query = mysql_query("SELECT * FROM promocao WHERE id_cat = {$cervejas->id}")or die(mysql_error());
         $qntas = mysql_num_rows( $query );
    ?>                                    
        <td width="260" height="20">
                <img src="imagens/setinha.gif" width="18" height="18" /> 
                <a href="listar_empresas.php?cat=<?php echo $cervejas->nome; ?>" class="linque1">
                   <?php echo $cervejas->nome, $qntas; ?></a>
        </td>
eu preciso fazer o relacionamento no mysql ou dá para fazer no select?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe algum registro na tabela de promocoes ??

 

existe alguma linha que bata ID com a da tabela de categoria ?

'já fizemos' o relacionamento.. ele tá ai..

 

vai no banco, EXPORTE as tabelas, e coloque aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi William.

abaixo a estrutura das tabelas:

-- Estrutura da tabela `promocao`
--

CREATE TABLE IF NOT EXISTS `promocao` (
  `id_cat` varchar(255) collate latin1_general_ci NOT NULL,
  `usuario_id` int(255) NOT NULL auto_increment,
  `nomeempresa` varchar(32) collate latin1_general_ci NOT NULL,

  PRIMARY KEY  (`usuario_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=44 ;

--
-- Extraindo dados da tabela `promocao`
--

INSERT INTO `promocao` (`id_cat`, `usuario_id`, `nomeempresa`) VALUES
('Concessionárias', 43, 'K11');


--------------------------------------------------------------------------------------------

-- Estrutura da tabela `categorias`
--

CREATE TABLE IF NOT EXISTS `categorias` (
  `id` int(5) NOT NULL auto_increment,
  `nome` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=320 ;

--
-- Extraindo dados da tabela `categorias`
--

INSERT INTO `categorias` (`id`, `nome`) VALUES

(96, 'Conservação e Manutenção'),
(95, 'Concessionárias'),

Compartilhar este post


Link para o post
Compartilhar em outros sites

O campo `id_cat` varchar(255) collate latin1_general_ci NOT NULL, deveria ser do tipo INT, e guardar o ID da categoria. E não guardar o nome.

Com essa modelagem errada, para funcionar, você teria que fazer:

 

$query = mysql_query("SELECT * FROM promocao WHERE id_cat = {$cervejas->nome}")or die(mysql_error());
Mas isso está errado do ponto de vista de modelagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

William. tive de mudar para INT e cadastrar o ID da categoria não o nome aí funcionou.

como mudei a estrutura, agora tive um outro problema.

na página que mostra os detalhes da empresa mostrava a categoria selecionada assim:

// Começa a exibição dos resultados
echo "<div class='sub_titulo'><span class='texto_categoria'>".$total."</span> empresa(s) encontradas na categoria <span class='texto_categoria'>".$_GET['cat']."</span></div>";
agora está mostrando o ID da categoria e não o nome, pois ele está buscando a variável ".$_GET['cat']."

pode me ajudar com isso?

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.