Publicidade

JRRC

[Resolvido] Problema para excluir registro com janela modal

Bom galera meu problema é o seguinte, tenho uma página de consulta onde ela tem algumas operações Alterar/Excluir/+Detalhes, onde, quando clico em Excluir uma janela modal é ativada para que eu escolha entre Confirmar a Operação ou Cancelar.

 

No entanto, tenho alguns problemas quanto ao ID que ela pega quando clico em Excluir, vez ou outra ele pega o ID corretamente de quem desejo excluir, mais maioria das vezes não pega o ID correto de quem desejo excluir.

 

Por exemplo, pelo firebug tenho o seguinte retorno quando clico em "Thiago Reis" onde seu "ID=2"

http://localhost/excluir/?clienteid=2

Então vocês poderiam me dizer, mais ele está pegando o ID corretamente. Eu diria que você está certo, mais o problema é que ele pega esse ID corretamente apenas pela URL, no input onde digo que é para ele também pegar esse ID "2", as vezes aparece "1" "3" "4" e as vezes o proprio "2".

 

Então eu gostaria de quando eu clicasse no "Thiago Reis" onde seu "ID=2" que no input que é para mim confirmar a exclusão aparecesse "2" também todas as vezes que eu clicasse.

 

Nesse link aqui -->> http://www.mediafire.com/?emkl2nvedmu <<-- está o script que estou tentando fazer.

 

Para vocês entenderem melhor o que quero fazer, basta baixá-lo (se não for querer abusar da boa vontade de vocês, é claro) e dá um click em alguém, podem observar que na URL do firebug ele passa o ID certinho.

 

Mais quando a DIV se abre, então peçam para exibir o código fonte e observem nas seguintes linhas abaixo como o "ID" do primeiro não é o mesmo da URL e nem o "rel" do segundo.

<input type="submit" name="excluir" id="<?php echo $clienteid?>" value="Confirmar" class="submit" />
<div id="campo-pesquisa-operacoes" style="background:<?php echo $bgcolor; ?>;"><a rel="<?php echo $clienteid ?>" name="modal" id="#dialog2" href="">Excluir</a>

Alguém poderia me dizer aonde que estou errando ?!

Desde de já obrigado pela ajuda de todos.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom galera houve um grande mau entendido os ID são passados corretamente, eu que não tinha prestado atenção.

 

Bom o meu problema agora, é como fazer para o registro excluir assim que eu pressionar "Confirmar"

 

Meu input está da seguinte forma abaixo:

<form id="exclui-cliente" name="exclui-cliente" method="get" action="">				
<input type="button" name="close" value="Fechar" class="close"/>
<input type="submit" name="excluir" rel="<?php echo $clienteid?>" value="Confirmar" class="submit" />
</form>

Tentei fazer da seguinte forma para excluir o registro quando eu clicasse em "Confirmar" no entanto não deu certo.

//Peguei o valeu do input
$('#Confirmar').submit(function(e) {
	e.preventDefault();	
	var clienteid = $(this).attr("rel");
	$.ajax({ 
		type:"GET",
		url:"excluir-cliente-bd.php", 
		data:{clienteid:clienteid}, 
		success: function(atual){ $(this).html(atual) } 
			
	})
})

E o meu arquivo de exclusão está assim:

<?php
if(basename($_SERVER["PHP_SELF"]) != "excluir-cliente-bd.php" and !empty($_GET) and $_SERVER['HTTP_REFERER'])
{	
	$clienteid = $_GET["clienteid"];
	
	$sql = "DELETE FROM cliente WHERE id = '$clienteid'";
	$resultado = mysql_query($sql);
	//echo "<script type = 'text/javascript'> location.href = './index.php?link=8'</script>";
}
?>

Alguém sabe me dizer aonde que estou errando ?! Desde de já obrigado pela ajuda de todos.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz o seguinte:

success: function(atual){ $('#retorno').html(atual) }
e no form:

<input type="submit" name="excluir" rel="<?php echo $clienteid?>" value="Confirmar" class="submit" />
<div id="retorno"></div>
</form>

excluir-cliente-bd.php

<?php
if( !empty($_GET["clienteid"]) )
{
        $clienteid = $_GET["clienteid"];
        
        $sql = "DELETE FROM cliente WHERE id = '$clienteid'";
        $query = mysql_query($sql)or die( mysql_error() );
        echo ( $query ) ? 'Excluido com sucesso' : 'Ocorreu um erro';
}
?>
0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia William Bruno,

 

