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 :

Initialisation Select avec Ajax (php)


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 56
    Points
    56
    Par défaut Initialisation Select avec Ajax (php)
    Bonjour,
    j'ai ecrit un petit script ajax pour mettre afficher ou cacher des champs d'un formulaire en fonction du choix d'un select, et j'initialise la valeur de ce select a la valeur récupéré dans la bdd, mais l'affichage des champs de ne fait pas...

    fichier principal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script language="JavaScript" src="modules/metro/combos.js" type="text/javascript"> </script>
    ...
    <select name="Ctrltype" id="Ctrltype" onChange="newmenuderoulant(this,'<?php echo $IdEquipCtrl; ?>')">
         <option>--select--</option>
          <option value="Lab"<?php if ($rowcontrol[Ctrltype]=="Lab") {echo " selected";} ?>>Lab (Min-Max)</option> 
          <option value="Maintenance"<?php if ($rowcontrol[Ctrltype]=="Maintenance") {echo " selected";} ?>>Maintenance (Δ)</option>
          </select>
    ....
    <td> <div id="combo2"></div> </td>
    l'ajax marche bien, l'affichage se fait bien si on passe d'une valeur a une autre dans le select, mais pas a l'initialisation....

    est-ce a cause de ca:
    http.onreadystatechange = displaylist2; ??

    voila l'ajax:
    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 creerConnexion() {
       var connexion;
       connexion = window.XMLHttpRequest 
       ? new XMLHttpRequest() : 
       new ActiveXObject("Microsoft.XMLHTTP");
       return connexion;
    }
     
    var http = creerConnexion();
     
    function newmenuderoulant(objselect,idctrl) {
     
        var Ctrltype =objselect.options[objselect.selectedIndex].valu
    e;
          //alert(Ctrltype);
        if (idctrl!=null)
          http.open('get', 'modules/metro/ajax.php?Ctrltype='+Ctrltype+'&am
    p;idctrl='+idctrl);
          else http.open('get', 'modules/metro/ajax.php?Ctrltype='+Ctrltype);
     
       http.onreadystatechange = displaylist2;
       http.send(null);
     
    }
     
    function displaylist2(){
        if(http.readyState == 4){
          var response = http.responseText;
          document.getElementById("combo2").innerHTML=resp
    onse;
        }
       else
       {
          /*alert('Etape '+http.readyState);*/
       }
    }
    dans le fichier ajax.php je cree les champs que j'affiche dans le div id combo2 ...

    merci pour vos idées et votre aide!
    ++
    VooDoo

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 137
    Points : 160
    Points
    160
    Par défaut
    Salut,

    Donc ton code ajax, tu as
    Je vois que c'est une variable php, qu'est ce qu'elle signifie ?
    Quand est-ce que la condition est vrai ? quand est-ce qu'elle est fausse ?

    Autre chose,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    http.open('get', 'modules/metro/ajax.php?Ctrltype='+Ctrltype+'&am
    p;idctrl='+idctrl);
    Cette ligne fonctionne ? J'ai bien peur que &amp; ne soit pas compris par le navigateur.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 56
    Points
    56
    Par défaut
    le test de la variable verifie que l'utilisateur a bien selectionner un des 2 choix amenant l'affichage d'un des 2 champ input.

    petite erreur dans le copier/coller du code, il fallait lire:
    http.open('get', 'modules/metro/ajax.php?trltype='+Ctrltype+'&idctrl='+idctrl);

    mais l'ajax marche bien, c'est juste que je n'arrive pas a initialiser la page avec les valeurs de la bdd...
    En fait l'affichage des champs se fait sur le onChange du select. mais lors du chargement de la page il n'y a pas de changement......

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 137
    Points : 160
    Points
    160
    Par défaut
    Alors tu peux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onload=newmenuderoulant(...)
    Mais attention, à chaque que ta page sera rechargée, la fonction sera appelée.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 56
    Points
    56
    Par défaut
    vi j'ai déjà essayé ca, mais ca marche pas...
    comme si quelquechose bloquait dans le javascript...

    bizarre...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 56
    Points
    56
    Par défaut
    ok c'est bien dans le javascript que ca foire...
    quelquechose la dedans:

    var Ctrltype =objselect.options[objselect.selectedIndex].value;

    en fait Ctrltype doit avoir la valeur de la bdd au chargement de la page, puis la valeur selectionnée en cas de changement dans le select...
    mais je c pas faire

    du coup j'ai créé une autre fonction que j'appeles directement au chargement de la page, et ca marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function newmenuderoulant2(Ctrltype,idctrl) {
     
       if (idctrl!=null)
    http.open('get', 'modules/metro/ajax.php?trltype='+Ctrltype+'&idctrl='+idctrl);
    	else http.open('get', 'modules/metro/ajax.php?Ctrltype='+Ctrltype);
     
    	http.onreadystatechange = displaylist2;
    	http.send(null);
     
    }
    Merci pour ton aide!

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 56
    Points
    56
    Par défaut
    Remarque quelqu'un a peut etre la reponse pour tester si la valeur provient du select ou pas, pour eviter que je fasse la 2ieme fonction ??

  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 VooDooNet
    en fait Ctrltype doit avoir la valeur de la bdd au chargement de la page, puis la valeur selectionnée en cas de changement dans le select...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function newmenuderoulant(objselect,idctrl,blnIssuDuSelect) {
     
        var Ctrltype =objselect.options[objselect.selectedIndex].valu
    e;
          //alert(Ctrltype);
        if (blnIssuDuSelect)
          http.open('get', 'modules/metro/ajax.php?Ctrltype='+Ctrltype+'&am
    p;idctrl='+idctrl);
          else http.open('get', 'modules/metro/ajax.php?Ctrltype='+Ctrltype);
       
       http.onreadystatechange = displaylist2;
       http.send(null);
       
    }
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="Ctrltype" id="Ctrltype" onChange="newmenuderoulant(this,'<?php echo $IdEquipCtrl; ?>', true)">
    Dans les autres cas (ton init, par ex.) tu appelleras
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newmenuderoulant(this,'une_valeur', false)
    A+

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 137
    Points : 160
    Points
    160
    Par défaut
    Ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(objetselect!=null)

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 56
    Points
    56
    Par défaut
    Merci pour votre aide, g pris la solution a E.bzz.
    le if(objetselect!=null) ne fonctionne pas vu qu'il est jamais null...
    Merci encore
    A+
    VooDoo

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

Discussions similaires

  1. remplir un select avec ajax
    Par gtraxx dans le forum jQuery
    Réponses: 4
    Dernier message: 12/06/2009, 09h31
  2. Réponses: 1
    Dernier message: 27/04/2009, 18h03
  3. [AJAX] accent illisible avec ajax - php
    Par forst dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/07/2008, 12h32
  4. [AJAX] Afficher les donnees avec ajax/php
    Par samiou11 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/06/2008, 21h00
  5. erreur javascript pour modifier select avec tableau PHP
    Par omdafer dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 24/03/2008, 12h27

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