Ir para conteúdo

POWERED BY:

Arquivado

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

Marcio Mauricio

Executar duas query com mysql_query

Recommended Posts

Olá pesoal, sou iniciante em php e novamente conto coma ajuda de você pra resolver mais um pequeno grande probleminha.

 

Meu problema é o seguinte, estou contruindo um sistema de afiliados com matriz forçada por 3, ou seja cada afiliado so pode ter 3 novos afiliados.

tenho 3 campos na tabela usuarios que irão receber o id de cada afiliado quando ele for cadastrado.

 

sempre que um novo usoario se cadastra atualizo um desses campos com o id do novo membro.

 

com uma sql eu verifico se ha espaço vazio na tabela do usuario e qual campo é esse

 

com outra sql eu atualizo as informações.

 

o problema é que tenho medo de dois membros se cadastrarem simultaneamente e o mysql executar duas operações simultaneas fazendo com que possivelmente o usuario patrocinador passe a ter 4 afiliados, coisa que não pode

 

pensei em fazer uma query que verificasse e atualizasse de uma so vez (com SELECT e UPDATE na mesma sql) mais não sei se isso é possivel,

então fiz duas sql, uma pra verificar se o espaço está vazio e outra pra atualizar diminuindo assim a chance de erro mais não ta dando certo tmb,

por favor se alguem puder me da uma luz vou ficar eternamente grato!

Forte abraço a todos

<?php 
	include "../includes/config.php";
	$id_aff = 7;
	$cln = "idx3_af02"; //nome do campo
	$id_x3 = 10;
	$sql_sct = "SELECT * FROM `usuarios` WHERE $cln = '0' AND id_usuario = $id_x3";
	$sql_up = "UPDATE usuarios SET $cln='$id_aff' WHERE id_usuario = $id_x3";
	$query_3x3 	= mysql_query($sql_sct) or die ("Não foi possivel Consultar.");
	$exist_3x3 	= mysql_num_rows($query_3x3);
	echo "$sql_sct, $sql_up<br>";
	if (mysql_query($sql_sct, $sql_up)){
	echo $exist_3x3;
	}
	else{
		echo "Não fez";
	}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

sua logica pode ser melhorada, como você amarra um afiliado novo com o existente?

 

partindo da ideia de que se tenho treis campos em uma tabela, onde cada campo recebe o id de um novo membro, logicamente só poderão ser 3 afiliados, nesse caso o que conta é se os 3 campos do patrocinador estão oucupados.

 

outra ideia seria amarrar através do campo do afiliado que iria receber o id do patrocinador, controlando com mysql_num_rows(); e verificando se já existem 3 afiliados, no entanto isso não resolveria o meu problema, e possibilitaria que um afiliado pudesse ter um numero infinitos de afiliados, não fosse o efeito da função mysql_num_rows(); e isso pode ter que me fazer gerar um log quando houver mais que 3 rows, e ter que corrigir artezanalmente.

 

Minha matriz é 3x3

 

Minha tabela tem os campos 'filho_01', 'filho_02', 'filho_03', 'pai', 'avo', e 'bisavo' isso coordena toda a minha rede.

 

para exibir a rede irei contruir 3 niveis, um seleciona os registros que tem o id "X" no campo 'pai', outro seleciona o os qeu tem id "x" no campo 'avo'... Caso haja erro e um desses tenha 4 registros, essa rede vai ficar bagunçada e gerar uma bagunça tremenda e possivelemtne incorrigivel, por isso que preciso considerar valida a ideia de usar os treis campos de afiliados, ou seja o primeiro exemplo

 

Para progressão da rede necessito de usar os campos 'filho_01', 'filho_02', 'filho_03', pois esses não permitem que um erro evolua.

 

no entanto permitem que o mesmo campo possa ser editado quase que simultaneamente, conferindo a dois registros simultaneamente a herança dos campos 'pai', 'avo', e 'bisavo'.

nesse caso o erro vai fazer com qeu um patrocinador receba comissão de 4 afiliados, só que só possa enxergar 3 deles, porque um foi atualizado imediatamente apos ser incluido.

 

minha unica chançe de eliminar a possibilidade de erro seria a existencia de uma consulta que faria SELECT e UPDATE simultaneamente

 

ou executar duas sql dentro da mesma "mysql_query($sql_1, $sql_1);"

 

Até pensei que pudesse ser feito da sguinte forma:

 

UPDATE usuarios SET idx3_af02='7' WHERE id_usuario = 10 IN ( id_usuario = 10 AND idx3_af02 = '0')

 

mais como disse não tenho muito conhecimento no assunto, mais enquanto isso vou pesquisando.

 

Forte abraço a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal,

resolvi o problema mais grave apenas trocando a sql pra:

$sql_up = "UPDATE usuarios SET $cln='$id_aff' WHERE id_usuario = $id_x3 AND $cln = '0'";

dessa forma ele so edita se o campo $cln estiver vazio, no entanto não da erro caso não consiga editar,

Preciso agora arrumar uma forma de verificar se a sql editou o campo, mais isso eu posso fazer amanhã, assim ja ta bem mais sguro, isso me fez ver que extensas horas de trabalho a fio nos fazem não enxergar o obvio, não aguento mais trabalar!!!!

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.