Fiz da forma que você disse, e está dando o seguinte ERRO abaixo

Warning: mysql_query() [function.mysql-query]: Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/excluir/excluir-cliente-bd.php on line 5

Dei uma verificada no arquivo de exclusão e não vi nada de ERRADO, apesar de ter algo, deixei ele da seguinte forma abaixo:

<?php
if( !empty($_GET["clienteid"]) )
{
    $sql = "DELETE FROM cliente WHERE id = '$clienteid'";
    $query = mysql_query($sql) or die( mysql_error() );
    if( $query ) { echo  'Excluido com sucesso'; }
}
?>

O erro está dando nessa linha aqui $query = mysql_query($sql) or die( mysql_error() );

 

Uma outra coisa estranha que está aparecendo é por exemplo, quando eu clico em um cliente par excluir no firebug me aparece o seu verdadeiro ID e quando clico em confirmar me aparece apenas o primeiro ID, independente de quem eu clique.

 

Por exemplo quando clico em excluir me aparecesse o seguinte no firebug

http://localhost/excluir/?clienteid=2

E quando abre a janela modal e clico em confirmar me aparecesse o seguinte abaixo

http://localhost/excluir/excluir-cliente-bd.php?clienteid=1

Como você pode ver, o primeiro ID que é passado na URL e não o seu ID que no exemplo seria "2".

 

Meu código em Jquery dei uma modificada, ele está da seguinte forma abaixo agora

$('#Confirmar').click(function(e) {
        e.preventDefault();
	$('form[name=exclui-cliente]').submit(function(e){
		e.preventDefault();
		var clienteid = $('a[name=modal]').attr("rel");
		$.ajax({ 
			type:"GET",
			url:"excluir-cliente-bd.php", 
			data:{clienteid:clienteid}, 
			success: function(atual){ $('#retorno').html(atual) }
		})
	return false;
	});
});

Nessa parte aqui do codigo var clienteid = $('a[name=modal]').attr("rel"); tento passar o ID do <a ...></a>, mais infelizmente não deu certo.

 

E meu formulário está assim:

<form id="exclui-cliente" name="exclui-cliente" method="get" action="">				
  <input type="button" name="close" value="Fechar" class="close"/>
  <input type="submit" name="Confirmar" id="Confirmar" rel="" value="Confirmar" class="submit" />
  <div id="retorno"></div>
</form>

Nesse link aqui -->> http://www.mediafire.com/?m2y1uhcji5z <<-- estão os arquivos para download, caso dê para você baixar e conferir ficaria muito grato.

Té mais e tenha uma boa quarta.

 

Obs: Antes mesmo dessa alteração no código Jquery o erro de passar o ID quando eu clicava em confirmar já existia.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia @JRRC !

cara, vamos ser 'pragmáticos'. Uma coisa de cada vez.. arrume a conexão com o banco de dados.

o or die() fez aparecer o erro, do banco de dados. Você não está conectando corretamente ao banco !!! arrume isso !

 

Bom dia William Bruno,

 

Fiz da forma que você disse, e está dando o seguinte ERRO abaixo

Warning: mysql_query() [function.mysql-query]: Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/excluir/excluir-cliente-bd.php on line 5

Qnto ao outro erro, você tem vários formulários nessa página?

Não duplique IDs !!! isso é um erro absurdo de HTML !

 

id deve ser um identificador único no documento.

E cara, desculpe.. mas não vou baixar os teus arquivos e arrumá-los não. Isso vai um pouco além do 'ajudar'.

Se precisar de suporte particular, sugiro contratar um profissional:

Ofertas para Freelancers

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite William Bruno,

 

Bom para começar o problema não estava no arquivo de conexão e sim no próprio arquivo de exclusão pois não estava chamando o arquivo de conexão dentro do mesmo.

 

E também não HAVIA e não nenhum ID duplicado em meu código, além de algumas DIV que são necessária a sua repetição.

 

Vamos ao que interessa, quanto ao erro que dava foi resolvido deixando meu arquivo de excluir da seguinte maneira abaixo.

<?php
  require_once "./conexao.php";	
  $clienteid = $_POST["clienteid"];
	
  $sql   = "DELETE FROM cliente WHERE id = '$clienteid'";
  $query = mysql_query($sql) or die( mysql_error() );

  if( $query ) { echo  'Excluido com sucesso'; }

