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> '; 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> '; 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.
Partager