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 :

Récupération d'une variable


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Par défaut Récupération d'une variable
    Bonjour,

    J'ai un soucis avec le code ci-dessous. En effet, je n'arrive pas à récupérer la variable "valeur" malgré le fait que je l'ai déclarée afin qu'elle soit globale, donc accessible dans l'intégralité du script.

    Voici donc mon code présent dans mon formulaire:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <select name="enta" id="enta" onchange="retvaleur();" style="width:180px;">
    <?php
    while($donnee=mysql_fetch_array($retreponse))
    {?>
        <option value="<?php echo $donnee['id'];?>" <?php if($entxa==$donnee['id']){echo 'selected="selected"';}?> > valeur </option>
    <?php
    }
    ?>

    Et voici celui qui est entre les balises HEAD.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    valeur=null;
    function retvaleur()
    {
        select = document.getElementById("enta");
        choice = select.selectedIndex;
        valeur = select.options[choice].value;
    }
    Si je mets un alert dans la fonction les valeurs s'affichent, par contre si l'alert est en dehors de la fonction, plus rien ne s'affiche.

    Merci de votre aide.

  2. #2
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    faut pas mettre "var" devant "valeur" pour qu'elle soit déclarée ?

  3. #3
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    Non, quand on est au niveau du contexte global (hors d'une fonction), tu peux déclarer les variables de cette façon ,sans mettre var. Cependant, ce n'est pas une bonne pratique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // ici on est dans le "scope" global de la page. Chaque variable est attachée à window.
    var a = 1; // équivaut à window.a = 1, équivaut à window[a] = 1, équivaut à a = 1
    console.log(window); // tu verras qu'il y a quelque part notre variable "a"
     
    function test() {
      b = 2; // sera contenu dans window à l'exécution de test()
      var c = 3; // ne sera pas contenu dans window à l'exécution de test()
    }
    Pour revenir au problème,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="<?php echo $donnee['id'];?>" <?php if($entxa==$donnee['id']){echo 'selected="selected"';}?> > valeur </option>
    Dans ce code, value est vraiment dôté de l'id ?

    Que cherches tu à faire lors de l'événement onchange ? Afficher la valeur sélectionnée ?
    <select name="enta" id="enta" onchange="alert(this.value)" style="width:180px;"> suffit amplement

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Par défaut
    Citation Envoyé par Kaamo Voir le message
    Pour revenir au problème,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="<?php echo $donnee['id'];?>" <?php if($entxa==$donnee['id']){echo 'selected="selected"';}?> > valeur </option>
    Dans ce code, value est vraiment dôté de l'id ?
    Oui, lorsque je fais un alert, c'est bien la valeur de l'id qui est affichée.

    Citation Envoyé par Kaamo Voir le message
    Que cherches tu à faire lors de l'événement onchange ? Afficher la valeur sélectionnée ?
    <select name="enta" id="enta" onchange="alert(this.value)" style="width:180px;"> suffit amplement
    Mon objectif avec le onchange est de récupérer l'id à chaque changement de la sélection dans le menu déroulant. Ce système fonctionne bien mais la portée de ma variable reste dans la fonction. Je n'arrive pas à la récupérer en dehors.

    Je fais tout cela dans le seul but de pouvoir récupérer un id afin de lancer une requête SQL pour aller chercher une info propre à la ligne référencée par l'id dans ma base de données en temps réel.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    et c'est ta fonction function retvaleur() qui va récupérer les infos en BdD via Ajax, ou c'est une autre fonction JavaScript (que tu ne montres pas) ?

    Explique-nous EN DETAIL ta méthode, car elle semble... améliorable.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Par défaut
    Je pensais mettre une requête SQL directement dans la fonction retvaleur() en la mettant entre des balises php. Mais je ne sais pas si c'est faisable car je vois que tu parles d'Ajax pour accéder à la BdD. Chose que je ne sais pas faire.

  7. #7
    Invité
    Invité(e)
    Par défaut
    => Les meilleurs cours et tutoriels AJAX
    Notamment celui-ci : Web 2.0, allez plus loin avec AJAX et XMLHttpRequest

    Lis le tuto. N'hésite pas à faire les exercices/exemples proposés.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Par défaut
    Merci, je vais regarder toutes ces infos.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Par défaut
    Bon, et bien j'ai toujours un souci avec mon code.

    J'ai créé le code ci-dessous entre mes balises head en javascript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    function getXhr()
    {
    	var xhr = null; 
    	if(window.XMLHttpRequest) // Firefox et autres
    	   xhr = new XMLHttpRequest(); 
    	else if(window.ActiveXObject){ // Internet Explorer 
    	   try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch (e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    	}
    	else { // XMLHttpRequest non supporté par le navigateur 
    	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    	   xhr = false; 
    	} 
    	return xhr;
    }
    function retvaleur()
    {
    	select = document.getElementById("enta");
    	choice = select.selectedIndex;
     
    	var xhr = getXhr();
    	xhr.onreadystatechange = function()
    			{
    				if(xhr.readyState==4 && xhr.status==200)
    				{
    				     alert(xhr.responseText);
    				}
    			}
    	xhr.open("POST","ajax1.php",true);
    	xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
    	valeur = select.options[choice].value;
    	xhr.send("valeur"+valeur);		
    }
    et dans une nouvelle page que j'ai appelé ajax1.php le code ci-desous.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo $_POST['valeur'];
    ?>

    Le problème c'est que mon alert ne me retourne rien. la fenêtre alert s'ouvre bien mais je n'ai pas de valeur retournée.

    Merci de votre aide

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Par défaut
    J'ai modifié mon code de la manière suivante:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function retvaleur()
    {	
    	var xhr = getXhr();
    	xhr.onreadystatechange = function()
    			{
    				if(xhr.readyState==4 && xhr.status==200)
    				{
    				     donnee = xhr.responseText;
                                                            alert(donnee);
    				}
    			}
    	xhr.open("POST","ajax1.php",true);
    	xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
                 select = document.getElementById("enta");
    	choice = select.selectedIndex;
    	valeur = select.options[choice].value;
    	xhr.send("valeur="+valeur);		
    }
    Mon script ne fonctionne qu'une fois

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Par défaut
    C'est résolu. Merci à tous

  12. #12
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    Dis comment ; ça peut servir à d'autres...

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/05/2006, 23h46
  2. [Conception] récupération d'une variable php dans une autre page
    Par vali7 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/01/2006, 11h19
  3. petite question sur la récupération d'une variable
    Par minusette dans le forum Langage
    Réponses: 6
    Dernier message: 17/11/2005, 16h57
  4. [C#] Récupération d'une variable d'environnement
    Par jamy79 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 17/08/2005, 14h03
  5. Récupération d'une variable
    Par cach dans le forum Windows
    Réponses: 7
    Dernier message: 22/02/2005, 11h19

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