?>

E também ja estou excluindo perfeitamente quando clico em "Confirmar" na janela modal. O meu único problema é que eu gostaria que quando eu clicasse em "Confirmar" a janela modal, desaparecesse igual quando clico em "Cancelar".

 

Meu código atualmente está da seguinte maneira abaixo:

var clienteid_global = 0;
$(document).ready(function() {	
	
	$('a[name=modal]').click(function(e) {
		e.preventDefault();
		var id = $(this).attr('id');	
		clienteid_global = $(this).attr("rel");
		
		var maskHeight = $(document).height();
		var maskWidth  = $(window).width();
	
		$('#mask').css({'width':maskWidth,'height':maskHeight});

		$('#mask').fadeIn(1000);	
		$('#mask').fadeTo("slow",0.8);	
	
		//Get the window height and width
		var winH = $(window).height();
		var winW = $(window).width();
              
		$(id).css('top',  winH/2-$(id).height()/2);
		$(id).css('left', winW/2-$(id).width()/2);
	
		$(id).fadeIn(2000); 	
	});
	
	$('.window .close').click(function (e) {
		e.preventDefault();
		
		$('#mask').hide();
		$('.window').hide();
	});
	
	$('#mask').click(function () {
		$(this).hide();
		$('.window').hide();
	});	
		
	$('#btn_confirma').click(function() {
		$('form#exclui-cliente').submit(function(){
			var cliente_id = clienteid_global;
			$.ajax({ 
				type:"POST",
				url:"excluir-cliente-bd.php", 
				data:{clienteid:cliente_id}, 
				success: function(atual){ $('#retorno').html(atual) }
			})
		return false;
		});	
	});	
});

E por último meu form se encontra da seguinte maneira abaixo

<div id="boxes">
	<!-- Janela Modal com Bloco de Nota -->
	<div id="dialog2" class="window">
		Excluir Registro.<br /><br />
		<b>Voce</b>, deseja excluir este cliente ?<br /> <?php //echo $clienteid; ?> <br /><br /><br />
		<?php //require_once "excluir-cliente-bd.php";?>				
		<form id="exclui-cliente" name="exclui-cliente" method="post" action="">				
			<input type="button" name="close" value="Cancelar" class="close"/>
			<input type="submit" name="Excluir" id="btn_confirma" rel="<?php echo $clienteid?>" value="Confirmar" class="submit" />
			<div id="retorno"></div>
		</form>
	</div>
	<!-- Fim Janela Modal com Bloco de Nota -->
	<!-- Máscara para cobrir a tela -->
	<div id="mask"></div>
</div>

Desde de já obrigado pela ajuda de todos, té mais.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um pequeno detalhes que esqueci de citar é, se eu deixar "return true;" a janela modal desaparece e dá um refresh na página, que não é a forma que eu deseje que fique.

 

Outro detalhes que esqueci de dizer, é que da forma que se encontra meu código, quando clico em "Confirmar" (que é para excluir), a janela modal continua e através de sua transparência dá pra ver pra também o nome da pessoa ainda que mandei excluir, ou seja, só desaparece quando mando atualizar (F5).

 

Resumindo, eu gostaria que quando clicasse em "Confirmar" a janela modal desaparecesse juntamente com a pessoa que mandei "Excluir" sem dá um refresh ná pagina.

 

Alguém sabe me dizer o que devo fazer para resolver esse meu problema ?!

 

Desde de já obrigado pela ajuda de todos, té mais.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pessoal problema resolvido, vou postar abaixo os codigos para que caso alguém no futuro deseje fazer o mesmo, tenha algo a mais em que se basear.

 

Consulta + Form + Janela Modal + DIV que visualizo os cliente cadastrados

$sql = "SELECT * FROM cliente";

