Gérer le retour de confirm() en JavaScript

Résolu/Fermé
Mickael86480 Messages postés 660 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 - Modifié par Mickael86480 le 2/05/2013 à 17:46
Mickael86480 Messages postés 660 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 - 6 mai 2013 à 12:23
Bonjour, je voudrai savoir comment faire pour gérer la valeur de retour de confirm() en JavaScript.

Je m'explique : Je créé une petite appli de gestion de stock où il y a une partie pour supprimer un produit de la base de données. Or avant de réellement supprimer le produit je voudrais que l'utilisateur confirme son action (afin d'éviter les erreurs).

L'affichage du message de confirmation : ok
Suppression : ok
Redirection lors de l'erreur : X (donc suppression objet effectué)

Voici mon code :

<html> 
<head> 
<title>Sans Titre</title> 
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> 
<meta name="generator" content="HAPedit 2.6"> 
<link href="menu_php.css" rel="stylesheet" type="text/css"> 
<link href="plan.css" rel="stylesheet" type="text/css"> 
</head> 
<body> 
<script language="JavaScript"> 
function verif(){ 
check = confirm('Êtes-vous sûr de vouloir supprimer ce produit?') 
if(check==true){window.open("supp.php", "_self")} 
else{window.open("acceuil.php","_self")} 
} 
</script> 
<?php 

$a=$_POST['hid']; 

include ("connection.php"); 

echo'<center><strong><u><h1>GESTSTOCK</h1><h3>votre application de gestion de stock d\'entreprise.</h3></u><br />'; 

$tab=array(); 
$materiel=''; 
$i=0; 

$requete="SELECT genre, materiel FROM stock WHERE quantité <= min ORDER BY materiel"; 
$query=mysql_query($requete); 

echo'<form method="POST" action="#"> 
      <div class="pps"> 
       <center> 
       Afin d\'identifier le produit à retirer du stock, merci de le sélectionner dans le menu ci-dessous.<br /> 
       Les lignes écritent en rouge correspondent à un manque de stock.<br /><br /> 
        <strong>Matériel :</strong> <SELECT name="mat">'; 

while($tableau=mysql_fetch_array($query)){ 
 if($materiel != $tableau['materiel']){ 
  $i=$i+1; 
  $materiel=$tableau['materiel']; 
  $tab[$i]=$materiel; 
  echo'<OPTION VALUE="'.$tableau['materiel'].'" style="color:#B9121B;">'.$tab[$i].'</OPTION>'; 
 } 
} 
$requete="SELECT genre, materiel FROM stock WHERE quantité > min ORDER BY materiel"; 
$query=mysql_query($requete); 

while($tableau=mysql_fetch_array($query)){ 
 if($materiel != $tableau['materiel']){ 
  $i=$i+1; 
  $materiel=$tableau['materiel']; 
  $tab[$i]=$materiel; 
  echo'<OPTION VALUE="'.$tableau['materiel'].'" style="color:#006633;">'.$tab[$i].'</OPTION>'; 
 } 
} 
echo' </SELECT> 
      <br /><br /><input type="submit" name="ret" value="Retirer" onclick="verif()"> 
      <input type="hidden" name="hid" value="ok"> 
      </center> 
      </div> 
     </form>'; 
if($a){ 
 $requete="DELETE FROM stock WHERE materiel=\"".$_POST['mat']."\""; 
 $query=mysql_query($requete)or die(mysql_error()); 
    ?> 
     <script language="JavaScript"> 
      alert("Produit supprimé"); 
     </script> 
    <?php 
} 
?> 
</body> 
</html>


Merci a ceux qui prendrons le temps de m'aider.
A voir également:

5 réponses

Natio78 Messages postés 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 96
3 mai 2013 à 11:11
bonjour,

as tu regardé du côté de jQuery et jQuery UI qui pourrait bien t'être utile sur ce coup là.
tiens regarde c'est ce que tu veux faire je crois:

https://jqueryui.com/dialog/#modal-confirmation

pour ce qui est du code tu pourrais l'inclure assez facilement ça ressemblerait à quelque chose comme ça:

function verif(){ 
 $( "#dialog-confirm" ).dialog({
      resizable: false,
      height:140,
      modal: true,
      buttons: {
        "Supprimer ce produit": function() {
           window.open("supp.php", "_self");
        },
        Annuler: function() {
          $( this ).dialog( "close" );
        }
      }
    });
  });
}



