Ir para conteúdo

POWERED BY:

Arquivado

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

Marcosdesigngrafico

count(*)

Recommended Posts

Olá galera preciso fazer sistema tipo downline, ou seja tem que mostrar niveis de usuarios que se cadastraram atravez de outros usuarios, tipo um ligado no outro e eu tenho que mostrar quantas pessoas estao em cada nivel ou seja tem que mostrar o total de registro.

 

<table width="477" border="1" align="center">
  <tr>
    <td width="55">Nome</td>
    <td width="266"> </td>
  </tr>
  <tr>
    <td align="center">Nivel</td>
    <td align="center">Quantidade</td>
  </tr>
  
  <tr>
    <td>3º</td>
    <td>
	<?php 
	$bd = mysql_query("SELECT id_usu, nome, senha, usu_de FROM usuarios where usu_de = '1'");
	while($linha = mysql_fetch_array($bd)) 
		{	
		
	
	$id = $linha['id_usu'];
	
	
	  ?>
	  <? $bd2 = mysql_query("SELECT id_usu, nome, senha, usu_de, count(nome) as quant FROM usuarios group by nome");
	while($linha2 = mysql_fetch_array($bd2))
		if($linha2['usu_de'] == $id){	$quant = $linha2['quant'];	?>
		
	<a href="prop.php?id_usu=<?php echo $linha2['id_usu']; ?>"><?php echo $linha2['nome']; ?></a>   <? }?><? }?>	</td>
  </tr>
  <tr>
    <td><?php echo $quant ?></td>
    <td>mmm</td>
  </tr>
  <tr>
    <td>5º</td>
    <td>  </td>
  </tr>
  <tr>
    <td>6º</td>
    <td> </td>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
  </tr>
</table>

aparece apenas o "1" ele ta contando apena os ultimos usuarios cadastrados do ultimo usuario

 

galera qual a saída?

 

desde já agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se percebi muito bem...

 

Usuário 1

-> Usuário 2

-> Usuário 3

----> Usuário 4

----> Usuário 5

 

Portanto, o usuário 1 convidou o 2, 3, 4 e 5

O usuário 2 não convidou ninguém, o 3 convidou o usuário 4 e5

 

Você quer contar quantos usuários cada um convidou?

 

Usuário 1 (4)

Usuário 2 (0)

Usuário 3 (2)

Usuário 4 (0)

Usuário 5 (0)

 

 

Tipo isso?

 

Para isso você terá de ter na tabela de usuários ter um campo para armazenar quem convidou quem...

 

Depois disso poderá criar um ciclo e contar os usuários ou então, sempre que alguém se regista incrementar +1 nesse campo de cada um dos usuários.

 

Vou explicar:

 

O usuário 3 vai convidar mais 1 portanto ele fica com 1 na row dele e o usuário 1 fica também com +1, penso que desta maneira seja melhor e mais eficaz pois irá consumir menos recursos durante a consulta e será também mais fácil de fazer =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se percebi muito bem...

 

Usuário 1

-> Usuário 2

-> Usuário 3

----> Usuário 4

----> Usuário 5

 

Portanto, o usuário 1 convidou o 2, 3, 4 e 5

O usuário 2 não convidou ninguém, o 3 convidou o usuário 4 e5

 

Você quer contar quantos usuários cada um convidou?

 

Usuário 1 (4)

Usuário 2 (0)

Usuário 3 (2)

Usuário 4 (0)

Usuário 5 (0)

 

 

Tipo isso?

 

Para isso você terá de ter na tabela de usuários ter um campo para armazenar quem convidou quem...

 

Depois disso poderá criar um ciclo e contar os usuários ou então, sempre que alguém se regista incrementar +1 nesse campo de cada um dos usuários.

 

Vou explicar:

 

O usuário 3 vai convidar mais 1 portanto ele fica com 1 na row dele e o usuário 1 fica também com +1, penso que desta maneira seja melhor e mais eficaz pois irá consumir menos recursos durante a consulta e será também mais fácil de fazer =)

 

Olá SnakeX,

ñ é assim como você disse.

É assim:

Eu convidei Marcelo e Elizete. ai tem q contat 2

Elizete convidou 3 pessoas e Marcelo 3. então tem q contar 6 e assim por diante

 

valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É exactamente como eu disse:

 

Usuário 1 (4) <-- CONVIDOU 4

--> Usuário 2 (0) <-- CONVIDOU 0

--> Usuário 3 (2) <-- CONVIDOU 2

----> Usuário 4 (0) <-- CONVIDOU 0

----> Usuário 5 (0) <-- CONVIDOU 0

------

Edit: Ahh você não quer contar os subniveis.....

Qual é o campo que você esta a armazenar para saber quem convidou quem?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É exactamente como eu disse:

 

Usuário 1 (4) <-- CONVIDOU 4

--> Usuário 2 (0) <-- CONVIDOU 0

--> Usuário 3 (2) <-- CONVIDOU 2

----> Usuário 4 (0) <-- CONVIDOU 0

----> Usuário 5 (0) <-- CONVIDOU 0

------

Edit: Ahh você não quer contar os subniveis.....

Qual é o campo que você esta a armazenar para saber quem convidou quem?

 

Verdade você ta certo, mas ja tenho um campo para indicar quem indica quem, mas eu ñ to conseguindo fazer a contagem de indicados por niveis pelo "COUNT()" do SQL

 

o campo que ta indicando quem pega o usuario é: usu_de ai ele pega o id_usu do usuario que o indicou

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode usar algo como:

$bd2 = mysql_query("SELECT `id_usu` FROM `usuarios WHERE `usu_de`='".$id."'");
$quant = mysql_num_rows($bd2);

 

