[RESOLVIDO] Botão Alterar Status - SQL Não Funciona

Não sei aonde errei, criei um botão PHP para alterar um status, mas não funciona direito, vejam e me ajude por favor aonde errei…

if (({status_loja} === 0) && ({status_laboratorio} !== 0))
	
		{	
			
				//Atualiza Status_loja

				sc_exec_sql("UPDATE
				oslojamestre
				SET
				status_loja = 1
				WHERE 
				(id = '". {id} ."') AND status_loja = 0");
									
		}
		

else 
	{

	//Atualiza Status_loja
		
		sc_exec_sql("UPDATE
		oslojamestre
		SET
		status_loja = 0
		WHERE 
		(id = '". {id} ."') AND status_loja = 1");

		
		}
				
	
		
		

Não funciona direito, é uma conclusão estranha.

Um sc_commit_trans() não ajudaria?

A questão é o sql funciona, mas ele não altera o valor corretamente, imagino que fiz algo de errado no if, não consegui imaginar o que foi, alterações por outras comparações mas tem algo de errado no if else…

ta comparando booleans ? ou valores?

si for valores use apenas == oi != para booleans === ou !===

Estou comparando valores, mas já havia colocado “==” mas não fez a comparação correta, o sql verifiquei está tudo certo…

Vamos fazer um Tira Teima, copia e guarda todo o seu código original em arquivo texto, e testa esse.

if (empty({status_loja}) AND !empty({status_laboratorio})) {
		
	//Atualiza Status_loja
	
	$sql="
	UPDATE
		oslojamestre
	SET
		status_loja = 1
	WHERE 
		id = '{id}' AND status_loja = 0
	";

	echo 'SQL 1 = '.$sql."<BR>";
		

} else {

	//Atualiza Status_loja

	$sql="
	UPDATE
		oslojamestre
	SET
		status_loja = 0
	WHERE 
		id = '{id}' AND status_loja = 1
	";

	echo 'SQL 2 = '.$sql."<BR>";	

}

sc_commit_trans();

// Aqui paramos o código para conferir
break; // Remover depois de terminar de testar.

sc_ajax_javascript('nm_recarga_form'); // Para ele mostrar os campos atualizados.

Verifica se o campo id na base é caracter ou numérico, se for
número o WHERE é assim: id = {id}

Na base o certo é também ficar assim na DDL: 0 ou 1 Default, ai depende do seu projeto.
status_loja smallint(1) DEFAULT 0,
status_laboratorio smallint(1) DEFAULT 0,

dentro do if e do elso, dá um print, tipo:
print "if: ".{campo};
e
print “else”.{campo};

Ai verifica o valor que tá vindo nos campos e onde ele tá entrando.
Assim como ativar o modo debug da aplicação ( aplicação > configuração ).

Agradeço, mas tem algo de errado no if…, estou errando algo na lógica…

segue esta dica,
faz echo ou print dos valores

Obrigado, mas estou abortando esta tela, vou criar de outra forma, pois deve ser algum bug e estou perdendo muito tempo…
Obrigado à todos!

A Lógica esta certa, mas é um direito seu ‘desistir’.

$status_loja=0;
$status_laboratorio=1;

$status_loja=1;
$status_laboratorio=1;

Pois é, agradeço novamente o empenho de todos, mas após criar uma nova forma de avaliar este processo percebi que minha lógica estava errada para o objetivo final, pois além de utilizar a regra que você mesmo postou acima, eu queria poder alterar de forma livre o status_loja, e isto não seria possível da forma que escrevi o algoritmo, acabei abolindo a alteração livre do status_loja, e minimizei o problema, em momento futuro se houver um problema devido a isto volto novamente ou possibilito uma segunda tela.
Novamente agradeço o empenho, através da colaboração de todos me possibilitou ver algo que para mim estava despercebido, e não estava raciocinando.