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 :

liste liées erreur undefined


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 8
    Par défaut liste liées erreur undefined
    Bonjour à tous!
    Je souhaite faire une liste liées a une premiere.
    J'alimente correctement la 1ere liste et prend les bons paramètres, puis je l'envoie a mon script.
    voici mon code php:
    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
    <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
        <select name="theme" id="nom_theme" onchange="changeDept(tab,this.value);">
          <option value="vide">- - - Choisissez un thème - - -</option>
     
        <?php
        /* Construction de la première liste : on se sert du tableau PHP */
        $nbr = count($ssrep);
        foreach($ssrep as $nr => $nom)
        {
            ?>
    		//ce serait la qu'on recupere la valeur du 1er tableau
        <option value="<?php echo($nr); ?>"><?php echo($nr); ?></option>
    <?php
        }
        ?>
        </select>
        <!-- ICI, le secret : on met un bloc avec un id ou va s'insérer le code de
             la seconde liste déroulande -->
      <span id="blocDepartements"></span><br />
      <input type="submit" name="ok" id="ok" value="Envoyer" />
      </fieldset>
    </form>
    voici ce qui est dans les paramètres de changedept:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    changeDept("{"AGRICULTURE":{"1":"/N_AGRI_ENVIRONNEMENT","2":"/N_AGRI_ALIMENTAIRE","3":"/N_EXPLOITATION_ELEVAGE ","4":"/N_PARCELLAIRE_AGRICOLE ","5":"/N_SANTE_ANIMALE","6":"/N_SANTE_VEGETALE ","7":"/N_ZONAGES_AGRICOLES "},"AIR_CLIMAT":{"8":"/N_CHANGEMENT_CLIMATIQUE","9":"/N_METEO"}}", "AIR_CLIMAT")
    ou le 1er parametre est un tableau javascript, et le 2eme parametre est l'indice (cad "AIR_CLIMAT").

    Et enfin voici mon script changeDept.js:
    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
    /* On crée la fonction qui va construire la seconde liste déroulante */
    function changeDept(tab,idr)
    {
        if(idr != "vide")
        {
        /* On compte les sousrep de ce thème */
        var nbd = tab[idr].length;
    	var nom = tab[idr].first();
    	var i = tab[idr].indexOf(nom);
        var form_d  = '<select name="sousreps" id="sousreps">';
        for(var j = i ;j < nbd + i; j++)
        {
    		form_d += '  <option value="'+ j +'">'+ tab[idr][j] +" ("+ j +')<\/option>';
        }
        form_d += '<\/select>';
        }
        else
        {
            form_d = "";
        }
        document.getElementById("blocDepartements").innerHTML = form_d;
    }
    et je suis rembarré a chaque fois car firebug me dit
    tab[idr] is undefined
    nbd = tab[idr].length;\n
    pourquoi mon tableau n'est-il pas défini???

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,
    <select name="theme" id="nom_theme" onchange="changeDept(tab,this.value);">
    tab ne correspond à aucun élément de la page.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="theme" id="nom_theme" onchange="changeDept(this.options,this.value);">
    document.getElementById("blocDepartements").innerHTML = form_d;
    N'utilise pas innerHTML pour manipuler un élément, utilise DOM:
    Comment ajouter des options dans une liste déroulante à partir d'une autre ?
    Comment lier deux listes déroulantes entre elles ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 8
    Par défaut
    Pardon, j'ai oublié de préciser comment était rempli ma variable tab!

    je le fais de cette façon (ce code est placé pile avant le form action)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">
    var tab ='<?php echo $javascript->Object($ssrep); ?>
    </script>
    qui convertit un tableau php en tableau javascript.
    Pour illustrer, ceci
    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
    Array
    (
        [AGRICULTURE] => Array
            (
                [1] => /N_AGRI_ENVIRONNEMENT
                [2] => /N_AGRI_ALIMENTAIRE
                [3] => /N_EXPLOITATION_ELEVAGE 
                [4] => /N_PARCELLAIRE_AGRICOLE 
                [5] => /N_SANTE_ANIMALE
                [6] => /N_SANTE_VEGETALE 
                [7] => /N_ZONAGES_AGRICOLES 
            )
     
        [AIR_CLIMAT] => Array
            (
                [8] => /N_CHANGEMENT_CLIMATIQUE
                [9] => /N_METEO
            )
     
    )
    devient cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"AGRICULTURE":{"1":"\/N_AGRI_ENVIRONNEMENT","2":"\/N_AGRI_ALIMENTAIRE","3":"\/N_EXPLOITATION_ELEVAGE ","4":"\/N_PARCELLAIRE_AGRICOLE ","5":"\/N_SANTE_ANIMALE","6":"\/N_SANTE_VEGETALE ","7":"\/N_ZONAGES_AGRICOLES "},"AIR_CLIMAT":{"8":"\/N_CHANGEMENT_CLIMATIQUE","9":"\/N_METEO"}}
    donc je ne pense pas (peut-être à tord) avoir besoin de this.option

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var tab ='<?php echo $javascript->Object($ssrep); ?>
    le quote du début est de trop non ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    tab est une variable globale alors. Mais avec
    function changeDept(tab,idr)
    tab est une nouvelle variable en paramètre. Tu n'as plus besoin de cette paramètre alors.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function changeDept(idr)
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="theme" id="nom_theme" onchange="changeDept(this.value);">

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 8
    Par défaut
    oups! j'ai mal copié, voici le bon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">
    var tab ='<?php echo $javascript->Object($ssrep); ?>';
    </script>
    Sinon c'est vrai que je peux faire comme andry me propose pour optimiser, mais cela ne change rien au probleme car de toute façon je lui donne bien le tableau javascript quoi qu'il arrive.
    Ce qui me laisse toujours avec mon erreur dans les deux cas
    tab[idr] is undefined
    nbd = tab[idr].length;\n

    Au passage, cela ne pourrait-il pas venir de mon navigateur? (firefox 3.5 pour info)

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    ben justement non si tu mets des quotes c'est plus un objet json mais un string ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

Discussions similaires

  1. [MySQL] Erreur formulaire depuis listes liées
    Par ctsblv dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 25/03/2015, 00h43
  2. Réponses: 2
    Dernier message: 12/06/2009, 22h40
  3. [AJAX] liste liée ajax: s'iou plait, cherchez l'erreur
    Par redwire dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/09/2006, 20h26
  4. Problème avec listes liées entre elles et bouton "précé
    Par Oluha dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/08/2005, 15h10
  5. [servlet] gestion des listes d'erreurs ?
    Par MatMeuh dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 27/10/2004, 10h19

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