Ir para conteúdo

POWERED BY:

Arquivado

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

sukinha1501

Select Leader do Leader na tabela

Recommended Posts

Boa noite.

Estou quebrando a cabeça para fazer um select que aparentemente é simples, mas, não consigo fazer funcionar...

Preciso preencher os "níveis" (Level1,Level2,Level3,Level4, etc...), selecionando o Leader do Leader.

Exemplo:

Eu , indiquei o João(ID 1),Que por sua vez, indicou a Maria(ID 2), que indicou o Lucas(ID 3).

Eu Sou o Leader do João(ID 1), e ele tem que entrar na minha coluna "Level1".

O João (ID 1) é Leader da Maria (ID 2 ), e ela tem que entrar na minha coluna "Level2", pois está abaixo do João.

A Maria (ID 2) é Leader do Lucas (ID 3 ), e ele tem que entrar na minha coluna "Level3", pois está abaixo da Maria.

Todos eles estão diretamente( no caso o joão) e indiretamente (no caso a Maria e o Lucas) na minha rede, mas cada um tem um Leader (upline), ou seja, um ID de indicação diferente, e não sei como fazer cada um deles entrar na coluna certa....

Tenho um banco de dados chamado nomedaempresa_mmn e neste tem a tabela members . As colunas desta tabela são essas:

