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 !
Configuration: Windows XP Internet Explorer 7.0

7 réponses

  1. zcrew Messages postés 251 Statut Membre 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
  2. zcrew Messages postés 251 Statut Membre 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
    1. 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
  3. bob
     
    alors fait : un truc du genre

    <a href="" onClick="window.alert('hello world! ')">test message</a>
    0
    1. 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
      1. 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
      2. 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
      3. bob > violette001
         
        ahh bon moi ça marche dsl
        0
  4. zcrew Messages postés 251 Statut Membre 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. zcrew Messages postés 251 Statut Membre 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
  7. 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
  8. 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
    1. bob
       
      derien
      0