Ir para conteúdo

POWERED BY:

Arquivado

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

Diegonaweb

delete php e jquery

Recommended Posts

Boa noite pessoal,

estou listando as noticas em uma tabela da seguinte forma:

 

<table id="lista" width="900px" border="1" align="left" cellpadding="3" cellspacing="0">
 <tr>
   <td align="center"><strong>ID</strong></td>
   <td align="center"><strong>Título</strong></td>
   <td align="center"><strong>Categoria</strong></td>
   <td align="center"><strong>Clicks</strong></td>
   <td align="center"><strong>Comentários</strong></td>
   <td align="center"><strong>Fotos</strong></td>
   <td align="center"><strong>Editar</strong></td>
   <td align="center"><strong>Remover</strong></td>
 </tr>
<?php do { ?>
<?php if ($rows > 0) { ?>
 <tr>
   <td align="center"><?php echo $array['id_not']; ?></td>
   <td align="center"></td>
   <td align="center"></td>
   <td align="center"></td>
   <td align="center"></td>
   <td align="center"><a href="fotos.php?id=<?php echo $array['id_not']; ?>"><img src="imagens/img.png" width="16" height="16" border="0" /></a></td>
   <td align="center"><a href="editar.php?id=<?php echo $array['id_not']; ?>"><img src="imagens/edit.png" width="16" height="16" border="0" /></a></td>
   <td align="center"><a href="#" id="mostrar"><img src="imagens/delete.png" width="16" height="16" border="0" /></a></td>
 </tr>
<?php }  ?>

<?php } while ($array = mysql_fetch_assoc($select)); ?>
</table>

 

então, ao clicar na imagem delete.png a seguinte uma div escondida com 2 botoes aparece com a função slidedown, Confirmar e Cancelar, ao clicar no botao Cancelar a div some, e o problema é o botão confirmar.

 

 

Aqui está a div a ser exibida:

<div class="msg" id="delete"><p>Você deseja remover a notícia ID = ?</p>
   <p><strong>Atenção:</strong> notícias deletadas não poderão ser recuperadas.</p>
   <div class="box" id="confirmar"><a href="#">Confirmar</a></div>
   <div class="box" id="cancelar"><a href="#">Cancelar</a></div>
   </div>

 

Aqui está o jquery com as funções:

<script type="text/javascript">
$(document).ready(function(){
$('#delete').hide();
$('#mostrar').click(function(event){
event.preventDefault();
$("#delete").slideDown("slow");
});
$('#cancelar').click(function(event){
event.preventDefault();
$("#delete").slideUp("slow");
});
});
</script>

 

Preciso colocar uma função no botao confirmar, pra pegar o id da noticia que foi clicada e jogar ele na pagina delete.php onde faz o delete da noticia.

Tentei de todo jeito e não obtive sucesso.

Conto com a ajuda de vocês, preciso de uma solução, não sei se tem como fazer do jeito que estou utilizando o código, até porque sou iniciante em js.

 

Obrigado e aguardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho uma idéia...

 

Coloque um atributo rel com o valor do ID no link para deletar a notícia:

 

<a rel="<?php echo $array['id_not']; ?>" href="#" id="mostrar">

 

Depois, na função do click pegue esse atributo e faça a requisição ajax passando ele como parametro para o arquivo delete.php

var id_not = $(this).attr("rel");

Compartilhar este post


Link para o post
Compartilhar em outros sites

mangakah obrigado pela ajuda, mais eu nao entendi muito bem, voce poderia me da um exemplo pronto se não é pedir muito, como eu disse sou iniciante em js, tennho estudado lido muito mais ainda tenho dificuldade.

Obrigado pela atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ops... só agora foi ver que você está tentando criar uma caixa de diálogo de confirmação personalizada. Eu sugiro então que você use a caixa de diálogo nativa do javascript, já que da forma como você está fazendo fica muito difícil identificar ao certo em qual notícia o usuário clicou.

 

A parte de passar o id da notícia para o atributo rel você entendeu, né?

 

 

Então na parte javascript, temos assim:

 

