Variável vindo no JS não cai no IF do PHP

01/11/2019

8

Opa pessoal, como vai? Então, eu estava precisando fazer com que o usuário confirme que ele quer fazer determinada ação, por isso optei por usar o "confirm" do JS.
Depois de capturado se o usuário confirmou ou não a ação, eu vou testar ela no PHP porém ela não cai no if, se eu printar a varável irá aparecer 1 ou 0, mas esses valores por algum motivo não caem no if.

<script type="text/javascript">
	if (confirm('Deseja realmente deletar este registro?')) {
		var confirma = 1;
	} else {
		var confirma = 0;
	}
</script>
	<title></title>
<?php
	session_start();
	if (!isset($_SESSION['logado'])) {
		header("location: index.php");
		session_destroy();
		die();
	}
		$confirma = "<script>document.write(confirma)</script>";
		if ($confirma == 1) {
			include '../conexao.php';
			$num =  mysqli_real_escape_string($connect, $_POST['nbrNum']);
			$nome = mysqli_real_escape_string($connect, $_POST['txtNome']);

			$sql = "INSERT INTO candidatos(idCandidatos, nome) ";
			$sql = $sql . " values('$num', '$nome')";

			if (mysqli_query($connect, $sql)) {
				print "Candidato adicionado com sucesso! <br>";
				print "Clique <a href='painelAdmin.php'>Aqui</a> para voltar á tela administrativa.";
			}else{
				print "Houve uma falha ao adicionar um novo candidato. <br>";
				print "Clique <a href='painelAdmin.php'>Aqui</a> para voltar á tela administrativa.";
			}
		}else{
			print "<script type='text/javascript'>window.history.back();</script>";
		}
		
?>
Responder

Post mais votado

22/11/2019

Olá Gabriel !! Tudo bem ??

Seguinte, isso que vc está querendo fazer não é possível... o PHP roda antes do JavaScript e do HTML e, além disso, em máquinas diferentes (PHP no servidor e JS/HTML no navegador que está no cliente), portanto não há como passar variáveis de um código para outro.

Faça a seguinte alteração no seu código e veja o real valor da sua variável $confirma na hora que o PHP roda...

...
       die();
    }
        $confirma = "<script>document.write(confirma)</script>";
        
        var_dump($confirma);

        if ($confirma == 1) {
            include '../conexao.php';
            $num =  mysqli_real_escape_string($connect, $_POST['nbrNum']);
...


Você irá entender porque o seu if nunca resolve a condição como verdadeira...

Para fazer o que vc está querendo fazer use AJAX.

Achei um POST no link abaixo que explica melhor sobre o que lhe falei...

https://pt.stackoverflow.com/questions/25136/igualar-variável-php-a-uma-variável-javascript


Espero ter ajudado,
Abraço e bons códigos.
Responder