Atenção ao WHERE pois eu não sei qual é o campo que você está a armazenar os indicado, mas seria algo assim, não precisa criar ciclo já que é só isso..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode usar algo como:

$bd2 = mysql_query("SELECT `id_usu` FROM `usuarios WHERE `usu_de`='".$id."'");
$quant = mysql_num_rows($bd2);

 

Atenção ao WHERE pois eu não sei qual é o campo que você está a armazenar os indicado, mas seria algo assim, não precisa criar ciclo já que é só isso..

 

Já fiz isso e fez a mesma coisa do COUNT(*)

Compartilhar este post


Link para o post
Compartilhar em outros sites

E que valor está a armazenar nesse campo?

E todos os convidados tem quem convidou guardado nesse campo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

E que valor está a armazenar nesse campo?

E todos os convidados tem quem convidou guardado nesse campo?

 

o valor armazenado nesse campo é numero 1,2,3,4,5 e assim por diante

sim todos convidados tem quem o convidou pelo campo usu_de

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que pode postar aqui a tabela MySQL para eu testar, é que não estou a perceber o que está a falhar =\

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que pode postar aqui a tabela MySQL para eu testar, é que não estou a perceber o que está a falhar =\

 

-- phpMyAdmin SQL Dump

-- version 2.10.1

-- http://www.phpmyadmin.net

--

-- Servidor: localhost

-- Tempo de Geração: Jul 10, 2010 as 07:18 PM

-- Versão do Servidor: 5.0.45

-- Versão do PHP: 5.2.5

 

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

 

--

-- Banco de Dados: `mmn`

--

 

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

 

--

-- Estrutura da tabela `usuarios`

--

 

CREATE TABLE `usuarios` (

`id_usu` int(11) NOT NULL auto_increment,

`nome` varchar(90) NOT NULL,

`senha` varchar(50) NOT NULL,

`usu_de` varchar(30) NOT NULL,

PRIMARY KEY (`id_usu`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;

 

--

-- Extraindo dados da tabela `usuarios`

--

 

INSERT INTO `usuarios` (`id_usu`, `nome`, `senha`, `usu_de`) VALUES

(1, 'Marcos', '123', '0'),

(2, 'Marcelo', '123', '1'),

(3, 'Elizete', '123', '1'),

(4, 'jose', '123', '2'),

(5, 'carlos', '123', '2'),

(6, 'Claudio', '123', '3'),

(7, 'Ana', '123', '3'),

(8, 'taty', '123', '3'),

(9, 'tote', '123', '2'),

(10, 'Lucas', '123', '1'),

(11, '', '', ''),

(12, 'Pedro', '123', '10'),

(13, 'tevis', '123', '8');

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
$con = mysql_connect('localhost', 'glazz', 'teste');
$sel = mysql_select_db('teste');
?>
<table width="477" border="1" align="center">
<tr>
    <td width="55">Nome</td>
    <td align="center">Quantidade</td>
</tr>
<?php 
$bd = mysql_query("SELECT * FROM usuarios");
while($linha = mysql_fetch_array($bd)) 
{
	$bd2 = mysql_query("SELECT `id_usu` FROM `usuarios` WHERE `usu_de`='".$linha['id_usu']."'", $con);
	$qt_t = mysql_num_rows($bd2);
?>
  <tr>
    <td><?php echo $linha['nome']; ?></td>
    <td><?php echo $qt_t; ?></td>
  </tr>
<?php
}
?></table>

O código está algo diferente do seu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma idéia seria você armazenar tudo num array multidimensional. Cada nova dimensão representaria o nível de indicação ou, no seu caso, outros "uns".

 

Depois usaria count() com a flag COUNT_RECURSIVE. O resultado seria uma contagem recursiva a partir do índice que você indicar:

 

$test = array( 'John' => array( 'Mary' => array( 'Peter' => array( 'Clark' => 1, 'Jonathan' => 1 ), 'Henry' => 1, 'Sarah' => 1 ) ) );

print count( $test['John'], COUNT_RECURSIVE ); // 4
print count( $test['John']['Mary']['Peter'], COUNT_RECURSIVE ); // 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
$con = mysql_connect('localhost', 'glazz', 'teste');
$sel = mysql_select_db('teste');
?>
<table width="477" border="1" align="center">
<tr>
    <td width="55">Nome</td>
    <td align="center">Quantidade</td>
</tr>
<?php 
$bd = mysql_query("SELECT * FROM usuarios");
while($linha = mysql_fetch_array($bd)) 
{
	$bd2 = mysql_query("SELECT `id_usu` FROM `usuarios` WHERE `usu_de`='".$linha['id_usu']."'", $con);
	$qt_t = mysql_num_rows($bd2);
?>
  <tr>
    <td><?php echo $linha['nome']; ?></td>
    <td><?php echo $qt_t; ?></td>
  </tr>
<?php
}
?></table>

O código está algo diferente do seu...

 

Aqui deu erro

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in

indicando essas linhas

$bd2 = mysql_query("SELECT `id_usu` FROM `usuarios` WHERE `usu_de`='".$linha['id_usu']."'", $con);

$qt_t = mysql_num_rows($bd2);

deu certo ai com você?

Compartilhar este post


Link para o post
Compartilhar em outros sites

retire o , $con da query e veja se dá..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma vez tendo a estrutura como demonstrei, basta você adicionar +1 ao valor de quem indicar.

 

Nesse exemplo de estrutura, se você fizer:

 

$test['John']['Mary']['Peter'] += 5

A saída será 7 pois Peter já indicou outras 5 pessoas, além das 2 que já havia indicado.

 

Lembre-se que a "estrutura em array", não precisa ser um array manual. Pode vir via banco de dados também. Imagem Postada

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.