for ($linha=0; $linha < mysql_num_rows($dados); $linha++)
{
	$clienteid = mysql_result($dados, $linha, id);
	$nome	= mysql_result($dados, $linha, nome);

	if (isset($bgcolor) && $bgcolor == "#F0F0F0") { $bgcolor = "#F9F9F9";}
	else { $bgcolor = "#F0F0F0"; }
	?>
	<div id="boxes">
		<!-- Janela Modal com Bloco de Nota -->
		<div id="dialog2" class="window">
			Excluir Registro.<br /><br />
			<b>Voce</b>, deseja excluir este cliente ?<br /> <?php //echo $clienteid; ?> <br /><br /><br />
			<?php //require_once "excluir-cliente-bd.php";?>				
			<form id="exclui-cliente" name="exclui-cliente" method="post" action="">				
				<input type="button" name="close" value="Cancelar" class="close"/>
				<input type="submit" name="Excluir" id="btn_confirma" rel="<?php echo $clienteid?>" value="Confirmar" class="submit" />
			</form>
		</div>
		<!-- Fim Janela Modal com Bloco de Nota -->
		<!-- Máscara para cobrir a tela -->
		<div id="mask"></div>
	</div>		
	<div id="campo-pesquisa-no-border" class="load-<?php echo $clienteid; ?>"> 
		<div id="campo-pesquisa-dados" style="background:<?php echo $bgcolor; ?>;"><?php echo $nome; ?></div>
		<div id="campo-pesquisa-dados" style="background:<?php echo $bgcolor; ?>;"><?php echo mysql_result ($dados, $linha, endereco) ?></div>
		<div id="campo-pesquisa-dados" style="background:<?php echo $bgcolor; ?>;"><?php echo mysql_result ($dados, $linha, cpf) ?></div>
		<div id="campo-pesquisa-sexo" style="background:<?php echo $bgcolor; ?>;"><?php echo mysql_result ($dados, $linha, sexo) ?></div>
		<div id="campo-pesquisa-operacoes" style="background:<?php echo $bgcolor; ?>;"><a href ="<?php echo "index.php?link=7&opcao=Alterar&codigo=".$clienteid?>"> Alterar</a>
		</div>
		<div id="campo-pesquisa-operacoes" style="background:<?php echo $bgcolor; ?>;"><a rel="<?php echo $clienteid ?>" name="modal" id="#dialog2" href="">Excluir</a>
		</div>
		<div id="campo-pesquisa-operacoes" style="background:<?php echo $bgcolor; ?>;"><a href ="<?php echo "index.php?link=9&opcao=Consultar&codigo=".$clienteid?>">+Detalhes</a>
		</div>
	</div>        
<?php }?>

E por último o codigo em Jquery

var clienteid_global = 0;
$(document).ready(function() {	
	//seleciona os elementos a com atributo name="modal"
	$('a[name=modal]').click(function(e) {
		//cancela o comportamento padrão do link
		e.preventDefault();
		//armazena o atributo href do link
		var id = $(this).attr('id');	
		//armazena o id do cliente clicado
		clienteid_global = $(this).attr("rel");
		//armazena a largura e a altura da tela
		var maskHeight = $(document).height();
		var maskWidth  = $(window).width();
		//Define largura e altura do div#mask iguais as dimensões da tela
		$('#mask').css({'width':maskWidth,'height':maskHeight});
		//efeito de transição
		$('#mask').fadeIn(1000);	
		$('#mask').fadeTo("slow",0.8);	
	
		//armazena a largura e a altura da janela
		var winH = $(window).height();
		var winW = $(window).width();
        //centraliza na tela a janela popup      
		$(id).css('top',  winH/2-$(id).height()/2);
		$(id).css('left', winW/2-$(id).width()/2);
	
		$(id).fadeIn(2000); 	
	});
	
	//se o botão fechar for clicado
	$('.window .close').click(function (e) {
		//cancela o comportamento padrão do link
		e.preventDefault();
		
		$('#mask').hide();
		$('.window').hide();
	});
	
	//se div#mask for clicado
	$('#mask').click(function () {
		$(this).hide();
		$('.window').hide();
	});	
		
	//se o botão 'Confirmar' for clicado então dá o submit no form
	$('#btn_confirma').click(function() {
		$('form#exclui-cliente').submit(function(){
			var cliente_id = clienteid_global;
			$.ajax({ 
				type:"POST",
				url:"excluir-cliente-bd.php", 
				data:{clienteid:cliente_id}, 
				success: function(atual){ $('#retorno').html(atual); $('.load-'+cliente_id).remove(); $('#mask').hide(); $('.window').hide(); }
			})
		return false;
		});	
	});
});
0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora

  • Próximos Eventos

    • 0
      22 fevereiro 2017 22:00
      Até
      23 fevereiro 2017 01:30