Confirmation avant suppression de données

Résolu
violette001 -  
 bob -
Bonjour,
Je cheche un moyen pour demander une confirmation avant de supprimer définitivement des données via un lien.
Voici un bout de code si cela peut aider...
...
if (isset($_GET['supprimer_news'])) // Si on demande de supprimer une news
{
// Alors on supprime la news correspondante
// On protège la variable "id_news" pour éviter une faille SQL
$_GET['supprimer_news'] = addslashes($_GET['supprimer_news']);
mysql_query('DELETE FROM news WHERE id=\'' . $_GET['supprimer_news'] . '\'');
}
...
<td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
...
J'ai essayé avec un onclick (voir ci-dessous) mais je n'ai pas de demande de confirmation, les données sont directement supprimées.
<td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '" onclick="if(window.confirm('Etes vous sur ?')){return true;}else{return false;}">'; ?>Supprimer</a></td>

Quelqu'un a-t-il une idée ?

Merci d'avance !
A voir également:

7 réponses

zcrew Messages postés 231 Date d'inscription   Statut Membre Dernière intervention   25
 
Ah oui , tu créés une page ton_script_de_suppression.php avec

<?php
f (isset($_GET['id'])) // Si on demande de supprimer une news
{
// Alors on supprime la news correspondante
// On protège la variable "id_news" pour éviter une faille SQL
$_GET['supprimer_news'] = addslashes($_GET['supprimer_news']);
mysql_query('DELETE FROM news WHERE id=\'' . $_GET['supprimer_news'] . '\'');
}
?>
1
zcrew Messages postés 231 Date d'inscription   Statut Membre Dernière intervention   25
 
Je vois 2 possibilités :
- 1. tu utilises une page 'tampon' de confirmation avant la suppression
- 2. tu utilises le onclick pour déclencher la suppression avec ajax -> tu mets le code de suppression dans une page à part
0
violette001
 
C'est bien ça mon problème, c'est que j'aimerais rester sur la même page sur laquelle sont reprises toutes mes données sous forme de listing avec possibilité de modifier ou de supprimer chaque donnée.
J'aimerais utiliser le onclick mais dans ton exemple tu cites Ajax, malheureusement, je ne connais pas du tout... Je pensais le tenter en Javascript (c'est l'exemple que je donne dans mon premier post) mais cela ne fonctionne pas...
Je continue à chercher de mon côté mais votre aide me sera très précieuse... merci !
0
bob
 
alors fait : un truc du genre

<a href="" onClick="window.alert('hello world! ')">test message</a>
0
violette001
 
Non, toujours rien. Quand je clique sur supprimer, les données sont directement supprimées...
Voici ce que j'ai mis :

<td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '" onclick="window.alert('Hello world !')">'; ?>Supprimer</a></td>

Dois-je mettre autre chose ailleurs dans ma page ?
0
bob > violette001
 
celui la je pense que c bon

<a href="liste_news.php?supprimer_news=<?php echo $donnees['id'] ?>"onclick="return confirm('test?');">supprimer</a>
0
violette001 > bob
 
Aucune différence entre :

<td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '" onclick="return confirm('test?');">'; ?>Supprimer</a></td>

et :

<td><a href="liste_news.php?supprimer_news=<?php echo $donnees['id'] ?>"onclick="return confirm('test?');">supprimer</a></td>

Les données sont supprimées directement et aucun message n'apparait...
0
bob > violette001
 
ahh bon moi ça marche dsl
0
zcrew Messages postés 231 Date d'inscription   Statut Membre Dernière intervention   25
 
Ajax te permet d'appeler un script sur une autre page pour modifier le contenu de la page actuelle

Dans ton cas je vois un <div> bien identifié, par exemple <div id="d_xxx">, avec dedans ton lien pour supprimer : <a href="" onclick="effacer(xxx)"> effacer l'id xxx</a>
les xxx sont toujours le même id du même objet à supprimer


Dans ton <head></head> tu places ça :
function effacer(id) {
if (confirm("Effacer" + id + " ?"))
{

var url;
url = "http://ton_script_de_suppression.php?id=" + id;
var httpRequest = false;

if (window.XMLHttpRequest) { // Mozilla, Safari,...
httpRequest = new XMLHttpRequest();
if (httpRequest.overrideMimeType) {
httpRequest.overrideMimeType('text/xml');
// Voir la note ci-dessous à propos de cette ligne
}
}
else if (window.ActiveXObject) { // IE
try {
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}

if (!httpRequest) {
//alert('Abandon :( Impossible de créer une instance XMLHTTP');
return false;
}
httpRequest.onreadystatechange = function() { effacer2(httpRequest, id); };
httpRequest.open('GET', url, true);
httpRequest.send(null);
}
}

function effacer2(httpRequest, id) {
if (httpRequest.readyState == 4) {
if (httpRequest.status == 200) {
document.getElementById('div_'+id).value = httpRequest.responseText;
}
}
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zcrew Messages postés 231 Date d'inscription   Statut Membre Dernière intervention   25
 
Re (je veux aller trop vite) :


function effacer2(httpRequest, id) {
if (httpRequest.readyState == 4) {
if (httpRequest.status == 200) {
document.getElementById('div_'+id).innertHtml = '';
}
}
}

au lieu de ce qu j'ai mis au dessus
0
violette001
 
Malheureusement Zcrew, je n'y comprends rien à l'Ajax...

Par contre, j'aimerais trouver une solution pour le onclick... Pourquoi rien ne s'affiche ?

Merci d'avance à tous pour vos réponses...
0
violette001
 
Va y est, ça marche enfin... Merci bob, tu avais donc raison :

<td><a href="liste_news.php?supprimer_news=<?php echo $donnees['id'] ?>" onclick="return confirm('Etes-vous certain de vouloir supprimer cette news définitivement ?');">supprimer</a></td>

Super !!!
0
bob
 
derien
0