Ir para conteúdo

Arquivado

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

Julio Cavallari

Erro ao deletar dados MySQL

Recommended Posts

Tenho uma função para deletar um dado do banco, mas não consigo chamar ela através do evento OnClick.

echo"<a class='no-decoration' href='javascript:void(0);' onclick='confirmar(".'$pet_id','$pet_nome'.");'><i class='fa fa-fw fa-close'></i>Excluir</a>";
function corfirmar(id,nome){
    decisao = confirm('Deseja deletar o Pet ' + nome );
    if (decisao)
    {
        
        $.ajax({
          url: "http://localhost/server_mvet/deletar.php",
          dataType: "text",
          type: 'POST',
          data: {id: id},
          success: function(doc){
 if(doc == '1')
 {
alert('O pet foi deletado com sucesso!');
 }
 else if(doc == '2')
 {
alert('Erro ao selecionar ID do animal!');;
 }
            
          },  
          error: function(){
            alert('Erro ao deletar o registro')
          }
        });
    }
};
<?php
require("conexao.php");
$id_pet = $_POST['id'];
if(isset($id_pet)
{
mysql_query("DELETE FROM pets WHERE id_pet = '$id_pet'");
echo"1"
}
else
{
echo"2";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Experimenta com:

<?php
   echo "<a class='no-decoration' href='javascript:void(0);' onclick='confirmar('" . $pet_id . "','" . $pet_nome . "');'><i class='fa fa-fw fa-close'></i>Excluir</a>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Notei que quando eu coloco esse código:

echo "<a class='no-decoration' href='javascript:void(0);' onclick='confirmar('".$pet_id."','".$pet_nome."')'><i class='fa fa-fw fa-close'></i>Excluir</a>";

o PHP está me retonando:

<a class="no-decoration" href="javascript:void(0);" onclick="confirmar(" 19','teste')'=""><i class="fa fa-fw fa-close"></i>Excluir</a>

Ele não está colocando aspas simples antes do $pet_id

Isso aqui funcionaria?

echo "<a class='no-decoration' href='javascript:confirmar('".$pet_id."','".$pet_nome."');' ><i class='fa fa-fw fa-close'></i>Excluir</a>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim deverá funcionar, sendo que, se ainda não o fizeste, tens de alterar o nome da função de corfirmar para confirmar na sua definição:

<?php
  echo "<a class='no-decoration' href='javascript:void(0);' onclick='confirmar(\"".$pet_id."\",\"".$pet_nome."\")'><i class='fa fa-fw fa-close'></i>Excluir</a>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora criou o link correto

<a class="no-decoration" href="javascript:void(0);" onclick="confirmar("19","Teste")"><i class="fa fa-fw fa-close"></i>Excluir</a>

Mas continua não chamando a função quando clico.

Vou mandar o código JS inteiro para ver se tema algum problema nele.

$(document).ready(function(){
    //Popula o div table_pet
    $.get('http://localhost/server_mvet/tabela_pet.php', function (html){
         $('#table_pet').html(html).show();
		 $('#loading').hide();
    });
    //Pega o nome do usuário logado e mostra na sidebar    
    $.get('http://localhost/server_mvet/nome.php', function (html){
         $('.nome').html(html).show();
    });
    //Função para deslogar o usuário 
    $(".logout_btn").click(function() {
    $('#loading').show();
            $.ajax({
                url: 'http://localhost/server_mvet/logout.php',
                success: function(data){
                    window.location.href = data;
					$('#loading').hide();
                }
            });
        });
     //Função para ver se o usuário está logado
     $.get('http://localhost/server_mvet/restrito.php', function (restrito){
     if(restrito === "1"){
	window.location.href = 'index.html';
	}
     });
//Função para deletar um animal do BD
function confirmar(id,nome){
    decisao = confirm('Deseja deletar o Pet '+nome);
    if (decisao)
    {
        
        $.ajax({
          url: "http://localhost/server_mvet/deletar.php",
          dataType: "text",
          type: 'POST',
          data: {id: id},
          success: function(doc){
		  if(doc == '1')
		  {
			alert('O pet foi deletado com sucesso!');
		  }
		  else if(doc == '2')
		  {
			alert('Erro ao selecionar ID do animal!');;
		  }
            
          },  
          error: function(){
            alert('Erro ao deletar o registro')
          }
        });
        }
     }
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora criou o link correto

<a class="no-decoration" href="javascript:void(0);" onclick="confirmar("19","Teste")"><i class="fa fa-fw fa-close"></i>Excluir</a>

Não, o link não está a ser criado correctamente. O certo seria onclick='confirmar("19", "Teste")'. Este elemento anchor é resultado do echo que mostraste na mensagem anterior ou já alteraste alguma coisa?

A lógica é não misturar aspas duplas com aspas simples. Se usas " " no atributo onClick, tens de usar ' ' nos parâmetros que passas para a função. De outra forma, não vais conseguir passar nada para a função e o resto do código não vai funcionar como pretendes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Invertendo as aspas do echo, colocando simples fora e dupla dentro:

echo '<a class="no-decoration" href="javascript:void(0);" onclick="confirmar(\''.$pet_id.'\',\''.$pet_nome.'\')"><i class="fa fa-fw fa-close"></i>Excluir</a>';

Ele me retorna isso, está correto agora? Porque a função continua não sendo chamada, será o problema não está na função?

<a class="no-decoration" href="javascript:void(0);" onclick="confirmar('19','Teste')"><i class="fa fa-fw fa-close"></i>Excluir</a>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, a chamada parece-me bem agora. Antes de definires a variável decisao, faz um console.log(id, nome); e verifica a consola do browser para teres a certeza que os parâmetros estão a ser passados para a função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tens o código JavaScript num ficheiro à parte (tipo funcoes.js) ou no mesmo ficheiro do código PHP?

Se for o primeiro caso, verifica se estás a referenciar esse script (<script src="caminho/para/o/script.js"></script>).

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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