Ir para conteúdo

POWERED BY:

Arquivado

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

ASP a ASP

Lógica para sistema de matrix forçada

Recommended Posts

Preciso entender um modo de fazer a seguinte lógica para um sistema PHP/MySQL:Trata-se de um sistema de matrix forçado que funciona da seguinte forma: O sistema se divide em 7 niveis de indicação; Eu indico o Fulano para o sistema, ele se cadastra nele tendo eu como seu patrocinador (pessoa que o indicou) e ele entra no meu nivel 1; O Fulano indica o Beltrano para o sistema, ele se cadastra nele tendo o Fulano como seu patrocinador (pessoa que o indicou) e entra no nivel 1 do Fulano e entra também no meu nivel 2 (porque eu tinha indicado o Fulano para o sistema); E assim por diante... Se o Beltranho indicar alguém, ele entra no nivel 1 dele, entra no nivel 2 do Fulano e no nivel 3 meu... Etc... A indicação para o nivel 1 eu estou conseguindo fazer bem, mas as posteriores para entrarem nos nivels seguintes eu não estou conseguindo. Alguém teria uma luz?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kra eu li re li rereli e não consegui enchegar o que você gostaria.. tenta explicar melhor ;) Se der para explicar com exemplos fica melhor ainda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara num sei se eh isso naum, mas eh mais ou menos assim ...

 

vou usar o teu exemplo ... tu se cadastro (ninguem te indicou ;) ), fulano se cadastrou, mas foi tu quem indicou, então vai ter um campo pra guardar teu id no cadastro de fulano ... beltrano se cadastrou sendo indicado por fulando, já no cadastro de beltrano vai tah o id de fulano, cicalno tb se cadastrou, sendo indicado por beltrano ... e assim vai ;)

 

a lógica eh ... quando tu for resgatar esses dados ... digamos q tu vai resgatar os dados de ciclano ... então tu vai saber q ciclano eh nivel 1 de beltrano ... sabendo disso tu vai ver se beltrano eh nivel 1 de alguem ... e vai encontrar fulano ... logo tu vai saber q ciclano eh nivel 2 de fulano ... agora tu vai ver de quem fulano eh nivel 1 ... q eh tu ... logo ciclano eh teu nivel 3 ... então tu vai procurar de quem tu en nivel 1 ... e tu naum eh nivel 1 de ningem ... morreu ai ;)

 

Lembrando q todas essas informações terão ser grandadas durante o script ;) (claro neh) e tem q criar uma variável para contar sempre q for encontrado alguem eh somado + 1 para q quando chegar eh sete tu parar o escript mesmo q tenha mais alguem ;) ... já q tu quer até o nivel 7 ... acho q eh isso ... naum sei se ajudei muito ... eh q to morto de sono ainda naum dirmi ... to todo lerdo :blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa lógica eu já tinha pego, igual eu falei aí. O problema esta sendo nas indicações posteriores ao nível 1, para relacionar quem indicou quem anteriormente... Se eu indiquei você, você indicou fulano, fulano indicou beltrano; você entra no meu nivel 1, fulano no nível 2 e beltrano no nível 3 e assim por diante. O problema esta em fazer esse relacionamento de quem indicou quem depois do nivel 1...

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta uma query assim:

select * from usuario u where u.iduser = u.id order by u.id asc;

ai ele vai selecionar em ordem quem e de quem ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq apenas não faz um campo no db com o nome "relacionamento", nele teria as informações de quem o adicionou ex: "3|26|89"Ou seja, esse cara está no nível 4 para o cara com id=3, nivel 3 para o cara com id=26 e nivel 2 para o id=89.Supondo que este seja o id 221, quando ele adicionar "alguém", no campo "relacionamento" desse "alguém" vai conter "3|26|89|221"É mais ou menos essa a lógica. É isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria mei complicado assim Alisson.. eu acho que se fizer da quela forma que eu disse fica mais facil e simples..

 

imagina você tem la cadastrado

 

userid||nome||userid1||erick||02||joao||13||alisson||24||manoel||3....
e assim vai até fazer o 7

 

ai ele faz o seguinte cria uma query assim

 

$sql = mysql_query("select * from user u where u.userid = u.id order by u.id asc");while($l=mysql_fetch_array($sql)){$i++;echo "<ul>";if($i<=7){ echo "<ul><li>{$l["nome"]}</li></ul>";}echo "</ul>";}