$('#mostrar').click(function(event){
      event.preventDefault();
      if (confirm('Tem certeza?')) {
         var id_not = $(this).attr("rel"); // identifico o id da notícia pegando-o no attr rel
         // Agora aqui você pode chamar uma função que fará uma requisição ajax ao aquivo delete.php para apagar a notícia selecionada.
      }

 

Mas claro, também é possível pegar o ID da notícia e ao mesmo tempo fazendo uso dessa caixa de diálogo personalizada que você está desenvolvendo. Basta armazenar esse id em uma variável global (fora das funções).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao, eu nao gostaria de usar a função nativa do jquery, gostaria de utilizar a caixa de diálogo de confirmação personalizada, o problema é armazenar o ID que da noticia que foi clicada para remover, e adicionar isso no jquery e chamar a função pelo ajax tenho pouco conhecimento nisso.

tem como me da uma força?

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faria assim:

 

<img class="delete" id="<?php echo $array['id_not']; ?>" src="imagens/delete.png" width="16" height="16" border="0" />

 

$(function($){
   $('img.delete').click(function(){
       var id = $(this).attr('id');
   })
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mastigadinho:

 

CSS da Caixa de Mensagens

.msg {
position: absolute;
width: 400px;
height: 200px;

/* Centralizar */
left: 50%;
top: 50%;
margin-left: -200px;
margin-top: -100px;

/* Não mostrar */
display: none;
}

 

O código HTML defe ser feito tal como coloquei acima

<a rel="<?php echo $array['id_not']; ?>" href="#" class="mostrar">

Observação importante: "mostrar" precisa estar em um atributo class pois só pode haver um elemento com um mesmo id em um documento.

 

O link deve ficar dessa forma:

<a rel="1" href="#" class="mostrar"><img src="imagens/delete.png" width="16" height="16" border="0" /></a>

 

 

Adicione um DIV para ser a caixa de diálogo para o resultado da requisição ajax

<div class="msg" id="resultado">
<!-- o resultado da consulta ajax aqui -->
</div>

 

 

Agora o javascript:

$(document).ready(function(){
 var not_id; // variavel nula que usaremos para armazenar o ultimo id selecionado


// $('#delete').hide(); -- Isso é desnecessário pois no CSS já especifiquei display: none;


$('.mostrar').click(function(event){ 
    event.preventDefault();
 not_id = $(this).attr("rel"); // armazena o id escolhido na variavel

    $("#delete").slideDown("slow");
});
$('#cancelar').click(function(event){
   event.preventDefault();
   $("#delete").slideUp("slow");
});


 // Adicionei esse bloco... 
 $('#confirmar').click(function(event){
    event.preventDefault();
    $("#delete").slideUp("slow");

 if (typeof(not_id) != "undefined") { // verifica se a variável está definida
	/*
		Agora aqui fazemos a requisição ajax para excluir a noticia
	*/

	$.get("delete.php", { id_noticia: not_id }, function(data) { // executa a requisição ajax
		$('#resultado').html(data); // escreve o resultado na caixa de resultados

	    $("#resultado").slideDown("slow"); // mostra uma caixa com o resultado
	    setTimeout(function() { $("#resultado").slideUp("fast"); }, 2000); // faz desaparecer apos dois segundos

     });
  }
   });

});

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi, testei aqui, só não consegui jogar o ID da noticia que foi clicada para a página delete.php e assim fazendo o delete, e o resultado do delete, caso falha ou sucesso como ela vai aparecer na caixa de resultado?

e outra coisa, como a caixa de dialogo fica na mesma pagina, tem como fazer para o row da table onde as noticias estao listadas desaparecer quando deletada?

e outra coisa, quando abrisse a caixa de dialogo eu gostaria que aparece o ID da noticia selecionada, tem como?

Abraços, aguardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

A seguinte linha chama o arquivo delete.php e passa para ele o id da notícia armazenado no campo 'id_noticia' e enviada pelo método GET.

 

$.get("delete.php", { id_noticia: not_id }, function(data) {

 

 

Dentro do arquivo delete.php você deve pegar o ID da noticia em $_GET['id_noticia'].

 

Executar o comando SQL para apagar a notícia, e ecoar o resultado, se sucesso ou falha.

Exemplo:

<?php
$id = $_GET['id_noticia'];

// conexão mysql aqui...

$query = mysql_query("DELETE FROM noticias WHERE id_not=" . $id);

if (!$query) { // não consegiu executar o comando SQL
   echo "Erro: Não foi possível excluir a noticia. (Comando não executado)";
   exit;
}

if (@mysql_affected_rows()) {
   echo "Noticia excluida com sucesso!";
} else {
   echo "Erro ao excluir noticia (Comando executado, mas nenhuma linha foi afetada)";
}

 

E isso já será captado pelo jQuery e inserido no DIV#resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito cara, obrigado mesmo pela sua ajuda, prabéns ae!

outra coisa, ao clicar na imagem pra remover a notícia, é exibida a caixa de diálogo, com os botões remover e confirmar, e a mensagem perguntando se deseja mesmo deletar a noticia ID =?, teria como enviar o ID da noticia selecionada para a caixa?

e outra coisa, quando eu deletar a ultima noticia listada, teria como sumir o row com os titulos?

<tr>
   <td align="center"><strong>ID</strong></td>
   <td align="center"><strong>Título</strong></td>
   <td align="center"><strong>Categoria</strong></td>
   <td align="center"><strong>Clicks</strong></td>
   <td align="center"><strong>Comentários</strong></td>
   <td align="center"><strong>Fotos</strong></td>
   <td align="center"><strong>Editar</strong></td>
   <td align="center"><strong>Deletar</strong></td>
 </tr>

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Atribua o atributo rel para o ID da notícia, e faça isso:

 

header("Content-Type: text/html; charset=ISO-8859-1", true);
if(!isset($_GET))
{
exit;
}

$id_noticia = addslashes($_GET['id_noticia']);
if(isset($id_noticia) && trim($id_noticia) != '')
{
$consulta_rows = mysql_query("SELECT * FROM noticias WHERE id_not='$id_noticia'");
$rows = mysql_num_rows($consulta_rows);
if($rows > 0)
{
	$consulta = mysql_query("DELETE FROM noticias WHERE id_not='$id_noticia'");
	if($consulta)
	{
		echo 'true';
	}
	else
	{
		echo 'Não foi possível deletar a notícia requisitada.';
	}
}
else
{
	echo 'A notícia que você tentou deletar não existe.';
}

}

 

javascript

 

$('#deletar').click(function()
{
var id_noticia = $('#deletar').attr('rel');
$.ajax({
	type: 'GET',
	url: 'Deletar_noticia.php',
	data: {'id_noticia': id_noticia},
	beforeSend: function()
	{
		alert('Deletando...');
	},
	success: function(html)
	{
		if(html == 'true')
		{
			alert('Notícia deletada com sucesso!');
		}
		else
		{
			alert(html);
		}		
	}
});
});

 

Espero ter ajudado ;)

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.