Ir para conteúdo

POWERED BY:

Arquivado

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

Marcos Aurélio - GTI

[Resolvido] Comando XOR, como utilizá-lo?

Recommended Posts

Olá amigos do iMasters!

 

Estou aqui com um problema que pode até ser simples, mas, desconheço a solução. Vamos lá!

Tenho uma tabela que cadastra os usuários, entre algumas colunas da tabela usuarios uma é user e outra é filial, pois é, é que o sistema que criei é pra assistências técnicas, no caso, há duas filiais, caso um usuário com nome lucas se cadastre na filial 1, outro lucas deverá cadastrar-se como "lucas2", mas, na filial 2, se houver outro lucas deveria ser lucas e não "lucas3". Bom, para resolver o problema no cadastro é simples, basta fazer a inserção de dados normal:

INSERT INTO tabela (user, pass, filial) VALUES ('lucas', 'senha_lucas', '1')

Fiz um script que não cadastra dois logins iguais na mesma filial, é muito simples. Veja o script abaixo:

<?php
// Verificar se já existe no banco de dados o usuário indicado pelo formulário
$user = $_POST['user'];
$sql = mysql_query("SELECT user FROM usuarios WHERE user = '$user'") or die (mysql_error());
$cnt_user = mysql_num_rows($sql);
if ($cnt_user != 0) {
echo '<div class="no">Este usuário já foi cadastrado! Por favor escolha outro.</div>';
} else {
// Comando SQL
mysql_query("INSERT INTO tabela (user, pass, filial) VALUES ('lucas', 'senha_lucas', '1')") or die (mysql_error());
}
?>

O que estou achando complicado é pra atualizar, quando uso o mesmo script para a atualização, se o "lucas" da filial 2 for alterar a senha dele, o script acusa que o login já existe na filial 2, no caso já houvi falar do comando SQL XOR, meu cunhado também é programador e fez isto funcionar através do XOR do SQL, o pior é que não consigo falar com ele, pois trabalha em uma empresa que não dá acesso a comunicação móvel e, onde ele mora não há comunicação rsrs. Por isto estou aqui.

 

Alguém sabe dizer-me como resolver isto com o comando XOR?

Compartilhar este post


Link para o post
Compartilhar em outros sites

XOR é o "ou excluvivo"

 

se fizermos algo assim

 

SELECT *
FROM   USUER
WHERE  MEMBER = 'Marcos Aurélio - GTI' OR STATUS = 'MODERADOR'

 

Trará os mederadores MAIS o Membro(não Moderador) "Marcos Aurélio - GTI"

 

Todavia se fizermos algo assim

 

SELECT *
FROM   USUER
WHERE  MEMBER = 'Motta' XOR STATUS = 'MODERADOR'

 

Trará os Moderadores MENOS o Moderador "Motta" pois é "Ou exclusivo" as duas condições se tornam FALSE.

---------------------

 

Creio que o problema em questão pode ser resolvido com uma Chave Primária Composta (Usuário,Filial).Assim só um par Usuário,Filial existe na base.

 

Ajudou ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

XOR é o "ou excluvivo"

 

se fizermos algo assim

 

SELECT *
FROM   USUER
WHERE  MEMBER = 'Marcos Aurélio - GTI' OR STATUS = 'MODERADOR'

 

Trará os mederadores MAIS o Membro(não Moderador) "Marcos Aurélio - GTI"

 

Todavia se fizermos algo assim

 

SELECT *
FROM   USUER
WHERE  MEMBER = 'Motta' XOR STATUS = 'MODERADOR'

 

Trará os Moderadores MENOS o Moderador "Motta" pois é "Ou exclusivo" as duas condições se tornam FALSE.

---------------------

 

Creio que o problema em questão pode ser resolvido com uma Chave Primária Composta (Usuário,Filial).Assim só um par Usuário,Filial existe na base.

 

Ajudou ?

Consegui aqui amigo, meu cunhado é programador PHP e me passou o código. Funcionou belezinha e, vou deixá-lo abaixo pra quem precisar rsrs :thumbsup:

<?php
if (isset($_POST['enviarEdtUser'])) {
include_once "../connection.php";
sleep(1);
if (
$_POST['nome']     != '' &&
$_POST['email']    != '' &&
$_POST['re_email'] != '' &&
$_POST['user']     != ''
) {
	if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
		echo '<div class="no">Informe um e-mail válido!</div>';
	} else {
		if ($_POST['email'] != $_POST['re_email']) {
			echo '<div class="no">Os dois e-mails digitados não são iguais!</div>';
		} else {
			if ($_POST['pass'] != $_POST['re_pass']) {
				echo '<div class="no">A duas senhas digitadas não são iguais!</div>';
			} else {
				//---------------->
				// Verificar se já existe no banco de dados o usuário indicado pelo formulário fora o usuário deste ID
				$id             = $_GET['id']; // ID do usuário a editar
				$userLoginFm    = $_POST['user']; // Login do usuário a editar
				$verificar_id   = mysql_query("SELECT * FROM usuarios_site WHERE userId = '$id'") or die (mysql_error());
				$res            = mysql_fetch_array($verificar_id);
				$userLoginDB    = $res['userLogin'];
				$verificar_user = mysql_query("SELECT userLogin FROM usuarios_site WHERE userLogin = '$userLoginFm'") or die (mysql_error());
				if (@mysql_num_rows($verificar_user) < '1' xor $userLoginDB == $userLoginFm) {
					// SQL command
					$retorno = "<div class=\"ok\">Seus dados foram atulizado com sucesso!</div>";
				} else {
					$retorno = "<div class=\"no\">O e-mail já foi cadastrado, tente outro!</div>";
				}
				echo $retorno;
				//---------------->
			}
		}
	}
} else {
	echo '<div class="no"><span>Os seguintes campos são obrigatórios!</span><br />';
	echo '<ol>';
	if ($_POST['nome']     == '') {echo '<li>Nome</li>';}
	if ($_POST['email']    == '') {echo '<li>E-mail</li>';}
	if ($_POST['re_email'] == '') {echo '<li>Repita o E-mail</li>';}
	if ($_POST['user']     == '') {echo '<li>Usuário</li>';}
	echo '</ol></div>';
}
}
?>

 

Pode finalizar este tópico amigo Motta...

O código está acima pra quem precisar... testei e funcionou belezinha e, obrigado pela atenção vocês são demais!

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.