et tu ajoutes une div en bas de ta page en display:none;

 <div id="dialog-confirm" title="Confirmation de suppression" style="display:none">
Êtes vous sur de bien vouloir supprimer ce produit?
</div>

0
Mickael86480 Messages postés 660 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 35
3 mai 2013 à 11:59
D'abord, merci de ta réponse. Le JQuery est nouveau pour moi.

J'ai fais ce que tu m'as dis, du moins j'espère :)

Le problème est que je n'ai plus le message de confirmation (l'ais-je mal placé peut-être :) je ne savais pas comment l'intégré donc je l'ai laissé entre le balise JavaScript)

Voici mon code (les modifications sont en gras et italique:

<html>
<head>
<title>Sans Titre</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="HAPedit 2.6">
<link href="menu_php.css" rel="stylesheet" type="text/css">
<link href="plan.css" rel="stylesheet" type="text/css">
</head>
<body>
<script language="JavaScript">
function verif(){ 
 $( "#dialog-confirm" ).dialog({
      resizable: false,
      height:140,
      modal: true,
      buttons: {
        "Supprimer ce produit": function() {
           window.open("supp.php", "_self");
        },
        Annuler: function() {
          $( this ).dialog( "close" );
        }
      }
    });
  });
}
</script>
<?php

include ("connection.php");

echo'<center><strong><u><h1>GESTSTOCK</h1><h3>votre application de gestion de stock d\'entreprise.</h3></u><br />';

$tab=array();
$materiel='';
$i=0;

$requete="SELECT genre, materiel FROM stock WHERE quantité <= min ORDER BY materiel";
$query=mysql_query($requete);

echo'<form method="POST" action="#">
      <div class="pps">
       <center>
       Afin d\'identifier le produit à retirer du stock, merci de le sélectionner dans le menu ci-dessous.<br />
       Les lignes écritent en rouge correspondent à un manque de stock.<br /><br />
        <strong>Matériel :</strong> <SELECT name="mat">';

while($tableau=mysql_fetch_array($query)){
 if($materiel != $tableau['materiel']){
  $i=$i+1;
  $materiel=$tableau['materiel'];
  $tab[$i]=$materiel;
  echo'<OPTION VALUE="'.$tableau['materiel'].'" style="color:#B9121B;">'.$tab[$i].'</OPTION>';
 }
}
$requete="SELECT genre, materiel FROM stock WHERE quantité > min ORDER BY materiel";
$query=mysql_query($requete);

while($tableau=mysql_fetch_array($query)){
 if($materiel != $tableau['materiel']){
  $i=$i+1;
  $materiel=$tableau['materiel'];
  $tab[$i]=$materiel;
  echo'<OPTION VALUE="'.$tableau['materiel'].'" style="color:#006633;">'.$tab[$i].'</OPTION>';
 }
}
echo' </SELECT>
      <br /><br /><input type="submit" name="ret" value="Retirer" onclick="verif()">
      </center>
      </div>
     </form>';
if(isset($_POST['ret'])){
 $requete="DELETE FROM stock WHERE materiel=\"".$_POST['mat']."\"";
 $query=mysql_query($requete)or die(mysql_error());
    ?>
     <script language="JavaScript">
      <div id="dialog-confirm" title="Confirmation de suppression" style="display:none">
Êtes vous sur de bien vouloir supprimer ce produit?
</div>
     </script>
    <?php
}
?>
</body>
</html>
0
Natio78 Messages postés 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 96
Modifié par Natio78 le 3/05/2013 à 14:49
il faut que tu télécharges jquery et jquery UI et que tu inclues les fichiers
1) copier coller ce fichier => http://code.jquery.com/jquery-1.9.1.min.js et le mettre dans un fichier que tu appeleras jquery.js par exemple

