Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
611 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

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

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1938718
yethi
Posté le 08-11-2009 à 11:23:32  profilanswer
 

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
mood
Publicité
Posté le 08-11-2009 à 11:23:32  profilanswer
 

n°1938721
flo850
moi je
Posté le 08-11-2009 à 11:43:20  profilanswer
 

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


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

n°1938772
yethi
Posté le 08-11-2009 à 20:23:06  profilanswer
 

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. }



Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

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

 

Sujets relatifs
Problème de librairies dynamiquesEclipse, SVN, EJB (probleme)
Problème rapidité de mise en pauseProblème fichier de configuration hibernate
Probleme d'écriture pour un client (JAVA)probléme d'insertion de caractères accentués dans un xml via php
probléme d'insertion de caractères accentués dans un xml via phpPHP - authentification requise acces à un XML- htpasswd
Conditions en fonction de l'heure en PHPProblème placement JButton
Plus de sujets relatifs à : Select lié en JS+PHP : problème avec IE


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR