Bonjour,

étant débutant en Ajax (et dans tous les langages web), je suis confronté à un problème concernant 2 listes liées et des boutons radio.

J'ai en fait 2 listes, la seconde est remplie suivant la sélection dans la première, j'ai utilisé un exemple trouvé sur le web qui marche plutôt bien.

Le problème et que j'ai également 4 boutons radio (2x2), et je voudrais que la seconde liste soit remplie via la première liste mais aussi via les boutons radio sélectionnés (dans index.php ci-dessous list_type et filter-type).

Peut-être pouvez-vous m'aider?

Voici mon code:

index.php: (la partie qui m'interesse)
Code php : 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
 
<?php
include('db/mysql_db.php');		
echo '<form name="showdom" method="post" action="" >';
echo '<div id="id_listcat">';
echo '<p>Step 1: Select type: </p></br>';
echo '<input type="radio" name="list_type" value="domain" id="domain" checked="checked" )" /><label for="domain">domain</label>&nbsp';
echo '<input type="radio" name="list_type" value="url" id="url" )" /><label for="url">url</label></br></br>';
 
echo '<p>Step 2: Select list type: </p></br>';
echo '<input type="radio" name="filter_type" value="0" id="whitelist" checked="checked" )" /><label for="whitelist">whitelist</label>&nbsp';
echo '<input type="radio" name="filter_type" value="1" id="blacklist" )" /><label for="blacklist">blacklist</label></br></br>';
 
echo '<p>Step 3: Select a company: </p></br>';
echo '<select size=1 name="selectcompany" id="id_selectcompany" onChange="makeRequest(\'RepPhpAjax_showdom.php\',\'id_selectcompany\',\'id_listdom\')">'; 
echo '<option>Select: </option>';
$result_recherche=mysql_query("SELECT distinct company FROM $table_company ORDER BY company" ) or die ("Error: ".mysql_error());
$nombre_enr=mysql_num_rows($result_recherche);
while ($row=mysql_fetch_assoc($result_recherche)){
?>
<option value="<?php echo $row['company']?>">
<?php echo $row['company']?></option>
<?php		
echo '</select><br><br>'; 
echo '</div>';
echo '<div id="id_listdom">';
 
echo '</div>';
echo '</form>';			
mysql_close($conn);
?>

Script_js:

Code javascript : 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
 
// Requette AJAX
function makeRequest(url,id_niveau,id_ecrire){
var http_request = false;
//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
 
if (!http_request) {
alert('Abandon :( Impossible de créer une instance XMLHTTP');
return false;
}
http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); } //affectation fonction appelée qd on recevra la reponse
// lancement de la requete
http_request.open('POST', url, true);
//changer le type MIME de la requête pour envoyer des données avec la méthode POST 
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
obj=document.getElementById(id_niveau);
data="val_sel="+obj.value;
http_request.send(data);
}
 
function traitementReponse(http_request,id_ecrire) {
var affich="";
if (http_request.readyState == 4) {
if (http_request.status == 200) {
// cas avec reponse de PHP en mode texte:
//chargement des elements reçus dans la liste
var affich_list=http_request.responseText;
obj = document.getElementById(id_ecrire);
obj.innerHTML = affich_list;
}
else {
alert('Un problème est survenu avec la requête.');
}
}
}

RepPhpAjax_showdom.php:

Code php : 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
 
<?php
 
include ("db/mysql_db.php");
$listype=$_POST['list_type'];
$result_recherche=mysql_query("SELECT distinct $listype FROM $table_custom where company_location='".$_POST['val_sel']."' and type='".$_POST['filter_type']."' ORDER BY $listype" ) or die ("Error: ".mysql_error());
 
$aff="";
$aff=$aff."<select name='selectdom[]' id='id_selectdom' size='10'>";
 
while ($row=mysql_fetch_assoc($result_recherche)){
 
$aff.="<option value=\"$row[$listype]\">$row[$listype]</option>";
}
 
$aff=$aff."</select>

<br><br>";
 
echo $aff;
?>

Merci d'avance pour toute aide.