Confirmation avant suppression de données

Résolu/Fermé
violette001 - 8 févr. 2010 à 17:07
 bob - 8 févr. 2010 à 21:28
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 lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
8 févr. 2010 à 17:40
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 lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
8 févr. 2010 à 17:15
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
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
alors fait : un truc du genre

<a href="" onClick="window.alert('hello world! ')">test message</a>
0
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
8 févr. 2010 à 17:43
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
8 févr. 2010 à 17:50
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
8 févr. 2010 à 17:53
ahh bon moi ça marche dsl
0
zcrew Messages postés 231 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
8 févr. 2010 à 17:34
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 lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
8 févr. 2010 à 17:46
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
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
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
derien
0