CREATE TABLE dummy (
	`ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
	`Name` VARCHAR(75) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	`Address` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	`City` VARCHAR(75) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	`State` VARCHAR(75) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	`Zip` VARCHAR(75) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	`Country` VARCHAR(75) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	`Phone` VARCHAR(75) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	`Email` VARCHAR(75) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	`Password` VARCHAR(75) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	`PaymentDetails` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	`ref_by` INT(10) UNSIGNED NOT NULL,
	`Level1` INT(10) UNSIGNED NOT NULL,
	`Level2` INT(10) UNSIGNED NOT NULL,
	`Level3` INT(10) UNSIGNED NOT NULL,
	`Level4` INT(10) UNSIGNED NOT NULL,
	`Level5` INT(10) UNSIGNED NOT NULL,
	`Level6` INT(10) UNSIGNED NOT NULL,
	`Level7` INT(10) UNSIGNED NOT NULL,
	`Level8` INT(10) UNSIGNED NOT NULL,
	`Level9` INT(10) UNSIGNED NOT NULL,
	`Level10` INT(10) UNSIGNED NOT NULL,
	`Leader` INT(10) UNSIGNED NOT NULL,
	`Total` FLOAT(8,2) NULL DEFAULT '0.00',
	`Unpaid` FLOAT(8,2) NULL DEFAULT '0.00',
	`Paid` FLOAT(8,2) NULL DEFAULT '0.00',
	`IP` VARCHAR(75) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	`Date` DATETIME NULL DEFAULT NULL,
	`DatePagamentoBonus` DATE NULL DEFAULT NULL,
	`pacote` VARCHAR(100) NOT NULL DEFAULT 'lider' COLLATE 'utf8_unicode_ci',
	`cpf` VARCHAR(32) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	`banco` VARCHAR(255) NOT NULL COLLATE 'utf8_unicode_ci',
	`agencia` VARCHAR(255) NOT NULL COLLATE 'utf8_unicode_ci',
	`conta` VARCHAR(255) NOT NULL COLLATE 'utf8_unicode_ci',
	`titular` VARCHAR(255) NOT NULL COLLATE 'utf8_unicode_ci',
	`neteller` VARCHAR(255) NOT NULL COLLATE 'utf8_unicode_ci',
	`contasuper` VARCHAR(255) NOT NULL COLLATE 'utf8_unicode_ci',
	`paypal` VARCHAR(255) NOT NULL COLLATE 'utf8_unicode_ci',
	`token` VARCHAR(255) NOT NULL COLLATE 'utf8_unicode_ci',
	`status` INT(11) NOT NULL COMMENT '1 para ativado, 0 para inativo para recebimento de bonus (login independe disso!)',
	`banco_cpf` VARCHAR(30) NOT NULL COLLATE 'utf8_unicode_ci',
	`tipo_conta` ENUM('cc','poupanca') NOT NULL DEFAULT 'cc' COLLATE 'utf8_unicode_ci',
	`bairro` VARCHAR(255) NOT NULL COLLATE 'utf8_unicode_ci',
	`n_reativacoes` INT(11) NOT NULL DEFAULT '0',
	`pontos` INT(20) NULL DEFAULT '0',
	`totalultimascompras` FLOAT NOT NULL DEFAULT '0' COMMENT 'soma do montante de todas compras na loja virtual desde do ultimo saque efetuado, isso eh usado para manter o saldo disponivel coerente',
	`fb_uid` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
	`saldo_binario_sacado_e` INT(20) NOT NULL DEFAULT '0' COMMENT 'perna esquerda',
	`saldo_binario_sacado_d` INT(20) NOT NULL COMMENT 'perna direita',
	`produtos_indicados` INT(20) NOT NULL DEFAULT '0' COMMENT 'armazena a quantidade de produtos comprados na loja quando o comprador acessa via url pessoal do membro indicador',
	`graduacao` VARCHAR(30) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	`saldo` FLOAT NOT NULL DEFAULT '0',
	`saldo_indiretos_sacado` FLOAT(20,2) NOT NULL DEFAULT '0.00',
	`proxima_perna` ENUM('e','d','a') NOT NULL DEFAULT 'a' COLLATE 'utf8_unicode_ci',
	`perna` ENUM('e','d') NOT NULL DEFAULT 'e' COLLATE 'utf8_unicode_ci',
	`pagamento_unilevel` DATE NOT NULL,
	`DatePagamentoBonusUnilevel` DATE NOT NULL,
	`ponto` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	`rg` VARCHAR(40) NOT NULL COLLATE 'utf8_unicode_ci',
	`cestas` INT(10) NOT NULL DEFAULT '0',
	`feito_unilevel` DATE NOT NULL,
	`IsStandby` ENUM('S','N') NOT NULL DEFAULT 'N' COLLATE 'utf8_unicode_ci',
	`pagou_adesao` DATE NULL DEFAULT NULL,
	`cupom` FLOAT NULL DEFAULT NULL,
	`codigocupom` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci'
)

E o SELECT e UPDATE que estou tentando fazer é esse: (me corrijam por favor)

$rs = mysql_query("SELECT *, DATE_FORMAT(DatePagamentoBonusUnilevel, '%d/%m/%Y') as DatePagamentoBonusUnilevelFormat FROM members WHERE Leader = '".(isset($_GET['father']) ? $_GET['father'] : $id)."' ORDER BY ID ASC") or die(mysql_error());
 $mn = mysql_num_rows($rs);
 
 if($mn > 0 || isset($_GET['father'])){
	 $x = -1;
	 for($i=0;$i<$mn;$i++){
		if($i < $lat){
			$M[$i] = mysql_fetch_array($rs);
		}else {
			$M_DERR[($i-$lat)] = mysql_fetch_array($rs);
		}
	 }
	 if(count($M_DERR) == 0){
		 $DERR = unserialize(urldecode($_GET['DERR'])); // REVIEW THIS LINE!! MAY BE WRONG OR NOT
	 }else {
		$DERR = serialize($M_DERR);
	 }
	 
	 $CM = count($M);
	 
	 $name = mysql_result(mysql_query("Select * From members WHERE ID = '".mysql_real_escape_string(isset($_GET['father']) ? $_GET['father'] : $id)."' LIMIT 1"),0,"Name");
	 echo '<style> body{ font-size:13px; font-family:Arial; font-weight:400; }</style>';
	 echo '<table border="0" celspacing="8" cellpadding="8" width="800">';
	 echo '<tr>';
	 echo '<td colspan="4"><center><img src="images/907397949.png" width="130"/><br/><b>("'.$name.'")</b></center><br/><br/></td>';
	 echo '</tr>';
	 echo '<tr>';
	 for($i=0; $i<$CM; $i++){
		echo '<td width="200" valign="top" align="left">';
		
		$DadMember			= $M[$i];
		$name 				= explode(" ",$M[$i][Name]);
		$name 				= ucfirst($name[0]);
		
		$MemCestBasc		= IsMemberCestaBasica($M[$i]["ID"]);

mysql_query("SELECT Leader FROM members WHERE Leader = '".$father."' ORDER BY ID ASC");


$dir = mysql_num_rows(mysql_query("SELECT * FROM members WHERE Leader = '".$id."'"));
$indir = mysql_num_rows(mysql_query("SELECT * FROM members WHERE Leader = '".$Leader."'"));

mysql_query("Update members set Level1=Level1+1 where ID=".$Leader."'");
mysql_query("Update members set Level2=Level2+1 where ID=".$Leader."'");
mysql_query("Update members set Level3=Level3+1 where ID=".$Leader."'");
mysql_query("Update members set Level4=Level4+1 where ID=".$Leader."'");
mysql_query("Update members set Level5=Level5+1 where ID=".$Leader."'");
mysql_query("Update members set Level6=Level6+1 where ID=".$Leader."'");
mysql_query("Update members set Level7=Level7+1 where ID=".$Leader."'");
mysql_query("Update members set Level8=Level8+1 where ID=".$Leader."'");
mysql_query("Update members set Level9=Level9+1 where ID=".$Leader."'");
mysql_query("Update members set Level10=Level10+1 where ID=".$Leader."'");


Me perdoem a bagunça. Mas é que tentei tantas coisas que já fiquei perdida...

Se puderem me dar uma luz aqui, agradeço de coração.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Carlos Alberto Vieira
      Olá a todos;
      Estou montando uma rede de níveis tipo marketing multinível e cheguei em um ponto que não estou conseguindo avançar, é o seguinte: A pessoa entra no site faz o cadastro dela, e vai fazendo compras durante aquele mês, e dessas compras vai acumulando os seus pontos, e vou gravando esses pontos no banco de dados com datas e tudo. Se a pessoa quiser trocar os seus pontos por produto, ela tem que ter um x de pontos para poder trocar, até aí beleza. Só que ela tem que trocar os seus pontos durante aquele período ou mês, e se ela não trocar durante aquele período e virar o mês, os seus pontos devem ir para uma tabela de pontos acumulados pois não pode passar para o próximo período ou mês e juntar com os pontos daquele período ou mês, é aí que estou parado. Não consigo pensar em uma logica para transferir esses pontos que ela não trocou naquele período ou mês para uma outra tabela de pontos acumulados quando estiver acabando aquele período, alguém poderia me auxiliar nessa lógica? 
    • Por sukinha1501
      Boa tarde.
      Tenho um sistema multinivel onde preciso alterar, ou criar, alguns paramentros para definir a forma como as graduações sao alcancadas no mesmo.
      Atualmente as graduações no sistema sao alcancadas conforme pontuação pre-definida. Porem, preciso definir parametros que façam com que as graduações sejam alcancadas conforme o numero de donwlines ativos.
      A minha matriz e de 3x5.
      EXEMPLO: no nivel se os 3 downlines estiverem ativos(compraram esse mes) , o cadastrado atinge a graduação de consumidor start.
      no nivel 2 são 9 downlines, que se somados com os 3 do 1º nivel, totalizam 12 pessoas. Se essas 12 pessoas estiverem ativas (efetuaram compra no mes) , o cadastrado se torna um consumidor inteligente. e assim por diante.
      Alguma ideia de como insiro esseparametro para coleta de dados de ativação dos downlines para que o sistema reconhça quais graduações dar a cada um deles?
      Meu codigo esta assim\: (alterei as nomenclaturas das graduações, porém, nas funcoes permanece como o original "getQuantosQualificadosBronze, getQuantosQualificadosPrata, etc...")

      function getGraduacaoPorId($graduacao){ switch($graduacao){ case 1 : return "Consumidor Start"; break; case 2 : return "Consumidor Inteligente"; break; case 3 : return "Consumidor Star"; break; case 4 : return "Consumidor Sênior"; break; case 5 : return "Consumidor Diamante"; break; case 6 : return "Consumidor Duplo Diamante"; break; case 7 : return "Consumidor Triplo Diamante"; break; default : return "S/ Graduacao"; break; } } function getGraduacao($arr){ $graduacao = 0; // Consumidor Start if($arr['pontos'] >= 2000){ $graduacao = 1; } $q = quantosQualificados($arr); // Consumidor Inteligente if($arr['pontos'] >= 5000){ if(getQuantosQualificadosBronze($arr) >= 2){ $graduacao = 2; } } // Consumidor Star if($arr['pontos'] >= 10000){ if($q >= 4){ if(getQuantosQualificadosPrata($arr) > 0){ $graduacao = 3; } } } // Consumidor Sênior if($arr['pontos'] >= 25000){ if($q >= 4){ if(getQuantosQualificadosPrata($arr) >= 2){ $graduacao = 4; } } } // Consumidor Diamante if($arr['pontos'] >= 50000){ if($q >= 4){ if(getQuantosQualificadosPrata($arr) > 0 && getQuantosQualificadosOuro($arr) > 0){ $graduacao = 5; } } } // Consumidor Duplo Diamante if($arr['pontos'] >= 120000){ if($q >= 6){ if(getQuantosQualificadosOuro($arr) > 0 && getQuantosQualificadosTopazio($arr) > 0){ $graduacao = 6; } } } // Consumidor Triplo Diamante if($arr['pontos'] >= 250000){ if($q >= 6){ if(getQuantosQualificadosOuro($arr) > 0 && getQuantosQualificadosTopazio($arr) > 0 && getQuantosQualificadosPrata($arr) > 0){ $graduacao = 7; } } } return $graduacao; } function quantosQualificados($arr){ $rs = mysql_query("SELECT ID FROM members WHERE Leader = '".$arr['ID']."' AND status = 1"); $qualificados = 0; for($i = 0; $i < mysql_num_rows($rs); $i++) { $iddd = mysql_result($rs,$i,"ID"); $q = mysql_num_rows(mysql_query("SELECT ID FROM members WHERE Leader = '".$iddd."' AND status = 1")); $qualificados += $q; } return $qualificados; } function getQuantosQualificadosBronze($arr){ $rs = mysql_query("SELECT ID FROM members WHERE Leader = '".$arr['ID']."' AND graduacao = 'bronze'"); return mysql_num_rows($rs); } function getQuantosQualificadosPrata($arr){ $rs = mysql_query("SELECT ID FROM members WHERE Leader = '".$arr['ID']."' AND graduacao = 'prata'"); return mysql_num_rows($rs); } function getQuantosQualificadosOuro($arr){ $rs = mysql_query("SELECT ID FROM members WHERE Leader = '".$arr['ID']."' AND graduacao = 'ouro'"); return mysql_num_rows($rs); } function getQuantosQualificadosTopazio($arr){ $rs = mysql_query("SELECT ID FROM members WHERE Leader = '".$arr['ID']."' AND graduacao = 'topazio'"); return mysql_num_rows($rs); } function getQuantosQualificadosEsmeralda($arr){ $rs = mysql_query("SELECT ID FROM members WHERE Leader = '".$arr['ID']."' AND graduacao = 'esmeralda'"); return mysql_num_rows($rs); } function getQuantosQualificadoRubi($arr){ $rs = mysql_query("SELECT ID FROM members WHERE Leader = '".$arr['ID']."' AND graduacao = 'rubi'"); return mysql_num_rows($rs); } function getQuantosQualificadosPlatinium($arr){ $rs = mysql_query("SELECT ID FROM members WHERE Leader = '".$arr['ID']."' AND graduacao = 'platinium'"); return mysql_num_rows($rs); } $DISP = $DISP == 1987 ? 0 : $DISP; $DISP = $arr['Unpaid']; $ganhos = $arr['Total']; //$DISP < 0 ? $DISP = 0 : false; $DISP = $arr['status'] == 0 ? 0 : $DISP; mysql_query("UPDATE members SET saldo = '".($DISP)."' WHERE ID = '".$id."' LIMIT 1"); $_SESSION['DISP'] = $DISP; function IsMemberCestaBasica($CodigoMembro) { $ConsMem = mysql_query( " Select IsStandby, DatePagamentoBonusUnilevel, DateDiff(Now(), DatePagamentoBonusUnilevel) as DatePagamentoBonusUnilevelDiff From members Where ID = " . $CodigoMembro . " Limit 1 "); $TotaMem = mysql_num_rows($ConsMem); $DadoMem = mysql_fetch_array($ConsMem); $RetFinal = array(); if($TotaMem) { if( $DadoMem["IsStandby"] == "S" ) { $RetFinal = array("Imagem" => "Laranja", "Mensagem" => "Standby"); }else{ if( $DadoMem["DatePagamentoBonusUnilevel"] == "0000-00-00" ) { $RetFinal = array("Imagem" => "Nunca", "Mensagem" => "Nenhuma Compra Feita"); }else{ if( $DadoMem["DatePagamentoBonusUnilevelDiff"] < 30 ){ $RetFinal = array("Imagem" => "Verde", "Mensagem" => "Última Compra á " . $DadoMem["DatePagamentoBonusUnilevelDiff"] . " dias"); }elseif( $DadoMem["DatePagamentoBonusUnilevelDiff"] >= 30 && $DadoMem["DatePagamentoBonusUnilevelDiff"] <= 60 ){ $RetFinal = array("Imagem" => "Amarelo", "Mensagem" => "Última Compra á " . $DadoMem["DatePagamentoBonusUnilevelDiff"] . " dias"); }else{ $RetFinal = array("Imagem" => "Vermelho", "Mensagem" => "Última Compra á " . $DadoMem["DatePagamentoBonusUnilevelDiff"] . " dias"); } } } }else{ $RetFinal = array("Imagem" => "Nunca", "Mensagem" => "Nenhuma Compra Feita"); } mysql_free_result($ConsMem); return $RetFinal; } ?>
×

Informação importante

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