JRRC 0 Denunciar post Postado Abril 6, 2010 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. Compartilhar este post Link para o post Compartilhar em outros sites
JRRC 0 Denunciar post Postado Abril 6, 2010 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. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Abril 7, 2010 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'; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
JRRC 0 Denunciar post Postado Abril 7, 2010 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. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Abril 7, 2010 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 Compartilhar este post Link para o post Compartilhar em outros sites
JRRC 0 Denunciar post Postado Abril 8, 2010 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 HÁ 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. Compartilhar este post Link para o post Compartilhar em outros sites
JRRC 0 Denunciar post Postado Abril 8, 2010 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. Compartilhar este post Link para o post Compartilhar em outros sites
JRRC 0 Denunciar post Postado Abril 9, 2010 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; }); }); }); Compartilhar este post Link para o post Compartilhar em outros sites