2) télécharger jquery UI (https://jqueryui.com/download/ ) et que tu inclus jquery.ui.js dans ton fichier

du style en haut avant tes balises <script></script> tu mets ça:

 <script type="text/javascript" src="js/jquery.js" ></script> 
 <script type="text/javascript" src="js/jquery-ui/js/jquery-ui.min.js" ></script> 


bien sur il faut que le fichier jquery.js et le dossier jquery-ui soit dans un dossier js ici. A toi de voir.
Une fois que tu auras fais ça, ton code fonctionnera

edit: ton div en bas de page ne doit pas être entre les balises <script language="JavaScript">
c'est juste un div normal
0
Mickael86480 Messages postés 660 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 35
3 mai 2013 à 20:07
Dois-je copier ceci dans un fichier js?

https://jquery.com/download/

et est-ce ceci dont tu parle?

https://jqueryui.com/
0
pignou0 Messages postés 51 Date d'inscription samedi 2 mars 2013 Statut Membre Dernière intervention 28 mai 2013 2
3 mai 2013 à 17:39
Le retour de confirm se fait par true ou false, true si l'utilisateur appuie sur OK et false sinon

il te suffit de faire

if(confirm('Êtes-vous sûr de vouloir supprimer ce produit?') ==true)
{}
else
{}
0
Mickael86480 Messages postés 660 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 35
Modifié par Mickael86480 le 3/05/2013 à 19:52
Merci pour ta réponse.

J'ai complété ton exemple, le problème c'est que plus rien ne s'affiche, je pense que le problème viens de mon rajout :)

voici mon code de la fonction :

<script language="JavaScript">  
function verif(){   
 if(confirm('Êtes-vous sûr de vouloir supprimer ce produit?') ==true)  
{<?php $requete="DELETE FROM stock WHERE materiel=\"".$_POST['mat']."\"";  
 $query=mysql_query($requete)or die(mysql_error());  
 ?>
alert('Produit supprimé');}  
else  
{window.open("acceuil.php","_self")}  
</script>


Qu'en penses-tu?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
4 mai 2013 à 13:12
la tu mélanges le php avec du javascript ça ne peut pas fonctionner
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
3 mai 2013 à 23:06
sans jQuery, en modifiant juste un peu ton code d'origine:

<html> 
<head> 
<title>Sans Titre</title> 
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> 
<meta name="generator" content="HAPedit 2.6"> 
<link href="menu_php.css" rel="stylesheet" type="text/css"> 
<link href="plan.css" rel="stylesheet" type="text/css"> 
</head> 
<body> 
<script type="text/javascript" >

function confirm_suppr(id_lire){		
	//on lit quel produit a été sélectionné (c'est mieux de l'indiquer dans la boite confirm)
	var produit=document.getElementById(id_lire).value;
	if(confirm('Êtes-vous sûr de vouloir supprimer ce produit: '+produit+" ? ")){
		//si ok on passe l'info dans l'URL
		document.getElementById(id_form).action +='?suppr_prod=y';
		//on soumet le formulaire, il suffit dans le script de test que l'on a bien suppr_prod=y dans l'URL (en $_GET)
		document.forms['form_produit'].submit();
	}else{
		//si pas confirm
		return false; //dans ce cas on réaffiche la page des produits
		//ou
		// window.location.href="acceuil.php";
	}
} 
</script> 
<?php 

$a=$_POST['hid']; 

include ("connection.php"); 

echo'<center><strong><u><h1>GESTSTOCK</h1><h3>votre application de gestion de stock d\'entreprise.</h3></u><br />'; 

$tab=array(); 
$materiel=''; 
$i=0; 

$requete="SELECT genre, materiel FROM stock WHERE quantité <= min ORDER BY materiel"; 
$query=mysql_query($requete); 
//on met un name à la <form et un id au <select 
echo'<form name="form_produit" method="POST" action="'.$_SERVER['PHP_SELF'].'"> 
      <div class="pps"> 
       <center> 
       Afin d\'identifier le produit à retirer du stock, merci de le sélectionner dans le menu ci-dessous.<br /> 
       Les lignes écritent en rouge correspondent à un manque de stock.<br /><br /> 
        <strong>Matériel :</strong> <select name="mat" id="mat" >'; 

while($tableau=mysql_fetch_array($query)){ 
 if($materiel != $tableau['materiel']){ 
  $i=$i+1; 
  $materiel=$tableau['materiel']; 
  $tab[$i]=$materiel; 
  echo'<option value="'.$tableau['materiel'].'" style="color:#B9121B;">'.$tab[$i].'</option>'; 
 } 
} 
$requete="SELECT genre, materiel FROM stock WHERE quantité > min ORDER BY materiel"; 
$query=mysql_query($requete); 

while($tableau=mysql_fetch_array($query)){ 
 if($materiel != $tableau['materiel']){ 
  $i=$i+1; 
  $materiel=$tableau['materiel']; 
  $tab[$i]=$materiel; 
  echo'<option value="'.$tableau['materiel'].'" style="color:#006633;">'.$tab[$i].'</option>'; 
 } 
}

//tel que tu fais les matériels en stock <=min sont au début et les autres après
//pour tous les mettre ensemble dans l'ordre avec des couleurs différentes  et en plus simple:
//pour tester, otes les /*   */ et commentes tes 2 boucles while
/*
$requete="SELECT genre, materiel,quantité,min FROM stock ORDER BY materiel"; 
$query=mysql_query($requete); 
while($tableau=mysql_fetch_array($query)){ 
   echo'<option value="'.$tableau['materiel'].'"';
   //style différent suivant état du stock
   if($tableau['quantite'] <= $tableau['min']){
		echo 'style="color:#B9121B;"';
	}elseif($tableau['quantite'] > $tableau['min']){
		echo 'style="color:#006633;"';
	}
   echo '>'.$tableau['materiel'].'</option>'; 
 } 
} 
*/
//ci dessous le bouton Retirer ne doit pas être à la fois type="submit" et déclencher une fct js par onclick
//j'ai changé le nom de ta fonction et on lui passe l'id du select en argument 
echo' </select> 
      <br /><br /><input type="button" name="ret" value="Retirer" onclick="confirm_suppr(\'mat\')"> 
      <input type="hidden" name="hid" value="ok"> 
      </center> 
      </div> 
     </form>'; 
if($_GET['suppr_prod'] && $_GET['suppr_prod']=='y'){
	//si on a l'info suppr_prod dans l'url c'est que la confirm a été ok
	requete="DELETE FROM stock WHERE materiel=\"".$_POST['mat']."\""; 
	$query=mysql_query($requete)or die(mysql_error()); 
    ?> 
     <script language="JavaScript"> 
      alert("Produit supprimé"); 
     </script> 
    <?php 
} 
?> 
</body> 
</html>

0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
4 mai 2013 à 13:11
PS, j'était pas bien réveillé hier soir:
<html> 
<head> 
<title>Sans Titre</title> 
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> 
<meta name="generator" content="HAPedit 2.6"> 
<link href="menu_php.css" rel="stylesheet" type="text/css"> 
<link href="plan.css" rel="stylesheet" type="text/css"> 
</head> 
<body> 
<script type="text/javascript" >

function confirm_suppr(id_form,id_lire){		
	//on lit quel produit a été sélectionné (c'est mieux de l'indiquer dans la boite confirm)
	var produit=document.getElementById(id_lire).value;
	if(confirm('Êtes-vous sûr de vouloir supprimer ce produit: '+produit+" ? ")){
		//si ok on passe l'info dans l'URL
		document.getElementById(id_form).action +='?suppr_prod=y';
		//on soumet le formulaire, il suffit dans le script de test que l'on a bien suppr_prod=y dans l'URL (en $_GET)
		document.forms['form_produit'].submit();
	}else{
		//si pas confirm
		return false; //dans ce cas on réaffiche la page des produits
		//ou
		// window.location.href="acceuil.php";
	}
} 
</script> 
<?php 

$a=$_POST['hid']; 

include ("connection.php"); 

echo'<center><strong><u><h1>GESTSTOCK</h1><h3>votre application de gestion de stock d\'entreprise.</h3></u><br />'; 

$tab=array(); 
$materiel=''; 
$i=0; 

$requete="SELECT genre, materiel FROM stock WHERE quantité <= min ORDER BY materiel"; 
$query=mysql_query($requete); 
//on met un name et un id à la <form et un id au <select 
echo'<form name="form_produit" id="form_produit" method="POST" action="'.$_SERVER['PHP_SELF'].'"> 
      <div class="pps"> 
       <center> 
       Afin d\'identifier le produit à retirer du stock, merci de le sélectionner dans le menu ci-dessous.<br /> 
       Les lignes écritent en rouge correspondent à un manque de stock.<br /><br /> 
        <strong>Matériel :</strong> <select name="mat" id="mat" >'; 

while($tableau=mysql_fetch_array($query)){ 
 if($materiel != $tableau['materiel']){ 
  $i=$i+1; 
  $materiel=$tableau['materiel']; 
  $tab[$i]=$materiel; 
  echo'<option value="'.$tableau['materiel'].'" style="color:#B9121B;">'.$tab[$i].'</option>'; 
 } 
} 
$requete="SELECT genre, materiel FROM stock WHERE quantité > min ORDER BY materiel"; 
$query=mysql_query($requete); 

while($tableau=mysql_fetch_array($query)){ 
 if($materiel != $tableau['materiel']){ 
  $i=$i+1; 
  $materiel=$tableau['materiel']; 
  $tab[$i]=$materiel; 
  echo'<option value="'.$tableau['materiel'].'" style="color:#006633;">'.$tab[$i].'</option>'; 
 } 
}

//tel que tu fais les matériels en stock <=min sont au début et les autres après
//pour tous les mettre ensemble dans l'ordre avec des couleurs différentes  et en plus simple:
//pour tester, otes les /*   */ et commentes tes 2 boucles while
/*
$requete="SELECT genre, materiel,quantité,min FROM stock ORDER BY materiel"; 
$query=mysql_query($requete); 
while($tableau=mysql_fetch_array($query)){ 
   echo'<option value="'.$tableau['materiel'].'"';
   //style différent suivant état du stock
   if($tableau['quantite'] <= $tableau['min']){
		echo 'style="color:#B9121B;"';
	}elseif($tableau['quantite'] > $tableau['min']){
		echo 'style="color:#006633;"';
	}
   echo '>'.$tableau['materiel'].'</option>'; 
 } 
} 
*/
//ci dessous le bouton Retirer ne doit pas être à la fois type="submit" et déclencher une fct js par onclick
//j'ai changé le nom de ta fonction et on lui passe l'id du select en argument 
echo' </select> 
      <br /><br /><input type="button" name="ret" value="Retirer" onclick="confirm_suppr(\'form_produit\',\'mat\')"> 
      <input type="hidden" name="hid" value="ok"> 
      </center> 
      </div> 
     </form>'; 
if($_GET['suppr_prod'] && $_GET['suppr_prod']=='y'){
	//si on a l'info suppr_prod dans l'url c'est que la confirm a été ok
	requete="DELETE FROM stock WHERE materiel=\"".$_POST['mat']."\""; 
	$query=mysql_query($requete)or die(mysql_error()); 
    ?> 
     <script language="JavaScript"> 
      alert("Produit supprimé"); 
     </script> 
    <?php 
} 
?> 
</body> 
</html>
0
Mickael86480 Messages postés 660 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 35
4 mai 2013 à 13:20
Merci marche niquel, sauf quelques petites erreurs à mondifier, en cour mais merci Alain ainsi qu'aux autres de leurs réponses
0
Mickael86480 Messages postés 660 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 35
Modifié par Mickael86480 le 4/05/2013 à 14:20
Un avertissement persiste (comme l'appli est destinée à du local cela est ennuyeux)

voici l'erreur :

Notice: Undefined index: suppr_prod in C:\wamp\www\sites\entreprise\sites\test_local\int\supp.php on line 96

"suppr_prod" étant le nom du $_GET comment puis-je l'initialisé?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
4 mai 2013 à 18:29
décidément je n'avait pas les yeux en face des trous:

if($_GET['suppr_prod'] && $_GET['suppr_prod']=='y')

a remplacer par:

if(isset($_GET['suppr_prod']) && $_GET['suppr_prod']=='y')



C'est vrai qu'avec jQuery dialog tu aurait une boite de dialogue beaucoup plus jolie
0
Mickael86480 Messages postés 660 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 35
4 mai 2013 à 18:51
Merci problème résolu. Je vais voir pour le JQuery. Un tuto a me conseiller peut-être?
0
Natio78 Messages postés 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 96
6 mai 2013 à 10:13
et puis avec jquery et ui tu pourrais assez aisément séparer le js du php et le traitement de la requête.
Là il y a tout dans la même page ça risque de ne pas être très pratique dans le futur si tu veux apporter des modifications.
Pour ce qui est du tuto pour le dialog de UI tu as:
https://jqueryui.com/dialog/

ou sinon en beaucoup plus détaillé:

https://openclassrooms.com/fr/courses
0

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

Posez votre question
Mickael86480 Messages postés 660 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 35
6 mai 2013 à 12:23
Merci à vous tous d'avoir pris le temps de me répondre et de résoudre mon problème. Merci également à Natio pour les tutos, à étudier.
0