Ir para conteúdo

Arquivado

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

Teo Carlo

Executando instrução php de toda forma

Recommended Posts

<?php
	if(isset($_POST["excluir_empresa"]) ){
		$id_empresa = $_POST["idemp"];
	?>		
		$.SmartMessageBox({
			title : "Atenção!",
			content : "Você está prestes a <strong>EXCLUIR</strong> definitivamente esse registro. Você tem certeza que deseja continuar ?",
			buttons : '[No][Yes]'
		}, function(ButtonPressed) {
				
			if (ButtonPressed === "Yes") {
				$sqldelete = $mysqli->prepare("DELETE FROM tbl_empresa where id_empresa = '$id_empresa' limit 1");
				$sqldelete->execute();
				$sqldelete->close();
				$.smallBox({
					title: "Parabéns! Operação Efetuada com Sucesso",
					content: "<i class='fa fa-clock-o'></i> <i>1 segundo atrás...</i>",
		 			color: "#5F895F",
		  			iconSmall: "fa fa-check bounce animated",
		  			timeout: 4000
				});
			}
			if (ButtonPressed === "No") {
				
				$.smallBox({
	  				title: "ATENÇÃO! Operação Cancelada pelo Usuário",
	  				content: "<i class='fa fa-clock-o'></i>",
	  				color: "#fc9999",
	  				iconSmall: "fa fa-check bounce animated",
	  				timeout: 6000
				});
			}

Apertando o botão Yes ou No, a instrução mysqli dentro do if do ButtonPressed === "Yes" é executada,. Não importa o botao que eu aperte.

 

Por outro lado, se eu tirar a instrução sql, as mensagens são apresentadas corretas, nunca as duas.

 

Gostaria que só fosse executada a instrução sql, apenas quando eu apertar Yes.

 

Alguém pode me ajudar ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP roda no server, JavaScript roda no client (browser). Todo o código PHP é executado antes mesmo de aparecer a janela de confirmação de exclusão.

 

A melhor maneira de se criar uma janela de confirmação de exclusão é a seguinte:

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu faria para que quando acionado o botao Yes um form seja submetido via POST, fazendo com q a pagina de um reload, seguindo essa logica:

 

<?php
	if(isset($_POST["excluir_empresa"]) ){
		$id_empresa = $_POST["idemp"];
	?>		
		$.SmartMessageBox({
			title : "Atenção!",
			content : "Você está prestes a <strong>EXCLUIR</strong> definitivamente esse registro. Você tem certeza que deseja continuar ?",
			buttons : '[No][Yes]'
		}, function(ButtonPressed) {
				
			if (ButtonPressed === "Yes") {
				Submeto um formulario via method POST enviando a variável $id_empresa como hidden e fazendo com q a pagina de uma reload
			}
			if (ButtonPressed === "No") {
				
				$.smallBox({
	  				title: "ATENÇÃO! Operação Cancelada pelo Usuário",
	  				content: "<i class='fa fa-clock-o'></i>",
	  				color: "#fc9999",
	  				iconSmall: "fa fa-check bounce animated",
	  				timeout: 6000
				});
			}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser aplicada a mesma lógica que há no link mencionado anteriormente. Basta que, ao clicar em Yes, o javascript submeta o formulário.

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, Gabriel Heming disse:

Pode ser aplicada a mesma lógica que há no link mencionado anteriormente. Basta que, ao clicar em Yes, o javascript submeta o formulário.

Não manjo nada de JavaScript,mesmo assim obrigado. No caso eu teria que colocar um form.submit() dentro do yes, e não consegui fazer.Se mais alguém puder me ajudar agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites
document.getElementById("id-do-form").submit();

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado pela resposta, ficou assim:

 

Em um datatable eu exibo o botão de excluir em cada linha (  <a href="#" id="smart-mod-eg1" class="btn btn-danger btn-xs"> EXCLUIR</a> )

<td> 
	<?php 
	if($status == 'I'){
  		echo'
    	<a href="#" id="smart-mod-eg1" class="btn btn-danger btn-xs"> EXCLUIR</a>
		<form method="post" id="conf_excluir" name="conf_excluir" class="smart-form" action="">
    		<input type="hidden" id="excluir_empresa" name="excluir_empresa" value="'.$id_empresa.'">
   		</form>
		';
	}
	?>
</td> 

 

Verifico se foi clicado aqui:

$("#smart-mod-eg1").click(function(e) {
	$.SmartMessageBox({
		title : "Solicitação de Confirmação!",
		content : "Você está preste a excluir uma EMPRESA definitivamente do nosso Banco de Dados. Você tem <strong>certeza</strong> desta operação?",
		buttons : '[Não][Sim]'
	}, function(ButtonPressed) {
		if (ButtonPressed === "Sim") {

			document.getElementById("conf_excluir").submit();
				
		}
		if (ButtonPressed === "Não") {
			$.smallBox({
			title : "ATENÇÃO",
			content : "<i class='fa fa-clock-o'></i> <i>Operação Cancelada pelo Usuário</i>",
			color : "#C46A69",
			iconSmall : "fa fa-times fa-2x fadeInRight animated",
				timeout : 4000
			});
		}

	});
	e.preventDefault();
})

 

Se por acaso apertou o Sim submeto o formulário <form method="post" id="conf_excluir" name="conf_excluir" class="smart-form" action=""> <input type="hidden" id="excluir_empresa" name="excluir_empresa" value="'.$id_empresa.'"> </form>

 

if (ButtonPressed === "Sim") {
	document.getElementById("conf_excluir").submit();
}

 

Verifico se houve POST e faço a exclusão:

 

if($_SERVER['REQUEST_METHOD'] == 'POST') {
    if(isset($_POST["excluir_empresa"])){
		$id_empresa = $_POST["excluir_empresa"];
		CODIGO DE EXCLUIR
	}
}

Funcionou perfeitamente, nao sei se é o ideal, mas está funcionando.

 

O unico problema agora é que, quando eu listo meus dados no datatable, no grid, o botao EXCLUIR funciona apenas na linha que mostra o primeiro registro encontrado no while que construiu a tabela, o restante fica inoperante.

 

$result = $mysqli->query($query);
$achei = mysqli_num_rows($result);
if($achei > 0){
	while ($obj = $result->fetch_object()){
	}
}

 

Inspecionando o codigo, eu verifiquei que a tag <a hreaf > responsável por chamar a função não se repete dentro de todos os botoes gerados, apenas no primeiro.
 

 

Se puder me ajudar a resolver., agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por gleidsonb12
      Considerando o seguinte script de um gráfico:
       
      <script type="text/javascript"> var options = { responsive:true }; var data = { labels: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], datasets: [ { label: "Dados primários", fillColor: "rgba(220,220,220,0.5)", strokeColor: "rgba(220,220,220,0.8)", highlightFill: "rgba(220,220,220,0.75)", highlightStroke: "rgba(220,220,220,1)", data: [100, 120, 100, 120, 100, 120, 100, 120, 90, 80, 120, 100] }, { label: "Dados secundários", fillColor: "rgba(151,187,205,0.5)", strokeColor: "rgba(151,187,205,0.8)", highlightFill: "rgba(151,187,205,0.75)", highlightStroke: "rgba(151,187,205,1)", data: [100, 100, 100, 100, 100, 27, 90, 90, 100, 121, 130, 90] } ] }; window.onload = function(){ var ctx = document.getElementById("GraficoBarra").getContext("2d"); var BarChart = new Chart(ctx).Bar(data, options); } </script>  
      Como eu faço para colocar variáveis PHP ($variavel) no campo data?
      Tipo, no lugar de :
      data: [100, 100, 100, 100, 100, 27, 90, 90, 100, 121, 130, 90]
       
      Eu colocar algo do tipo:
      data: [$variavel1, $variavel2, $variavel3, $variavel4, $variavel5,  $variavel6, $variavel7, $variavel8, $variavel9, $variavel10, $variavel11, $variavel12]
       
      Considerando que os valores das variáveis serão dinâmicos, vindo do Banco de Dados
       
      Alguém pode me ajudar
       
×

Informação importante

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