Ir para conteúdo

POWERED BY:

Arquivado

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

free4k

Rede de usuários com níveis

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
×

Informação importante

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