IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

confirm et if


Sujet :

JavaScript

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 265
    Points : 117
    Points
    117
    Par défaut confirm et if
    Bonjour à tous.

    Dépuis deux jours, je suis confromté à un problème sur l'instruction if. Je ne comprend pas, je suis peut-être ...Voici le problème:

    Que je clique sur "ok" ou sur "Annuler", l'enregistrement est supprimé. Je vous donne le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script language="Javascript">
    		resultat = window.confirm ("Voulez-vous supprimer cette région ?");
    		if(resultat == true){
    			<?php
                                    $rq_del = "DELETE FROM bd_acepsuivi.tb_region WHERE code_reg ='" .$code_region. "'";
                                    $resultat = mysql_query($rq_del);
                            ?>
    			alert ("Région supprimée avec succès.");
    		}
    		window.location.replace ("region_ajout.php");			
    	</script>
    Merci de votre aide.

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Bonjour,

    Je ne sais plus si confirm renvoie une chaine de caractères ou un boolean. Essayez tjs ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(resultat){
     
    //ou bien
    if(resultat == "true"){

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 265
    Points : 117
    Points
    117
    Par défaut
    Citation Envoyé par vermine Voir le message
    Bonjour,

    Je ne sais plus si confirm renvoie une chaine de caractères ou un boolean. Essayez tjs ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(resultat){
     
    //ou bien
    if(resultat == "true"){

    Merci vermine, confirm renvoie un boolean. Alors if(resultat == "true"){ } ne peut pas marche.

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 265
    Points : 117
    Points
    117
    Par défaut
    De même que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    resultat = window.confirm ("Voulez-vous supprimer cette région ?");
    if(resultat){
     
    }
    ne marche pas.
    J'ai même modifié le code en ceci, juste pour voir la valeur de resultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    resultat = window.confirm ("Voulez-vous supprimer cette région ?");
    alert(resultat);
    if(resultat){
     
    }
    Lorsque je clique sur "ok", j'ai le retour de la valeur de resultat = true. Mais lorsque je clique sur "Annuler" je n'ai aucun retour de la valeur de resultat (ce qui est normal, mais en revenge ce que je ne comprend pas et que l'enregistrement est tout de même supprimer.) C'est ma difficulté.

  5. #5
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Citation Envoyé par BILANGA Voir le message
    Lorsque je clique sur "ok", j'ai le retour de la valeur de resultat = true. Mais lorsque je clique sur "Annuler" je n'ai aucun retour de la valeur de resultat (ce qui est normal, [...])
    Vous devriez recevoir "false" lors d'une annulation.

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(resultat == true){
    	<?php
                    $rq_del = "DELETE FROM bd_acepsuivi.tb_region WHERE code_reg ='" .$code_region. "'";
                    $resultat = mysql_query($rq_del);
            ?>
    	alert ("Région supprimée avec succès.");
    }
    Tu comptes vraiment réussir à exécuter une requête SQL depuis le poste client

  7. #7
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 265
    Points : 117
    Points
    117
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(resultat == true){
    	<?php
                    $rq_del = "DELETE FROM bd_acepsuivi.tb_region WHERE code_reg ='" .$code_region. "'";
                    $resultat = mysql_query($rq_del);
            ?>
    	alert ("Région supprimée avec succès.");
    }
    Tu comptes vraiment réussir à exécuter une requête SQL depuis le poste client
    Merci Bovino. Mon but est de l'executer ce bloc de code avec un maxi de sécurité. Que me proposez vous ? Que cette requête SQL soit executé côté client ou côté serveur.

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par BILANGA Voir le message
    Que me proposez vous ? Que cette requête SQL soit executé côté client ou côté serveur.
    la question ne se pose pas : tu ne peux le faire que côté serveur (le client n'a pas le moyen d'accéder directement à la BDD)

    A+

  9. #9
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 265
    Points : 117
    Points
    117
    Par défaut
    ok E.Bzz c'est compris, mais mon problème demeure toujours.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(resultat == true){
    	<?php
                    $rq_del = "DELETE FROM bd_acepsuivi.tb_region WHERE code_reg ='" .$code_region. "'";
                    $resultat = mysql_query($rq_del);
            ?>
    	alert ("Région supprimée avec succès.");
    }

  10. #10
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    ton code php génère des messages d'erreur non compris par javasc ript!
    affiche la source et tu verras

  11. #11
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 265
    Points : 117
    Points
    117
    Par défaut
    Citation Envoyé par vermine Voir le message
    Vous devriez recevoir "false" lors d'une annulation.

    Oui, je l'ai mais le problème demeure. Franchement je ne comprends rien. Je ne sais pas si c'est mon navigateur, car presque tous les codes javascript ne pose assez de problème, même lorsque je passe deux jours dessus et que je ne trouve pas de pb.

  12. #12
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 265
    Points : 117
    Points
    117
    Par défaut
    Citation Envoyé par Matthieu2000 Voir le message
    ton code php génère des messages d'erreur non compris par javasc ript!
    affiche la source et tu verras

    Bonjour Matthieu2000,

    je ne comprend pas, si c'est vrai mais pourquoi l'instruction if de resultat = window.confirm ("Voulez-vous supprimer cette région ?");
    if(resultat ==true){} execute les instructions pour la valeur true de if ? Et à ce niveau c'est du javascript et non php ?

    Pouvez-vous être plus précis ? Merci.

  13. #13
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Comme expliqué par Matthieu, le code php corrompt le Javascript qui ne sait plus où il est et donc donnera l'alert de confirmation de suppression dans tous les cas. Enlevez le code php et votre if fonctionnera.
    Pour la suppression, mettez dans votre fonction Javascript un submit du formulaire vers une page PhP qui fera la suppression.

  14. #14
    Inactif
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 117
    Points : 142
    Points
    142
    Par défaut
    - Le PHP est éxécuté coté serveur.
    - Le Javacript est exécuté coté client.

    Au moment où la page est chargée par le navigateur, elle aura déjà été exécutée coté client, donc ton if(confirm..) en javascript ne sert à rien du tout.

    La meilleur méthode est plutôt d'appeler cette page, mais de faire un 'confirm' avant l'appel à cette page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <a href="pagequifaitlarequetedesuppression.php" onclick="return confirm('Voulez-vous supprimer cet enregistrement');"/>
    le return après le confirm, empêchera le lien de s'exécuter si confirm retourne false.

  15. #15
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 265
    Points : 117
    Points
    117
    Par défaut
    Merci de votre aide, je les mets en application. Vous êtez tous les génies.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.Net] Probleme avec dialogues (confirm et alert)
    Par crackity_jones666 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 26/11/2003, 22h05
  2. Réponses: 5
    Dernier message: 20/11/2003, 16h36
  3. word et confirmation d'enregistrement
    Par julio123 dans le forum Access
    Réponses: 4
    Dernier message: 28/08/2003, 14h38
  4. Confirmation de supression d'enregistrement
    Par Lux interior dans le forum XMLRAD
    Réponses: 3
    Dernier message: 25/04/2003, 16h01
  5. [Kylix] Demande de confirmation Kylix Delphi
    Par mailstef dans le forum EDI
    Réponses: 3
    Dernier message: 21/10/2002, 10h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo