bonjour,

j'ai un problème avec une liste déroulante B (domodel) dont les valeurs sont dépendantes d'une liste déroulante A (brand).

Le problème est que lorsque je valide la page (1) ou se trouvent mes 2 listes déroulantes, par un bouton submit je passe à la page suivante et j'ai éventuellement besoin de revenir en arriere pour des corrections de saisies, et alors :
- ma selectbox 'brand' est ok : item selectionné
- ma selectbox 'domodel' a perdu ses values.

il faut dire que je ne suis pas developpeur Php ou Javascript et donc j'ai copié du code sur le web pour arriver au résultat actuel. J'ai cherché la solution a mon pb sur ce forum mais pas vraiment trouvé. Je pense ne pas être loin du but.

je suis parvenu a récupéré dans ma selectbox B (domodel) la valeur précédemment sélectionnée, grace a une variable de Session, le code ci-dessous positionne bien cette valeur dans la selectbox (domodel) mais elle n'est pas préselectionnée, malgré l'essai d'un selected="selected".

Le but est que les aller-retours entre la page 1 et la page 2 n'altèrent pas le contenu des 2 selectbox, qui doivent a chaque fois repartir vers la page 2 grace à la methode POST.

(la fonction JS selectModel() et suivantes est le code que j'ai récupéré sur le web)

merci pour votre aide.

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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php session_start(); ?> 
<html>
<head>
<?php
 
../..
 
$a = 0;
$cat_sql = "SELECT distinct(DOBRAND) FROM myfile order by DOBRAND ASC";
$cat_qry = mysql_query($cat_sql,$link);
while($cat_row = @mysql_fetch_array($cat_qry, MYSQL_ASSOC)){
$brandl[$a] = $cat_row['DOBRAND'];
$a++;
}
 
echo '<script language="JavaScript" type="text/JavaScript">

function selectModel(){

removeAllOptions(document.myform.domodel);';
 
for($a = 0; $a<sizeof($brandl); $a++){
 
echo 'if(document.myform.brand.value == "'.$brandl[$a].'"){';
 
$model_sql = "SELECT distinct(DOMODEL) FROM myfile WHERE DOMAINDO=0 AND DOBRAND='".$brandl[$a]."'";
$model_qry = mysql_query($model_sql,$link);
while($model_row = @mysql_fetch_array($model_qry, MYSQL_ASSOC)){
echo 'addOption(document.myform.domodel,"'.$model_row['DOMODEL'].'","'.$model_row['DOMODEL'].'");';
}//end of while loop
 
echo '}';
 
}//end of for loop
 
echo '
if(document.myform.brand.value == ""){
removeAllOptions(document.myform.domodel);
addOption(document.myform.domodel,"", "Select model");
}';
 
echo '}//end of function selectModel()';
 
 
echo '
function removeAllOptions(selectbox){

var i;
for(i=selectbox.options.length-1;i>=0;i--){
selectbox.remove(i);
}
}

function addOption(selectbox, value, text ){

var optn = document.createElement("OPTION");
optn.text = text;
optn.value = value;

selectbox.options.add(optn);
}

</script>';
?>
</head>
<body>
        <form name="myform" method="post" action="record_public.php" enctype="multipart/form-data" >
                <b>brand :</b> 
                    <select name="brand" id="brand" onChange="selectModel()">
                      <option value="">- New brand -</option>
                      <?php
						for($a = 0; $a<sizeof($brandl); $a++){
							echo '<option value="'.$brandl[$a].'">'.$brandl[$a].'</option>';
						}
					  ?>
                <br>
                <b>model :</b> 
                  <select name="domodel" id="domodel">
					<?php
					if(isset($_SESSION['model'])) {
						echo '<option value="'.$_SESSION['model'].'">'.$_SESSION['model'].'</option>';
						echo '<script>document.myform.domodel.selectedIndex = 1</script>';
						}
					Else
						echo '<option value="">Select model</option>';
					?>
                  </select>
				<input type="submit" value="Record">
        </form>
</BODY>
</HTML>
 
 
--------- record_public.php ----------------
 
<?php session_start(); ?> 
<HTML>
<body>
<?php
$domodel = $_POST[domodel];
../..
If (trim($domodel) !='') $_SESSION['model'] = $domodel;  
../..
?>
</BODY>
</HTML>