Gérer le retour de confirm() en JavaScript
Résolu
Mickael86480
Messages postés
660
Date d'inscription
Statut
Membre
Dernière intervention
-
Mickael86480 Messages postés 660 Date d'inscription Statut Membre Dernière intervention -
Mickael86480 Messages postés 660 Date d'inscription Statut Membre Dernière intervention -
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 :
Merci a ceux qui prendrons le temps de m'aider.
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:
- Hapedit
- Gerer stockage google - Guide
- Retour à la ligne excel formule - Guide
- Gerer les profils netflix - Guide
- Telecharger javascript - Télécharger - Langages
- Comment gérer les applications qui se lancent au démarrage - Guide
5 réponses
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:
et tu ajoutes une div en bas de ta page en display:none;
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>
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
{}
il te suffit de faire
if(confirm('Êtes-vous sûr de vouloir supprimer ce produit?') ==true)
{}
else
{}
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 :
Qu'en penses-tu?
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?
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>
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>
décidément je n'avait pas les yeux en face des trous:
if($_GET['suppr_prod'] && $_GET['suppr_prod']=='y')
a remplacer par:
C'est vrai qu'avec jQuery dialog tu aurait une boite de dialogue beaucoup plus jolie
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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:
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:
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
https://jquery.com/download/
et est-ce ceci dont tu parle?
https://jqueryui.com/