Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme javascript liste déroulante lié

Sujet résolu
    8 août 2009 à 7:52:22

    Salut à tous,

    Je rencontre un petit probleme avec une liste déroulante lié, j'ai donc 2 champs select avec les requêtes aproprié dans la base et un code javascript qui gère sa mais j'ai un site ou sa fonctionne et sur l'autre pas il me dit qu'un id n'est pas défini en l'ocurrence "orders" alors qu'il est définie dans le champ select je ne comprend pas pourquoi il ne fonctionne pas:

    Voyez plutôt le code:

    c'est la ligne 27 qui pose apparemment problème dans le code javascript

    <script type="text/javascript">
    
       function xmlhttp()
       {  var x;
          try         {  x = new ActiveXObject("Microsoft.XMLHTTP");   }
          catch (e)   {  try         {   x = new ActiveXObject("Msxml2.XMLHTTP");   }
                         catch (e)   {   try         {   x = new XMLHttpRequest();   }
                                         catch (e)   {   x=false;   }
                                     }
                      }
          return x;
       }
       function appel()
       {   var xml = xmlhttp();
          if(!xml)
                 {   alert("XmlHttpRequest non supporté");   }
          else   {   xml.onreadystatechange = function()
                     {   if(xml.readyState==4)
                         {   var opt=xml.responseText.split("\t");
                             orders_products.length=0;
                             for ( var n=1;n<opt.length;n++ )
                             {   orders_products.length++;
                                 orders_products.options[orders_products.length-1].text=opt[n];
                             }
                         }
                      }
                      xml.open("GET", "requete_produit.php?liste_produit="+orders.options[orders.selectedIndex].text, true);
                      xml.send(null);
                 }
       }      
      </script>
    


    les 2 champs select:

    <select id="orders" name="orders" style=" width:200 <? if($errorders==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);} ?>;" onchange='appel();'>
    		<option>Selectionnez une commande</option>
    				<?php
    				$retour_cmd_query = "SELECT orders_id FROM " . TABLE_ORDERS . " where customers_id = '" . (int)$customer_id . "'";
    				$query_result = tep_db_query($retour_cmd_query) ;
    				
    					while( $query_string = tep_db_fetch_array($query_result) )
    					{
    					  $retour_cmd = $query_string['orders_id'] ;
    					  
    					  echo '<option>'.$retour_cmd.'</option>'; 
    					}
    				   
    				?>  
    </select><span class="error-message">erreur</span>
    		</td>
    		<td>
    <select id="orders_products" name="orders_products" style=" width:200 <? if($errorders_products==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);} ?>;">
    		<option>Selectionnez un produit</option>  
    </select><span class="error-message">erreur</span>
    		</td>
    


    et sa c'est le fichier qui contient la requête pour l'affichage du contenu de la 2ème liste

    <?php
    header('Content-type:text/html;charset=ISO-8859-1');
    $retour_cmd_query = "SELECT * FROM " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . $_GET["liste_produit"] . "'";
    $query_result = tep_db_query($retour_cmd_query) ;
    
    	 $t="";
       while( $query_string = tep_db_fetch_array($query_result) )
    	{
    	  $retour_cmd = $query_string['products_name'] ;
    	  
    	  $t.="\t".$retour_cmd;
    	}
    	echo $t;
    	
    ?>
    


    est-ce que vous arrivez à voir pourquoi il me dit que orders n'est pas défini alors qu'il y est bien dans le premier champ select comme ceci ( <select id="orders" ), donc mon code javascript au niveau de la ligne 27 devrais fonctionner ! o_O

    Mais nan, enfin sur un de mes sites mais sur l'autre c'est éxactement le même code mais la 2ème liste déroulante est bien remplie quand je sélectionne une commande dans la première liste, alors que sur mon autre site la première liste avec les commande est bien remplie convenablement mais lorsque j'en selectionne une qui devrais m'afficher les produits correspondant à cette commande dans la 2ème liste déroulante sa ne fonctionne pas et j'ai l'erreur "orders is not definied" dans la console firebug.

    quelqu'un aurait il une idée du problème?

    merci
    • Partager sur Facebook
    • Partager sur Twitter
      8 août 2009 à 12:32:07

      Mais... à aucun moment tu n'écris
      var orders = document.getElementById("orders"); ?



      Et même chose pour orders_products ?
      • Partager sur Facebook
      • Partager sur Twitter
        8 août 2009 à 14:24:06

        Ah! il faut que j'écrive ça je ne savais pas je suis pas très fort en javascript comme tu peux le voir !

        Donc j'ecris sa en début de fonction ou avant la fonction dans le code php?


        [Edit]Wouhaaaaaaaa !

        Merci à toi Golmote, sa marche nikel, j'ai pas tout compris le pourquoi du comment mais c'est ce que je cherchais merci beaucoup.
        [/Edit]
        • Partager sur Facebook
        • Partager sur Twitter
          8 août 2009 à 14:51:20

          Bah tu utilisais "orders" comme ça, de but en blanc... Mais JavaScript ne sait pas ce que c'est "orders"...

          Il faut donc que tu crées une variable nommée "orders", dans laquelle tu vas mettre l'élément ayant pour id "orders".

          Ainsi, quand tu utiliseras ensuite la variable "orders", JavaScript saura de quoi tu parles : en l'occurrence de l'élément HTML désiré. ;)

          Un petit tour sur le big tuto ne ferait pas de mal... :-°

          http://www.siteduzero.com/tutoriel-3-8 [...] vascript.html
          • Partager sur Facebook
          • Partager sur Twitter

          Probleme javascript liste déroulante lié

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown