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 :

Debug script listes déroulantes liées


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 13
    Par défaut Debug script listes déroulantes liées
    Bonjour,

    J'utilise un script Javascript pour lier deux listes déroulantes entre via une BD. Il marche trés bien, mais la à l'éxécution sous Internet Explorer il m'indique des lignes à debugguer. J'ai regarde la ligne avec Afficher la source, mais je ne comprends pas trop où est l'erreur.

    Juste en dessous de la première erreur ligne 93 : Constante chaine non terminée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Undefined offset:  1 in <b>c:\program files\easyphp1-8\www\nom_ent.php</b> on line <b>50</b><br />
    ";
    Voici mon script avec les lignes 50 (et 56) en rouge :
    <SCRIPT LANGUAGE="JavaScript">
    /*Cette fonction permet d'afficher 2 listes liées l'une à l'autre par une requête Mysql
    La 2ème liste est mise à jour selon ce qui a été sélectionné dans la 1ère*/
    function AffListe2(code)
    {
    //nb d'éléments de la 2ème liste
    lg = document.entreprise.nom_ent.length;
    for (i = lg - 1; i >= 0; i--)
    {
    //au départ tous les éléments de la 2ème liste sont vides
    document.entreprise.nom_ent.options[i] = null;
    }

    <?php
    //Sélection dans la table SITES
    $sql1 = "SELECT DISTINCT categorie FROM utilisateurs WHERE categorie='Partenaire' OR categorie='Adhérent'";
    $resultat = mysql_query($sql1);
    //initialisation des variables
    $option_max= "" ;
    $max_lignes = 0 ;


    //Tant que la sélection dans SITES ramène des tuples
    while ($enr = mysql_fetch_array($resultat))
    {
    //On recherche les éléments de SERVICES ayant pour "mère" un enregistrement dans SITES
    $sql="SELECT login FROM utilisateurs WHERE categorie='".$enr[0]."' ORDER BY login";
    //$enr[0]=CodeSite de la 1ère requête*/

    $resultat2 = mysql_query($sql); //resultat correspondant au site choisi

    echo " if (document.entreprise.situation.value == '";
    echo $enr[0]."') {\n";
    echo " document.entreprise.nom_ent.length = ";
    echo (mysql_num_rows($resultat2)).";\n";
    //la longueur de la liste des services=nb de lignes retournées par le select
    $cpt = 0; //on met un compteur à 0
    echo " document.entreprise.nom_ent.options[".$cpt."].value = '';\n";
    //texte affiché dans la liste = LibelleService (enr2[1])
    echo " document.entreprise.nom_ent.options[".$cpt."].text = \"Aucun\";\n";
    $cpt++;

    while ($enr2 = mysql_fetch_array($resultat2)) //tant qu'il y a des lignes retournées par la requête de sélection des services
    {
    //valeur de l'option dans la liste = CodeService (enr2[0])
    echo " document.entreprise.nom_ent.options[".$cpt."].value = '";
    echo $enr2[0]."';\n";
    //texte affiché dans la liste = LibelleService (enr2[1])
    echo " document.entreprise.nom_ent.options[".$cpt."].text = \"";
    echo $enr2[1]."\";\n";

    echo " if (code == '".$enr2[0]."') document.forms[1].nom_ent.options[";
    echo $cpt."].selected = true;\n";
    $cpt++;
    if ($cpt > $max_lignes) $max_lignes = $cpt;
    if (strlen($enr2[1]) > strlen($option_max)) $option_max = $enr2[1];
    }
    echo " }\n"; //fin du if (document.forms[0].lstsite.value == 'enr')
    }//fin du while $enr
    ?>
    }
    </SCRIPT>
    Au cas ou je vous mets la partie du formulaire qui devrait être gérer par le script
    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
    <form name="entreprise" method="post" onSubmit="return verif_entreprise()" action="">
     
    <?	
    	  if ($rech_cat) 
          { 
             echo ("<select name=\"situation\" onChange='AffListe2(-1)'> <br/>") ; 
    		 echo ("<option value=''>Situation</option>");
             while ($tab=mysql_fetch_object($rech_cat)) 
             { 
                echo ("<option value=".$tab->categorie.">".$tab->categorie."</option>"); 
             } 
             echo ("</select><br/>"); 
             mysql_free_result($rech_cat); 
          }
    ?>
    		Nom<br/>
    		<select name="nom_ent" >
    			<option value=''>Listes des noms</option>
    		</select>
    Merci pour votre aide

  2. #2
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut Re: Debug script listes déroulantes liées
    Citation Envoyé par AnTiX
    Bonjour,
    $sql="SELECT login FROM utilisateurs WHERE categorie='".$enr[0]."' ORDER BY login";
    $resultat2 = mysql_query($sql); //resultat correspondant au site choisi
    while ($enr2 = mysql_fetch_array($resultat2)) //tant qu'il y a des lignes retournées par la requête de sélection des services
    echo $enr2[1]."\";\n";
    Bonjour!!!

    Mes vagues souvenir du temps ou je faisais du PHP me font penser que ta variable $enr2 a probablement un sel attribut $enr2[0] correspondant au login du SELECT. $enr2[1] ca n'existe pas, donc il doit generer des null qui se retrouvent dans ton code JavaScript qui du coup est tout buggé....

    Mais ton problème semble plus PHP que JavaScript.

    Sinon, en regle générale, sur ce forum, on ne s'interesse qu'au code HTML et JavaScript, donc si tu as un problème de cet ordre avec une page, mieux vaut nous donner la page HTML/JavaScript générée par le php que le code source de php....

    Enfin, c'est le genre de combat que je ne gagnerait jamais

  3. #3
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    évite les retours à la ligne dans une chaîne de caractères!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 13
    Par défaut
    Merci beaucoup.

    Ca m'énerve de poser des questions comme ça quand la réponse est devant moi...

    Sinon j'ai mis mon code JS et mon code HTML, même si mon code JS est plein de php, je vois pas trop ce que j'ai fait de mal =(

    Encore merci

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 13
    Par défaut
    Mhhh j'ai encore des debogguage qui apparaisse, ligne 92 et 98 sur la source en rouge sur le code:
    if (document.entreprise.situation.value == 'Adhérent') {
    document.entreprise.nom_ent.length = 2;
    document.entreprise.nom_ent.options[0].value = '';
    document.entreprise.nom_ent.options[1].value = 'Foure Largadec';
    document.entreprise.nom_ent.options[2].value = 'SDEL';
    }
    if (document.entreprise.situation.value == 'Partenaire') {
    document.entreprise.nom_ent.length = 2;
    document.entreprise.nom_ent.options[0].value = '';
    document.entreprise.nom_ent.options[1].value = 'Lancey';
    document.entreprise.nom_ent.options[2].value = 'Voiron';
    }
    Je comprends pas trop c koi le problème à cett ligne =(
    merci pour votre aide

  6. #6
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    document.entreprise.nom_ent.options[1].value = 'Foure Largadec';
    ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.entreprise.nom_ent.options[1]=new Option( 'Foure Largadec');

  7. #7
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    document.entreprise.nom_ent.length = 2;
    Ca c'est pas bon. Les attributs length sont en lecture seule. C'est une propriété de l'objet c'est comme ça et c'est tout.

    Un exemple simple: tu peses 60kg. Bon, ben tu peux pas décider que hop tu peses 75kg. Tu peux te rajouter du plomb dans les poches, ce qui va changer ton poids, mais tu ne peux pas agir directement sur le poids. C'est un fait, c'est comme ça.

    Donc, tu ne peux pas réaffecter la longueur d'un objet.

    Ensuite, pour insérer une option, ta méthode est barbare.

    Je conseil:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var newOpt = document.createElement("option");
    newOpt.selected = 'true';
    newOpt.value = 'maValue';
    // création du texte de cette option
    var optText = document.createTextNode('textedeloption');
    newOpt.appendChild(optText);
    monSelect.appendChild(newOpt);
    Enfin, tout dépends de ce que tu veux faire, dans un cadre plus large....

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 13
    Par défaut
    Merci je regarde tout ca

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

Discussions similaires

  1. Champs dynamiques : listes déroulantes liées
    Par Mr N. dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 12/12/2005, 15h15
  2. Griser 1 liste déroulante liée à une autre, pb de concaténat
    Par linou dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/03/2005, 16h45
  3. listes déroulantes liées
    Par k4eve dans le forum Struts 1
    Réponses: 3
    Dernier message: 26/04/2004, 15h11
  4. Listes déroulantes liées entre elles
    Par denisC dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/07/2002, 15h53

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