ai para ele comparar se já é o setimo ele pega o id do usuario que ele está indicado e coloca u.id=1 e vai puxar a quantidade de registro e ele verificar se ja tem 7 ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se eu entendi errado tua explicação, ou se você entendeu errado a dele hehehe.Nem cheguei a testar, mas pelo que pude ver, você tá buscando apenas o nível 2 do cara, pq ai só tem 1 id de ligação, por exemplo, id 4 indicado por id 1, id 5 indicado por id 2. No teu caso você tá pegando n indicações de um único id, o id 1, indica os ids 2,3,4,5,6, todos estes serão nível 2. Se o id 2 indicar um outro, ele ficaria com id 7, e este seria o nivel 3 em relação ao id 1, e assim por diante. Acho que da forma que eu fiz pra organização no db desses relacionamentos, deve funcionar perfeitamente, obviamente tem que saber o que vai fazer em PHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não kra o kra que vai ser o primeiro a indicar sera de userid 0 fazendo assim a contagem por onderm de cadastro.. c você fazer o teste ai você verá que vai dar certo ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

issso...pelo que eu entendi ele quer que dez da primeira indicação conte 7 indicações então quer dizer que cada pessoa só vai poder indicar 1x sendo que o setimo indicado não vai poder mais indicar...pelo que eu entendi... se for assim isso ai que eu fiz ja era.. ;) vai pegar dez do usuario com iduser 0 e contanto ir contado... só colocar uma um and userid=0 tbm :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, se este campo está identificando de qual id ele veio, só vai ser mostrada o id anterior a ele, por exemplo. O id 1 indicou o id 2, e o id 2 indicou o id 3. No campo userid do id 3 só vai constar o id 2, sendo assim, como você vai saber a qual nível pertence, se você tbm não vai saber de qual nível é o user com id 2?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, se este campo está identificando de qual id ele veio, só vai ser mostrada o id anterior a ele, por exemplo. O id 1 indicou o id 2, e o id 2 indicou o id 3. No campo userid do id 3 só vai constar o id 2, sendo assim, como você vai saber a qual nível pertence, se você tbm não vai saber de qual nível é o user com id 2?

usando o seu exemplo...bem no user 3 não tem la que quem indicou foi o 2??? então o 2 tbm tem o user que indicou ele que foi o 1 e chegaremos ao userid=0 sakou?? então sempre vamos descobri os niveis ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo q eu entendi ... qualquer pessoa vai poder indicar quantas quiser ;) ... agora ele só vai ter um indicador ... tipo assim heliosal indicou o Perfect Lion, então eu sou o indicador dele, Perfect Lion indicou Alisson Rodrigues, e tb indicou luis-restart ... os dois vão ter o Perfect Lion como idicador, o Alisson Rodrigues indicou o ASP a ASP, então o ASP a ASP vai tê-lo como indicador ... o luis-restart indicou o adailton ...

 

Fika assim:

 

Perfect Lionn eh nivel 1 de heliosal

Alisson Rodrigues eh nivel 1 de Perfect Lion, e nivel 2 de heliosal

luis-restrat eh nivel 1 de Perfect Lion e nivel 2 de heliosal

ASP a ASP eh nivel 1 de Alisson Rodrigues e nivel 2 de Perfect Lion e nivel 3 de heliosal

adailton eh nivel 1 de luis-restart e nivel 2 de Perfect Lion e nivel 3 de heliosal

 

entendendo melhor:

 

Perfect Lionn => heliosal

Alisson Rodrigues => Perfect Lion => heliosal

luis-restrat => Perfect Lion => heliosal

ASP a ASP => Alisson Rodrigues => Perfect Lion => heliosal

adailton => luis-restart => Perfect Lion => heliosal

 

acho q eh assim :blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou tentar explicar mais detalhamente minha lógica, um db organizado assim:

userid||nome||usersid1||erick||12||joao||23||alisson||1,34||manoel||1,45||pedro||1,3,56||paulo||2,67||Fabyo||1,4,7

O campo usersid organiza os ids quem os adicionou desde o nível 1. Pegando o "pedro" como exemplo, o id 1 adicionou o nível 3, este adicionou ele. Note que sempre o último número é o id do cara, isso é útil na hora de buscar no db. O select ficaria assim:

SELECT *,FIND_IN_SET(id,usersid) AS nivel FROM user

Vai ser retornado 4 campos, os 3 normais do db, e mais um (nivel) onde diz o nível do usuário na "árvore". :natalw00t:Heheheh, assim funciona. :natalhappy:

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.