Select lié en JS+PHP : problème avec IE

Select lié en JS+PHP : problème avec IE - HTML/CSS - Programmation

Marsh Posté le 08-11-2009 à 11:23:32    

Bonjour à tous
 
Toujours un probleme avec IE 7 ou 8 !!!
 
Je me suis lancé dans l'écriture d'un site marchand !!!!!
Cette page permet de renseigner une table BEL_Stock à partir des info recuperées dans un table BEL_Catalogue  
 
test : http://www.yethi-info.fr/test/AjoutDansStockForm.php
 
Principe du code  
 
-le 1 <select> deroulant est construit par une req sql en ligne 148 > pas de probleme
-le 2eme <select> est renseigné lorsque il y a un changement dans le 1er select (onchange en lg 154)
-la fct appelMarque appelée a ce moment vas chercher un deuxieme php en lui envoyant en param la categorie (lg46)
 
tout marche bien avec FF ou Chrome mais pas avec IE... j'ai ajouté our les test un alert qui affiche l'indice de l'élément sélectionné dans le 1 select en lg45 et la j'ai un message dans IE 'Categorie est indefinie' ......
 
 
Et là je comprend plus rien..... si une bonne âme pouvait m'aider !!!!!
(j'ai pensé a un probleme dans la declaration de l'instance :fonction xmlhttp)
 
MERCI
 
Code :  

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. <title>Ajout d'article dans le stock</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  6. <link rel="stylesheet" type="text/css" href="Boutique.css">
  7. </head>
  8. <script type="text/javascript">
  9. function xmlhttp()
  10. {
  11.  var x=null;
  12.  if (window.XMLHttpRequest) // Firefox et autres
  13.  x = new XMLHttpRequest();
  14.  else if (window.ActiveXObject) // Internet Explorer
  15.  {
  16.   try   {x = new ActiveXObject("Msxml2.XMLHTTP" );}
  17.   catch (e) {
  18.        try {x = new ActiveXObject("Microsoft.XMLHTTP" );}
  19.         catch (e) {x = null;}
  20.       }
  21.  }
  22.  else
  23.   {
  24.    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  25.   }
  26.  return x;
  27. }
  28. function AppelMarque()
  29. {
  30.  var xml = xmlhttp();
  31.  if(!xml)
  32.    {alert("XmlHttpRequest non supporté" );}
  33.  else
  34.    {xml.onreadystatechange = function()
  35.       {if (xml.readyState==4)
  36.       {var  opt=xml.responseText.split("\t" );
  37.          Marque.length=0;
  38.        for ( var n=1;n<opt.length;n++ )
  39.         {Marque.length++;
  40.         Marque.options[Marque.length-1].text=opt[n];
  41.         }
  42.       }
  43.      }
  44.      alert(Categorie.selectedIndex);
  45.      xml.open("GET", "AjoutDansStockFormMarque.php?GetCategorie="+Categorie.options[Categorie.selectedIndex].text, true);
  46.      xml.send(null);
  47.     }
  48. }
  49. function AppelModele()
  50. {
  51.  var xml = xmlhttp();
  52.  if(!xml)
  53.    {alert("XmlHttpRequest non supporté" );}
  54.  else
  55.    {xml.onreadystatechange = function()
  56.       {if (xml.readyState==4)
  57.       {var  opt=xml.responseText.split("\t" );
  58.          Modele.length=0;
  59.        for ( var n=1;n<opt.length;n++ )
  60.         {Modele.length++;
  61.         Modele.options[Modele.length-1].text=opt[n];
  62.         }
  63.       }
  64.      }
  65.      xml.open("GET", "AjoutDansStockFormModele.php?GetMarque="+Marque.options[Marque.selectedIndex].text+"&GetCategorie="+Categorie.options[Categorie.selectedIndex].text, true);
  66.      xml.send(null);
  67.     }
  68. }
  69. function AppelCouleur()
  70. {
  71.  var xml = xmlhttp();
  72.  if(!xml)
  73.    {alert("XmlHttpRequest non supporté" );}
  74.  else
  75.    {xml.onreadystatechange = function()
  76.       {if (xml.readyState==4)
  77.       {var  opt=xml.responseText.split("\t" );
  78.          Couleur.length=0;
  79.        for ( var n=1;n<opt.length;n++ )
  80.         {Couleur.length++;
  81.         Couleur.options[Couleur.length-1].text=opt[n];
  82.         }
  83.       }
  84.      }
  85.      xml.open("GET", "AjoutDansStockFormCouleur.php?GetModele="+Modele.options[Modele.selectedIndex].text+"&GetMarque="+Marque.options[Marque.selectedIndex].text+"&GetCategorie="+Categorie.options[Categorie.selectedIndex].text, true);
  86.      xml.send(null);
  87.     }
  88. }
  89. function AppelTaille()
  90. {
  91.  var xml = xmlhttp();
  92.  if(!xml)
  93.    {alert("XmlHttpRequest non supporté" );}
  94.  else
  95.    {xml.onreadystatechange = function()
  96.       {if (xml.readyState==4)
  97.       {var  opt=xml.responseText.split("\t" );
  98.          Taille.length=0;
  99.        for ( var n=1;n<opt.length;n++ )
  100.         {Taille.length++;
  101.         Taille.options[Taille.length-1].text=opt[n];
  102.         }
  103.       }
  104.      }
  105.      xml.open("GET", "AjoutDansStockFormTaille.php?GetCouleur="+Couleur.options[Couleur.selectedIndex].text+"&GetModele="+Modele.options[Modele.selectedIndex].text+"&GetMarque="+Marque.options[Marque.selectedIndex].text+"&GetCategorie="+Categorie.options[Categorie.selectedIndex].text, true);
  106.      xml.send(null);
  107.     }
  108. }
  109. function ControleVide()
  110. {
  111.  if(document.Formulaire.Nombre.value=='')
  112.   {
  113.   alert('Le nombre d\'article ne peut pas rester vide.');
  114.   document.Formulaire.Nombre.focus();
  115.   }
  116.   else if(isNaN(document.Formulaire.Nombre.value))
  117.   {
  118.   alert('Le nombre d\'article doit obligatoirement être numérique.');
  119.   document.Formulaire.Nombre.focus();
  120.   }
  121.   else if(document.Formulaire.Nombre.value.length>3)
  122.   {
  123.   alert('Le nombre d\'article ne peut pas excéder 3 caractères.');
  124.   document.Formulaire.Nombre.focus();
  125.   }
  126.   else
  127.   {
  128.   document.Formulaire.method = "POST";
  129.   document.Formulaire.action = "AjoutDansStockAction.php";
  130.   document.Formulaire.submit();
  131.   }
  132. }
  133. </script>
  134. <body>
  135. <div id="cadre_haut">
  136. </div>
  137. <div id="boite_centre">
  138.  <h4 align="center">Ajout d'article dans le stock</h4>
  139.  <?php
  140.  $co=mysql_connect("*****", "*****", "*****" );
  141.  $db=mysql_select_db("*****" );
  142.  //Affichage du nombre de ligne la table BEL_Stock
  143.  $retour = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM BEL_Stock" );
  144.  $donnees = mysql_fetch_array($retour);
  145.  echo '<p><b>Actuellement ' . $donnees['nbre_entrees'] . ' ligne dans la table BEL_Stock</b></p>';
  146.  //== on affiche dans un select la TABLE 1 ==
  147.  $res=mysql_query("SELECT DISTINCT Categorie FROM BEL_Catalogue",$co);
  148.  $max=@mysql_num_rows($res);
  149.  ?>
  150.  <form name="Formulaire">
  151.   <div id="form1">
  152.    <label for="Categorie">Catégorie :</label><br>
  153.    <select style="width:100%;" name="Categorie" id="Categorie" size=5 onchange='AppelMarque();'>
  154.    <?php
  155.     for ($nb=0;$nb<$max;$nb++)
  156.     {
  157.      $i=mysql_result($res,$nb,"Categorie" );
  158.      echo '<option>'.$i.'</option>';
  159.     }
  160.    ?> 
  161.    </select>
  162.   </div>
  163.   <div id="form2">
  164.    <label for="Marque">Marque :</label><br>
  165.    <select style="width:100%;" name="Marque" id="Marque" size=5 onchange='AppelModele();'> 
  166.    </select>
  167.   </div>
  168.   <div id="form3">
  169.    <label for="Modele">Modèle :</label><br>
  170.    <select style="width:100%;" name="Modele" id="Modele" size=5 onchange='AppelCouleur();'> 
  171.    </select>
  172.   </div>
  173.   <div id="form4">
  174.    <label for="Couleur">Couleur :</label><br>
  175.    <select style="width:100%;" name="Couleur" id="Couleur" size=5 onchange='AppelTaille();'>
  176.    </select>
  177.   </div>
  178.   <div id="form5">
  179.    <label for="Taille">Taille :</label><br>
  180.    <select style="width:100%;" name="Taille" id="Taille" size=5>
  181.    </select>
  182.   </div>
  183.   <div id="form6">
  184.    <label for="Nombre">Nombre d'article:</label><br>
  185.    <input type="text" name="Nombre" id="Nombre" size=5>
  186.   </div>
  187.   <?php
  188.     mysql_close($co);
  189.   ?>
  190.   <div id="bouton">
  191.    <input type="button" value="Valider" onClick="ControleVide();">
  192.   </div>
  193.  </form>
  194. </div>
  195. <div id="cadre_bas">
  196. </div>
  197. </body>
  198. </html>


