|
Publicité | ||||||||||||||||||||||
|
|
#1 (permalink) |
|
Membre habitué
![]() Date d'inscription: avril 2009
Localisation: Rennes
Messages: 146
|
Bonjour a tous,
Mon problème se situe entre le HTML et le PHP: J'ai un formulaire avec plusieurs listes déroulantes (dont certaines conditionnées par du javascript) qui appelle une autre page de traitement qui va devoir récupérer les valeurs sélectionnées. Sa fait un bon momment que je m'arache les cheveux dessus et pourtant je ne comprend pas une des liste déroulante n'est pas récupérable(une seule), c'est une des deux qui est conditionnées par du javascript: voila le code source du formulaire: Code :
<form method="post" action="index.php?action=consultdonne&comparDonnee=ok&DonneesComparform1=remplis&valid=ok&ecran1=ok"> <fieldset> <label>Secteur</label> <select name='secteur' id='secteur' onchange='go()' > <option value='-1'>Aucun</option> <option value='5' >Consommation de l'industrie</option><option value='4' >Consommation du bâtiment</option><option value='3' >Consommation du transport</option><option value='2' selected='selected'>Production d'électricité</option><option value='2' >Production d'électricité</option><option value='1' >Production d'hydrogène</option><option value='6' >Production de chaleur</option></select> <label for="techno">Technologie 1</label> <div id='technos' class="divdislpay"> <select name="techno" id="techno"> <option value='-1'>Choisir un secteur</option>//LISTE PARAMETRABLE PAR DU JS </select> </div> <label for="technocompar">Technologie 2</label> <div id='technoss' class="divdislpay"> <select name="technocompar" id="technocompar"> <option value='-1'>Choisir un secteur</option>//LISTE PARAMETRABLE PAR DU JS </select> </div>//SUIVE D'AUTRE LISTE Code :
if (isset($_POST['techno'])) { //traitement } if (isset($_POST['technocompar'])) { //traitement } |
|
|
|
|
|
#2 (permalink) |
|
Membre émérite
![]() Date d'inscription: avril 2008
Localisation: Nancy (54)
Âge: 33
Messages: 979
|
Le problème n'a pas l'air de venir de ton html... et si tu nous montrais le js qui agit sur ces deux select ? ^^
__________________
Pour ceux qui s'ennuient ou qui ont envie de se changer les idées : >>> essayez mon générateur de phrases aléatoires (attention : version IE/Opera non encore opérationnelle, utilisez un autre navigateur (FF, GoogleChrome, Safari, etc.) s'il vous plaît (un peu plus de (4.8 x 10 puissance 74) phrases possibles actuellement --- >>> ou entrez dans la spirale des labyrinthes... ^^ (duels entre joueurs, avec éditeur de labyrinthes intégré et moteur 3D très propre)(pour vous mesurer à moi, cherchez : "toshir0") |
|
|
|
|
|
#3 (permalink) |
|
Membre habitué
![]() Date d'inscription: avril 2009
Localisation: Rennes
Messages: 146
|
Je suis d'acord avec toi car le premier marche très bien en plus le code java script était a la base fait pour marcher sur une seul liste, voila le code:
Code :
<script type='text/javascript'> function getXhr() { var xhr = null; if(window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if(window.ActiveXObject) { // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false; } return xhr; } /** * Méthode qui sera appelée sur le click du bouton */ function go() { var xhr = getXhr(); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200) { leselect = xhr.responseText; document.getElementById('techno').innerHTML = leselect; } } // Ici on va voir comment faire du post xhr.open("POST","ajaxTechno.php",true); // ne pas oublier ça pour le post xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // ne pas oublier de poster les arguments // ici, l'id de l'auteur sel = document.getElementById('secteur'); secteur = sel.options[sel.selectedIndex].value; xhr.send("secteur="+secteur); } </script> |
|
|
|
|
|
#4 (permalink) |
|
Membre habitué
![]() Date d'inscription: avril 2009
Localisation: Rennes
Messages: 146
|
derriere il y'a de l'ajax dont voici le code:
Code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" /> </head> <body> <?php session_start(); echo "<select name='techno'>"; if(isset($_POST["secteur"])){ mysql_connect("localhost","root",""); mysql_select_db("maquette_refcost"); $res = mysql_query("SELECT NUMTECHNO, NOMTECHNO FROM techno WHERE NUMSECTEUR=".$_POST["secteur"]." ORDER BY NOMTECHNO"); while($row = mysql_fetch_assoc($res)) { if(isset($_SESSION['techno'])and $_SESSION['techno']==$row["NOMTECHNO"]) { echo "<option value='".$row["NUMTECHNO"]."'selected='selected'>".htmlentities($row["NOMTECHNO"])."</option>"; } else { echo "<option value='".$row["NUMTECHNO"]."'>".htmlentities($row["NOMTECHNO"])."</option>"; } } } echo "</select>"; ?> </body> </html> |
|
|
|
|
|
#5 (permalink) |
|
Membre émérite
![]() Date d'inscription: avril 2008
Localisation: Nancy (54)
Âge: 33
Messages: 979
|
Heu...
La portion de code html renvoyée par ton php reprend tous les éléments d'une page complète (html, head, body, etc.) et tu vas l'insérer dynamiquement dans le contenu d'un select ? >>> a priori ce morceau de php appelé par ajax ne devrait renvoyer que la partie à insérer, c'est-à-dire le code correspondant au contenu de ton select, c'est-à-dire une série d'options (sans <select proprieteMachin="truc"></select> qui ne correspond pas au "contenu" mais au "contenant"). Ca te permettra d'ailleurs d'insérer ce même contenu dans tes 2 select, de manière à ce qu'ils conservent leur name différent. Essaie ceci : Code php :
<?php session_start(); //echo "<select name='techno'>"; if(isset($_POST["secteur"])){ mysql_connect("localhost","root",""); mysql_select_db("maquette_refcost"); $res = mysql_query("SELECT NUMTECHNO, NOMTECHNO FROM techno WHERE NUMSECTEUR=".$_POST["secteur"]." ORDER BY NOMTECHNO"); while($row = mysql_fetch_assoc($res)) { if(isset($_SESSION['techno'])and $_SESSION['techno']==$row["NOMTECHNO"]) { echo "<option value='".$row["NUMTECHNO"]."'selected='selected'>".htmlentities($row["NOMTECHNO"])."</option>"; } else { echo "<option value='".$row["NUMTECHNO"]."'>".htmlentities($row["NOMTECHNO"])."</option>"; } } } //echo "</select>"; ?> )Code javascript :
xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200) { options = xhr.responseText; document.getElementById('techno').innerHTML = options; document.getElementById('technocompar').innerHTML = options; } }
__________________
Pour ceux qui s'ennuient ou qui ont envie de se changer les idées : >>> essayez mon générateur de phrases aléatoires (attention : version IE/Opera non encore opérationnelle, utilisez un autre navigateur (FF, GoogleChrome, Safari, etc.) s'il vous plaît (un peu plus de (4.8 x 10 puissance 74) phrases possibles actuellement --- >>> ou entrez dans la spirale des labyrinthes... ^^ (duels entre joueurs, avec éditeur de labyrinthes intégré et moteur 3D très propre)(pour vous mesurer à moi, cherchez : "toshir0") |
|
|
|
|
|
#6 (permalink) |
|
Membre habitué
![]() Date d'inscription: avril 2009
Localisation: Rennes
Messages: 146
|
en transformant le script comme tu me le dit:
Code :
<?php session_start(); if(isset($_POST["secteur"])){ mysql_connect("localhost","root",""); mysql_select_db("maquette_refcost"); $res = mysql_query("SELECT NUMTECHNO, NOMTECHNO FROM techno WHERE NUMSECTEUR=".$_POST["secteur"]." ORDER BY NOMTECHNO"); while($row = mysql_fetch_assoc($res)) { if(isset($_SESSION['techno'])and $_SESSION['techno']==$row["NOMTECHNO"]) { echo "<option value='".$row["NUMTECHNO"]."'selected='selected'>".htmlentities($row["NOMTECHNO"])."</option>"; } else { echo "<option value='".$row["NUMTECHNO"]."'>".htmlentities($row["NOMTECHNO"])."</option>"; } } } ?> echo "<select name='techno'>"; sa ne marche plus du tout .je vais regarder avec DOM voir ce que sa donne |
|
|
|
|
|
![]() |
||
Récupération d'un SELECT
|
||
| Outils de la discussion | |
|
|