ASP a ASP 0 Denunciar post Postado Dezembro 16, 2005 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
ASP a ASP 0 Denunciar post Postado Dezembro 16, 2005 Alguma boa alma olhe para esse tópico e me dê uma luz divina =) Compartilhar este post Link para o post Compartilhar em outros sites
Perfect Lion 10 Denunciar post Postado Dezembro 16, 2005 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
heliosal 0 Denunciar post Postado Dezembro 16, 2005 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
ASP a ASP 0 Denunciar post Postado Dezembro 16, 2005 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
Perfect Lion 10 Denunciar post Postado Dezembro 16, 2005 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
Alisson Rodrigues 3 Denunciar post Postado Dezembro 16, 2005 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
Perfect Lion 10 Denunciar post Postado Dezembro 16, 2005 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
Alisson Rodrigues 3 Denunciar post Postado Dezembro 16, 2005 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
Perfect Lion 10 Denunciar post Postado Dezembro 16, 2005 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
Alisson Rodrigues 3 Denunciar post Postado Dezembro 16, 2005 Deixa eu perguntar então. Nessa tabela tua: userid||nome||userid1||erick||02||joao||13||alisson||24||manoel||3O campo userid refere-se ao id do cara que o indicou, correto? Compartilhar este post Link para o post Compartilhar em outros sites
Perfect Lion 10 Denunciar post Postado Dezembro 16, 2005 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
Alisson Rodrigues 3 Denunciar post Postado Dezembro 16, 2005 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
Perfect Lion 10 Denunciar post Postado Dezembro 16, 2005 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
heliosal 0 Denunciar post Postado Dezembro 16, 2005 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
Alisson Rodrigues 3 Denunciar post Postado Dezembro 16, 2005 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,7O 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 userVai 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
Perfect Lion 10 Denunciar post Postado Dezembro 16, 2005 Alisson Rodrigues-> perfeito ficou melhor que o meu ;) Compartilhar este post Link para o post Compartilhar em outros sites