Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Cursos Online iMasters
Foto:

[Resolvido] Problema para excluir registro com janela modal

  • Por favor, faça o login para responder
7 respostas neste tópico

#1 JRRC

JRRC
  • Membros
  • 251 posts

Postado 06 abril 2010 - 13:55

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

#2 JRRC

JRRC
  • Membros
  • 251 posts

Postado 06 abril 2010 - 20:14

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

#3 William Bruno

William Bruno

    Desenvolvedor FrontEnd

  • Moderadores Globais
  • 24.409 posts

Postado 06 abril 2010 - 23:06

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

#4 JRRC

JRRC
  • Membros
  • 251 posts

Postado 07 abril 2010 - 07:21

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

#5 William Bruno

William Bruno

    Desenvolvedor FrontEnd

  • Moderadores Globais
  • 24.409 posts

Postado 07 abril 2010 - 07:32

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

#6 JRRC

JRRC
  • Membros
  • 251 posts

Postado 08 abril 2010 - 19:11

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

#7 JRRC

JRRC
  • Membros
  • 251 posts

Postado 08 abril 2010 - 19:41

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

#8 JRRC

JRRC
  • Membros
  • 251 posts

Postado 09 abril 2010 - 17:27

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----o" style="background:<?php echo $bgcolor; ?>;"><?php echo mysql_result ($dados, $linha, ---o) ?></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




Publicidade

/ins>