bonjour,
j'ai ecris ces scripts :
une page principale contenant un formulaire et des combo à remplir au chargement de la page. Donc le script de la page principale :
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<script language="javascript" type="text/javascript"v src="Connections/scripts.js"></script>
</head>
 
<body onload="RempliAll(document.fiche_recette)">
<form method="post" id="fiche_recette" name="fiche_recette" action="">
  <label>titre
	<input type="text" name="titre" />
  </label>
  <label>Categorie
  <select name="categorie" id="categorie" onchange="RempliSousCategorie(this.form)">
  </select>
  </label>
  <input type="button" name="Submit" value="Nouvelle categorie" onclick="PopUp('ajout_categorie.php')"/>
  <label>Sous-catégorie
  <select name="sous_categorie" id="sous_categorie">
  </select>
  </label>
  <input type="submit" name="Submit2" value="Nouvelle sous categorie" onclick="PopUp('ajout_sous-categorie.php')" />
  <p>
    <label>Dificulté
    <select name="dificulte" id="dificulte">
    </select>
    </label>
	    <input type="submit" name="Submit3" value="Nouvelle" onclick="PopUp('ajout_dificulte.php')" />
    <label>Coût
    <select name="cout" id="cout">
    </select>
    </label>
	<input type="submit" name="cout" value="Nouveau" onclick="PopUp('ajout_cout.php')" />
    <label>
 
    Nombre de parts
    <select name="parts">
 
    </select>
    <input type="submit" name="Submit4" value="Nouveau" onclick="PopUp('ajout_part.php')" />
    </label>
  </p>
  <p>
    <label>Durée de préparation
    <select name="duree_prepa">
 
    </select>
    <input type="submit" name="Submit5" value="Nouveau" onclick="PopUp('ajout_tps_prepa.php')" />
    </label>
    <label>Durée de cuisson
    <select name="select7">
    </select>
    </label>
  </p>
  <p><fieldset id="ingredient"><legend>Ingrédients</legend>
  <p>
    <label>ingrédient
    <select name="ingredient">
    </select>
    </label>
    <label>quantité
    <select name="quantite" onchange="Ingredient()">
	<option></option>
	<option>test</option>
    </select>
    </label>
  </p>
  </fieldset>
  &nbsp;
  <label>préparation</label>
  <textarea name="textfield2" cols="50" rows="20"></textarea>
</form>
</body>
</html>
pour remplir les combo de ce formulaire j'ai ecris ces 2 fonctions :
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
23
24
function RempliAll(f)
{
	Rempli(f,'categorie');
	Rempli(f,'dificulte');
	Rempli(f,'cout');
}
function Rempli(f,combo)
{
	if(window.XMLHttpRequest) // Firefox
   		xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject) // Internet Explorer
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else { // XMLHttpRequest non supporté par le navigateur
   		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
 		return;
		}
 
	xhr_object.open("POST","rempli.php",false);
 
	data = "form="+f.name+"&select="+combo;
	xhr_object.setRequestHeader("content-type", "application/x-www-form-urlencoded");
	xhr_object.send(data);
	if(xhr_object.readyState == 4) eval(xhr_object.responseText);
}
la fonction Rempli() appelle un script php que voici :
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
<?php
header('Content-type: text/html; charset=iso-8859-1');
require_once('Connections/recette.php');
 
switch($_POST['select'])
{
        case "categorie":
                $sql = "select * from categorie order by ID_categorie";
                $req = mysql_query($sql) or die(mysql_error());
                echo 'var o = null;';
                echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];'; 
                echo 's.options.length = 0;';
                while ($r = mysql_fetch_array($req))
                {
                        echo 's.options[s.options.length] = new Option("'.$r['nom_categorie'].'");';
                }
        break;
        
        case "dificulte":
                $sql = "select * from difficulte order by iddifficulte";
                $req = mysql_query($sql) or die(mysql_error());
                echo 'var o = null;';
                echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];'; 
                echo 's.options.length = 0;';
                while ($r = mysql_fetch_array($req))
                {
                        echo 's.options[s.options.length] = new Option("'.$r['difficulte'].'");';
                }
        break;
        
        case "cout":
                echo "alert('form = ".$_POST['form']." select = ".$_POST['select']."');";
                $sql = "select * from cout";
                $req = mysql_query($sql) or die(mysql_error());
                echo 'var o = null;';
                echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];'; 
                echo 's.options.length = 0;';
                while ($r = mysql_fetch_array($req))
                {
                        echo 's.options[s.options.length] = new Option("'.$r["cout"].'");';
                }
        break;
}
 
?>
mon probleme :
au chargement de la page le 2 premieres combo sont chargées mais la troisieme genere une erreur que voici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Erreur : s.options has no properties
Fichier source : http://127.0.0.1/recettes/Connections/scripts.js
Ligne : 25
je n'arrive pas à comprendre pourquoi ça fonctionne pour les 2 premieres mais pas pour la troisieme alors que le code est le même
merci d'avance pour vos idées