Message édité par yethi le 08-11-2009 à 11:34:15
Reply

Marsh Posté le 08-11-2009 à 11:23:32   

Reply

Marsh Posté le 08-11-2009 à 11:43:20    

n'appelle pas directement categorie comme si il existait partout, déjà
utilise plutôt  
var categorie = document.getElementById('Categorie');


---------------

Reply

Marsh Posté le 08-11-2009 à 20:23:06    

Merci Flo850 pour ta réponse
 
J'ai modifié la fonction AppelMarque et maintenant ca fonctionne Youppie !!!
Petite question quand même il m'a aussi fallu ajouter la ligne
 
var Marque = document.getElementById('Marque');
 
dans la partie qui "remplit" le 2eme select mais là ca me parrait moins clair : a ce moment les options du 2eme select ne sont pas renseignées alors kes qu'il va chercher ?????
 
De toutes manieres : MERCI !!!
 
 

Code :
  1. function AppelMarque()
  2. {
  3.  var xml = xmlhttp();
  4.  var Categorie = document.getElementById('Categorie');
  5.  if(!xml)
  6.    {alert("XmlHttpRequest non supporté" );}
  7.  else
  8.    {
  9.     xml.onreadystatechange = function()
  10.      {
  11.       if (xml.readyState==4)
  12.       {
  13.        var opt = xml.responseText.split("\t" );
  14.        var Marque = document.getElementById('Marque');
  15.         Marque.length=0;
  16.         for ( var n=1;n<opt.length;n++ )
  17.          {
  18.           Marque.length++;
  19.           Marque.options[Marque.length-1].text=opt[n];
  20.          }
  21.       }
  22.      }
  23.      xml.open("GET", "AjoutDansStockFormMarque.php?GetCategorie="+Categorie.options[Categorie.selectedIndex].text, true);
  24.      xml.send(null);
  25.    }
  26. }


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed