JavaScript

Résolu
Bonjour,

J'ai un problème avec la fonction confirm() du JavaScript. Le message s'affiche bien mais sauf que je clic sur OK ou annuler; la requête de suppression s'affiche toujours.

Voici mon code:

echo"<SCRIPT language='Javascript'>
var confirmation=confirm('Etes-vous sûr(e) de vouloir supprimer cet élément ?');
</SCRIPT>";
if (confirmation==true) {
if ((isset($_GET['ID_HE'])) && ($_GET['ID_HE'] != "")) {
$delete = "DELETE FROM heures WHERE ID_HE='".$_GET['ID_HE']."'";
if($Result = mysql_query($delete, $connect_db) OR DIE(mysql_error())) {
echo"<SCRIPT language='Javascript'>
alert('L heure a bien ete supprimée!');
top.location = 'Heures.php';
</SCRIPT>"
;exit();
}
}
}
else {
echo"<SCRIPT language='Javascript'>
alert('Annulation de la suppression !');
top.location = 'Heures.php';
</SCRIPT>"
;exit();

Mon souhait est que tout soit sur une même page de la même façon que j'ai pu gérer les Controls d'intégrité(ajout, suppression ainsi que les messages de confirmation sur les opérations) sur d'autres pages.

Dans l'attente d'une suite favorable, je vous en remercie et que le bon Dieu vous bénisse.

11 réponses

  1. salut

    bon j'ai pas la reponse mais...

    dans:
    echo"<SCRIPT language='Javascript'>
    var confirmation=confirm('Etes-vous sûr(e) de vouloir supprimer cet élément ?');
    </SCRIPT>";
    if (confirmation==true) { ...

    confirmation et en dehors du script , en gros ya du javascript dans le php !

    si tu veux faire une requete du suppression en passant par du js , il te faudra de l'ajax ! le php et coté serveur , donc il ne peut pas faire une requete une fois que ta page et afficher (cote client) d'ou l'ajax pour envoyer vers une autre page qui s'occuperas de delete sans besoin de recharger la page sur l'aquelle tu est...

    voila !

    0
    1. Bonjour

      merci pour ta repense mais serait'il possible que tu me propose un code stp ?
      0
      1. tu sais appeler une librairie ? (je pense notament a jquery )
        0
      2. pour le js ça donnerais un truc du genre (avec jquery)

        var confirmation=confirm('Etes-vous sûr(e) de vouloir supprimer cet élément ?');

        if (confirmation==true)
        {
        $.ajax({
        type: "POST",
        url: "lefichier.php",
        data: "ID_HE=<? $_GET['ID_HE']?>",
        success: function(msg){
        alert( msg );
        window.location=Heures.php;
        }
        });

        }

        et dans "lefichier.php"

        if ((isset($_POST['ID_HE'])) && ($_POST['ID_HE'] != "")) {
        $delete = "DELETE FROM heures WHERE ID_HE='".$_POST['ID_HE']."'";
        if($Result = mysql_query($delete, $connect_db) OR DIE(mysql_error())) {
        echo"L heure a bien ete supprimée!"}

        je garantie pas que ça marcheras du premier coups ! mais c'est un truc dans le genre !
        0
    2. il faudrait déjà séparer le javascript et le php

      ensuite comment tu supprimes ton élément ?? tu cliques sur un bouton ??
      0
      1. Bonjour

        Pour répondre à la question de maka54
        J'ai une page qui affiche les heures (se trouvant dans une bd mysql) et depuis cette page, je clique sur le bouton supprimer et le fichier exécute la requête de suppression ainsi qu'un message de confirmation du genre que l'élément est supprimé.
        Mais mon problème est que je souhaite qu'un message de confirmation s'affiche avant l'exécution de la requête de suppression et si l'utilisateur clic sur OK, la requête s'exécute sinon un message d'annulation de la suppression s'affiche.
        0
        1. ton javascript avec une belle fonction ajax ^^
          
          <SCRIPT language='Javascript'>
          
          
          function getXhr(){
          	var xhr=null;
          	if(window.XMLHttpRequest){ //test pour navigateur mozilla
          		xhr = new XMLHttpRequest();
          	}else{
          		if(window.ActiveXObject){ //test pour ie
          			try{
          				xhr = new ActiveXObject("Msxm12.XMLHTTP");
          			}
          			catch (e) {
          				xhr = new ActiveXObject("Microsoft.XMLHTTP");
          			}
          		}else{ //XMLHttpRequest non supporté
          			alert("Votre navigateur ne supporte pas les objets XMLHttpRequest");
          			xhr = false;
          		}
          	}
          	return xhr;
          }
          
          
          
          function suppression(id){
              if(confirm('Etes-vous sûr(e) de vouloir supprimer cet élément ?')){
                   	var xhr = getXhr(); //on récupère l'objet XMLHttpRequest
          		xhr.onreadystatechange = function(){
          			if(xhr.readyState == 4 && xhr.status == 200){ // on attend la fin de transmission
          				
                                       if(xhr.responseText == "ok"){
                                      document.getElementById(id).display = 'none';
                                      alert("ton element a bien été supprimé");
                                      }
          
          			}
          		}
          		var url = 'suppression.php';
          		xhr.open("POST",url,true);
          		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
          		xhr.send('ID_HE='+id);
              }
          }
          </SCRIPT>
          
          
          ta page où tu as tout tes truc a supprimer
          
          <span id="...">
          ...................ce que tu veux afficher..............
          + ton bouton de supression
          <input type="button" value="supprimer" onclick="suppression(id);">
          </span>
          
          l'id du span doit etre unique et correspondre au meme que dans ta fonction javascript a la ligne :
          
          document.getElementById(id).display = 'none';
          
          
          ensuite dans suppression .php
          
          <?php 
          if ((isset($_POST['ID_HE'])) && ($_POST['ID_HE'] != "")) {
          $delete = "DELETE FROM heures WHERE ID_HE='".$_POST['ID_HE']."'";
          $Result = mysql_query($delete, $connect_db) OR DIE(mysql_error()));
          
          if($Result){
              echo "ok";
          }
          ?>
          


          avec ce principe, tu n'as meme pas besoin d'appeler une nouvelle page
          0
          1. C'est là même chose.
            Donc que je clic sur ok ou annuler, la requête de suppression s'exécute toujours
            0
            1. donne ton code
              0
          2. Ok voici tout mon code (le fichier Heure.php):*

            <?php
            require_once ('../Acces/connect_db.php');

            if (($_SESSION["nom"] == '') OR ($_SESSION["prenom"] == '')) {
            echo"<SCRIPT language='Javascript'>
            alert('Veillez vous authentifiez !');
            top.location = '../index.php';
            </SCRIPT>"
            ;exit();
            }

            $query_heures= "SELECT * FROM heures ORDER BY ID_HE";
            $heures = mysql_query($query_heures, $connect_db) or die(mysql_error());
            $row_heures = mysql_fetch_assoc($heures);
            $totalRows_heures = mysql_num_rows($heures);

            ?>
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
            <html>
            <head>
            <title>Heures</title>
            <SCRIPT language='Javascript'>
            function getXhr(){
            var xhr=null;
            if(window.XMLHttpRequest){ //test pour navigateur mozilla
            xhr = new XMLHttpRequest();
            }else{
            if(window.ActiveXObject){ //test pour ie
            try{
            xhr = new ActiveXObject("Msxm12.XMLHTTP");
            }
            catch (e) {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
            }else{ //XMLHttpRequest non supporté
            alert("Votre navigateur ne supporte pas les objets XMLHttpRequest");
            xhr = false;
            }
            }
            return xhr;
            }

            function suppression(id){
            if(confirm('Etes-vous sûr(e) de vouloir supprimer cet élément ?')){
            var xhr = getXhr(); //on récupère l'objet XMLHttpRequest
            xhr.onreadystatechange = function(){
            if(xhr.readyState == 4 && xhr.status == 200){ // on attend la fin de transmission
            if(xhr.responseText == "ok"){
            document.getElementById(id).display = 'none';
            alert("ton element a bien été supprimé");
            }
            }
            }
            var url = 'suppression.php';
            xhr.open("POST",url,true);
            xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            xhr.send('ID_HE='+id);
            }
            }
            </SCRIPT>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
            </head>

            <body bgcolor="#ffffff">
            <table width="70%" border="0" cellpadding="1" align="center">
            <tr>
            <td colspan="2" align="center"><img src="../Images/UAHB.gif" width="790" border=1 bordercolor="#E2E2EC" height="150"></td>
            </tr>
            <tr>
            <th align="left" colspan="">
            Nom: <? echo $_SESSION['prenom']; ?> <? echo $_SESSION['nom']; ?>
                   
            Profil: <? echo $_SESSION['type']; ?>
            </th>
            <td align="right"><a href="../Acces/deconnect_db.php"><img border="0" src="../Images/logout.png" alt="Deconnexion" bgcolor="#FFFFFF"></a></font></b></td>
            </tr>
            <tr><th colspan="2"> </th></tr>
            <tr<th colspan="2">LISTE DES HEURES DE COURS</th></tr>
            <tr><th colspan="2"> </th></tr>
            <tr><td colspan="2"> </td></tr>
            <tr bgcolor="#888888">
            <th scope="col">HEURES</th>
            <td colspan="2"> </td>
            </tr>
            <?php do { if ($totalRows_heures > 0) {?>
            <tr bgcolor='#EFEFFF'>
            <td align="left">
            <a href="../Heures/Modifier.php?ID_HE=<?php echo $row_heures['ID_HE']; ?>">
            <?php echo $row_heures['Heure_HE']; ?>
            </a>
            </td>
            <td align="right">
             <a href="../Heures/Supprimer.php?ID_HE=<?php echo $row_heures['ID_HE']; ?>"><img border="0" src="../Images/delete2.png" alt="Supprimer <?php echo $row_heures['Heure_HE']; ?> !"></a>
            </tr>
            <?php } } while ($row_heures = mysql_fetch_assoc($heures)); ?>
            <tr><td colspan="2"> </td></tr>
            <tr><td colspan="2"> </td></tr>
            <tr>
            <td colspan="2" align="right">
            <a href="../Heures/Ajout.php"><img border="0" src="../Images/Icones/Plus.png" alt="Nouvelle heure"></a>
              <a href="../acceuil.php"><img border="0" src="../Images/Icones/left.gif" alt="Retour"></a></td>
            </td>
            <tr>
            <tr><td colspan="2"> </td></tr>
            <tr><td colspan="2" align="center"><img border="0" src="../Images/bas.gif" width="100%" bordercolor="#E2E2EC" height="20"><br>
            <h6>Copyright © 2010, Webmaster Arnaud MONKA. Tous droits reservés.</h6></td></tr>
            </table>
            </body>
            </html>
            <?php
            mysql_free_result($heures);
            ?>
            0
            1. Y a personne pour m'aider ?
              0
              1. <?php 
                require_once ('../Acces/connect_db.php'); 
                
                if (($_SESSION["nom"] == '') OR ($_SESSION["prenom"] == '')) { 
                echo"<SCRIPT language='Javascript'> 
                alert('Veillez vous authentifiez !'); 
                top.location = '../index.php'; 
                </SCRIPT>" 
                ;exit(); 
                } 
                
                $query_heures= "SELECT * FROM heures ORDER BY ID_HE"; 
                $heures = mysql_query($query_heures, $connect_db) or die(mysql_error()); 
                
                
                
                
                
                ?> 
                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
                <html> 
                <head> 
                <title>Heures</title> 
                <SCRIPT language='Javascript'> 
                function getXhr(){ 
                var xhr=null; 
                if(window.XMLHttpRequest){ //test pour navigateur mozilla 
                xhr = new XMLHttpRequest(); 
                }else{ 
                if(window.ActiveXObject){ //test pour ie 
                try{ 
                xhr = new ActiveXObject("Msxm12.XMLHTTP"); 
                } 
                catch (e) { 
                xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
                } 
                }else{ //XMLHttpRequest non supporté 
                alert("Votre navigateur ne supporte pas les objets XMLHttpRequest"); 
                xhr = false; 
                } 
                } 
                return xhr; 
                } 
                
                function suppression(id){ 
                
                if(confirm('Etes-vous sûr(e) de vouloir supprimer cet élément ?')){ 
                var xhr = getXhr(); //on récupère l'objet XMLHttpRequest 
                xhr.onreadystatechange = function(){ 
                if(xhr.readyState == 4 && xhr.status == 200){ // on attend la fin de transmission 
                if(xhr.responseText == "ok"){ 
                document.getElementById(id).style.display = 'none'; 
                alert("ton element a bien été supprimé"); 
                } 
                } 
                } 
                var url = '../Heures/Supprimer.php'; 
                xhr.open("POST",url,true); 
                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
                xhr.send('ID_HE='+id); 
                } 
                } 
                </SCRIPT> 
                <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
                </head> 
                
                <body bgcolor="#ffffff"> 
                <table width="70%" border="0" cellpadding="1" align="center"> 
                <tr> 
                <td colspan="2" align="center"><img src="../Images/UAHB.gif" width="790" border=1 bordercolor="#E2E2EC" height="150"></td> 
                </tr> 
                <tr> 
                <th align="left" colspan=""> 
                Nom: <? echo $_SESSION['prenom']; ?> <? echo $_SESSION['nom']; ?> 
                        
                Profil: <? echo $_SESSION['type']; ?> 
                </th> 
                <td align="right"><a href="../Acces/deconnect_db.php"><img border="0" src="../Images/logout.png" alt="Deconnexion" bgcolor="#FFFFFF"></a></font></b></td> 
                </tr> 
                <tr><th colspan="2"> </th></tr> 
                </table><ul style="width:70%;margin:auto;"> 
                 <li style="padding:0;margin:0;"> 
                  <span style="float:left;"> 
                      HEURES
                  </span> 
                  <span style="float:right;"> 
                 
                  </span> 
                
                <?php while($row_heures = @mysql_fetch_array($heures)){ 
                
                echo ' 
                 <li style="padding:0;margin:0;" id="element_'.$row_heures['ID_HE'].'"> 
                  <span style="float:left;"> 
                   <a href="../Heures/Modifier.php?ID_HE='.$row_heures['ID_HE'].'">'.$row_heures['Heure_HE'].'</a> 
                  </span> 
                  <span style="float:right;"> 
                   <a href="javascript:void(0);" onclick="suppression(\'element_'.$row_heures['ID_HE'].'\');"><img border="0" src="../Images/delete2.png"  style="border:0;" alt="Supprimer'.$row_heures['Heure_HE'].'!"></a> 
                  </span> 
                  </li>'; 
                
                 } ?> 
                  </ul>
                <table width="70%" border="0" cellpadding="1" align="center"> 
                <tr><td colspan="2"> </td></tr> 
                <tr><td colspan="2"> </td></tr> 
                <tr> 
                <td colspan="2" align="right"> 
                <a href="../Heures/Ajout.php"><img border="0" src="../Images/Icones/Plus.png" alt="Nouvelle heure"></a> 
                  <a href="../acceuil.php"><img border="0" src="../Images/Icones/left.gif" alt="Retour"></a></td> 
                </td> 
                <tr> 
                <tr><td colspan="2"> </td></tr> 
                <tr><td colspan="2" align="center"><img border="0" src="../Images/bas.gif" width="100%" bordercolor="#E2E2EC" height="20"><br> 
                <h6>Copyright © 2010, Webmaster Arnaud MONKA. Tous droits reservés.</h6></td></tr> 
                </table> 
                </body> 
                </html> 
                <?php 
                mysql_free_result($heures); 
                ?>


                Voilà une esquisse d'un code qui marche, a toi de corriger les eventuels choses qui ne concordent pas a ton cas, j'ai remplacé ton tableau par une liste accompagné d'un ID qui sont utilisés pour l'AJAX, d'ailleurs, je suis pas sur que tu est compris son fonctionnement, regarde un peu ce code aux endroits que j'ai modifié et si tu as des questions, demande moi
                0
                1. ok je m'y met tout de suite
                  je te fais signe toute à l'heure
                  Merci encore
                  0
                  1. Bonjour

                    Je viens de résoudre le problème
                    il suffisait juste d'ajouter ce bout de code dans mon fichier Heures.php qui fait appel au fichier Supprimer.php (entre <head> et </head>)

                    <script type="text/javascript">
                    function suppression(){
                    if(confirm('Etes-vous sûr(e) de vouloir supprimer cet élément ?')){
                    document.location.href='Supprimer.php?ID_HE=<?php echo $row_heures['ID_HE']; ?>';
                    }else{
                    document.location.href='Heures.php';
                    }
                    }
                    </script>

                    Merci comme même pour ton aide Mr maka54
                    0