Bonjour,
je possède une page avec un formulaire contenant deux listes et des boutons radio liés (discussion précédente: http://www.developpez.net/forums/d11...boutons-radio/ qui fontionne bien.
Ma seconde liste se remplie suivant la sélection dans la première et la valeur des radio.
Mais je voudrais pouvoir supprimer la selection dans la seconde liste en cliquant sur un bouton delete.
Le problème est que la seconde liste est générée via une autre page php et je n'arrive pas à récupérer la selection dans la première page.
Auriez-vous une solution ou un exemple pour m'aider?
Voici mon code:
Fonction ajax (ajax_refresh_list.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
50
51
52 // Requette AJAX pour récupérer valeur liste + valeur radio list_type et filter_type function makeRequest1(url,id_selectcompany,id_selectdom,nom_radio_filter){ 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_selectdom); } //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 , !!!! cette ligne doit etre absolument apres http_request.open('POST'.... http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); obj=document.getElementById(id_selectcompany); http_request.send('val_sel='+obj.value+'&list_type_val='+ get_list_type_Value() +'&filter_type_val='+get_filter_type_Value(nom_radio_filter)); } // Fonction pour récupérer la valeur des radio list_type function get_list_type_Value(){ var lstRadios = document.getElementsByName('list_type'); for(var i=0; i<lstRadios.length; i++){ if(lstRadios[i].checked){ return lstRadios[i].value; } } return null; } // Fonction pour récupérer la valeur des radio filter_type function get_filter_type_Value(nom_radio_filter){ var lstRadios = document.getElementsByName(nom_radio_filter); for(var i=0; i<lstRadios.length; i++){ if(lstRadios[i].checked){ return lstRadios[i].value; } } return null; }
2e page 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 <?php include ("db/mysql_db.php"); $list_type=$_POST['list_type_val']; $result_recherche=mysql_query("SELECT distinct $list_type FROM Custom_URL where company_location='".$_POST['val_sel']."' and type='".$_POST['filter_type_val']."' ORDER BY $list_type" ) or die ("Error: ".mysql_error()); $aff=""; $aff=$aff."<select name='selectdom[]' id='id_selectdom' size='10' multiple='multiple'>"; while ($row=mysql_fetch_assoc($result_recherche)) { $aff.="<option value=\"$row[$list_type]\">$row[$list_type]</option>"; } $aff=$aff."</select><br><br>"; echo $aff; mysql_close($conn); echo '<p>Click on Delete button to apply: </p></br>'; echo '<input class="button" type="submit" name="Deletedomain" value="Delete" >'; ?>
page1.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
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 <html> <head> <link href="css/styles.css" rel="stylesheet" type="text/css" /> <script LANGUAGE="Javascript" SRC="js/functions.js"></script> <script LANGUAGE="Javascript" SRC="js/ajax_refresh_list.js"></script> </head> <body id="included-pages"> <?php include('db/mysql_db.php'); echo '<form name="showdom" method="post" action="" >'; echo '<div id="id_listcat">'; echo '<input type="radio" name="list_type" value="domain" checked="checked" /><label>domain</label> '; echo '<input type="radio" name="list_type" value="url" /><label for="url">url</label></br></br>'; echo '<input type="radio" name="filter_type3" value="0" checked="checked" /><label>whitelist</label> '; echo '<input type="radio" name="filter_type3" value="1" /><label>blacklist</label></br></br>'; echo '<select size=1 name="selectcompany2" id="id_selectcompany2" onChange="makeRequest1(\'RepPhpAjax_deldom.php\',\'id_selectcompany2\',\'id_listdom\',\'filter_type3\')">'; echo '<option>Select: </option>'; $result_recherche=mysql_query("SELECT distinct company_location FROM company_conf ORDER BY company_location" ) 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_location']?>"> <?php echo $row['company_location']?></option> <?php } echo '</select><br><br>'; echo '</div>'; echo '<div id="id_listdom">'; echo '<select name="selectdom[]" id="id_selectdom" size="10" multiple="multiple">'; echo '<!-- ici sera charge la reponse mode texte de PHP à la request AJAX -->'; echo '</select><br>'; if(isset($_POST['Deletedomain'])) { $list_type=$_POST['list_type']; echo $list_type; echo $_POST['selectcompany2']; echo $_POST['selectdom']; echo $_POST['filter_type3']; foreach ($_POST['selectdom'] as $urlordomain_selected) { mysql_query("delete FROM Custom_URL where company_location='".$_POST['selectcompany2']."' and $list_type=$urlordomain_selected and type='".$_POST['filter_type3']."'") or die ("Error: ".mysql_error()); } } echo '</form>'; mysql_close($conn); ?> </body> </html>
Et le code html généré:
Code html : 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 <html> <head> <link href="css/styles.css" rel="stylesheet" type="text/css" /> <script LANGUAGE="Javascript" SRC="js/functions.js"></script> <script LANGUAGE="Javascript" SRC="js/ajax_refresh_list.js"></script> <script> $(document).ready(function(){ // When a link is clicked $("a.tab").click(function () { // switch all tabs off $(".active").removeClass("active"); // switch this tab on $(this).addClass("active"); // slide all elements with the class 'content' up $(".content").slideUp(); // Now figure out what the 'title' attribute value is and find the element with that id. Then slide that down. var content_show = $(this).attr("title"); $("#"+content_show).slideDown(); }); }); </script> </head> <body id="included-pages"> <div class="container"> <ul class="tabs"> <li><a href="#tabs-1">Show Domain/URL</a></li> </ul> <div class="tab_container"> <div id="tabs-1" class="tab_content"> <form name="showdom" method="post" action="" > <div id="id_listcat"> <input type="radio" name="list_type" value="domain" checked="checked" /><label>domain</label> <input type="radio" name="list_type" value="url" /><label>url</label></br></br> <input type="radio" name="filter_type3" value="0" checked="checked" /><label>whitelist</label> <input type="radio" name="filter_type3" value="1" /><label>blacklist</label></br></br> <select size=1 name="selectcompany2" id="id_selectcompany2" onChange="makeRequest1(\'RepPhpAjax_deldom.php\',\'id_selectcompany2\',\'id_listdom\',\'filter_type3\')"> <option>Select: </option> <option value="test1">test</option> <option value="test2">test2</option> </select><br><br> </div> <div id="id_listdom"> <select name="selectdom[]" id="id_selectdom" size="10" multiple="multiple"> <!-- ici sera charge la reponse mode texte de PHP ? la request AJAX --> </select><br> </div> </form> </div> </div> </div> <body> </html>
Partager