Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal. Estou fazendo um sistema de marketing, onde o mesmo consiste em uma rede de usuários, com 5 níveis. Quero listar número de usuários dos níveis.
Por exemplo:
Carlos começa no nível 1, Rodrigo cadastrou-se com o link dele, então Carlos vai ter Rodrigo no nível 2. Rodrigo indicou o link para Fernando e Jessica, que se cadastram também, e assim Rodrigo vai ter Fernando e Jessica no nível 2 e Carlos vai ter Rodrigo no nível 2 e Fernando e Jessica no nível 3:
Cadastros de Carlos
Nível 1: eu mesmo
Nível 2: 1 usuário (Rodrigo)
Nível 3: 2 usuários (Fernando e Jessica)
Cadastros de Rodrigo
Nível 1: eu mesmo
Nível 2: 2 usuários (Fernando e Jessica)
Cadastros de Fernando
Nível 1: eu mesmo
Cadastros de Jessica
Nível 1: eu mesmo
----------------------------------
Em cada usuário o número de usuários dos níveis vai ser diferente, vai seguir tipo uma árvore/hierarquia. Alguma ideia de como fazer isso? Obrigado.
MySql não tem como Oracle ou Sql Sever query hierarquica ("connect by" ,''WITH CTE') , mas já vi soluções para isto em MySql até mesmo neste site.
Se entendi bem, o que vc quer é semelhante a uma tabela de Threaded Comments
>
Teoricamente, você quer tratar cada usuário como se fosse filho de outro usuário, ou, se preferir, dependente de outro usuário.
Se for isso, acredito que basta criar um campo com o id do usuário pai.
Isso amigo. Fiz da seguinte forma, aparentemente funcionou, porém quando tem mais um registro mostrou só o primeiro. Acredito que seja um erro no código, pode me ajudar?
$stmt = $conn->prepare('SELECT * FROM usuarios WHERE id_indicado = :id_indicado');
$stmt->execute(array('id_indicado' => $p1));
$result = $stmt->fetchAll();
$niveis[0] = count($result);
for ($i = 0; $i < count($result); $i++) {
$stmt1 = $conn->prepare('SELECT * FROM usuarios WHERE id_indicado = :id_indicado');
$stmt1->execute(array('id_indicado' => $result[$i]['id']));
$result1 = $stmt1->fetchAll();
$niveis[1] = count($result1);
}
for ($i = 0; $i < count($result1); $i++) {
$stmt2 = $conn->prepare('SELECT * FROM usuarios WHERE id_indicado = :id_indicado');
$stmt2->execute(array('id_indicado' => $result1[$i]['id']));
$result2 = $stmt2->fetchAll();
$niveis[2] = count($result2);
}
for ($i = 0; $i < count($result2); $i++) {
$stmt3 = $conn->prepare('SELECT * FROM usuarios WHERE id_indicado = :id_indicado');
$stmt3->execute(array('id_indicado' => $result2[$i]['id']));
$result3 = $stmt3->fetchAll();
$niveis[3] = count($result3);
}
return $niveis;
*/applications/core/interface/imageproxy/imageproxy.php?img=http://snap.ashampoo.com/uploads/2015-09-26/QRO3Huc9.png&key=5d98ae94dbe982ee83a7c88d01052ff06c8abf67ca664742d8c0f8a1c8dc07d0" alt="QRO3Huc9.png" />
Ele está retornando assim:
array (size=4)*
0 => int 1
1 => int 2
2 => int 1
3 => int 0
O correto é o nível 2 receber 2 também.
Teoricamente, você quer tratar cada usuário como se fosse filho de outro usuário, ou, se preferir, dependente de outro usuário.
Se for isso, acredito que basta criar um campo com o id do usuário pai.