Liste liée - Formulaire

Résolu
cs_onylink Messages postés 19 Date d'inscription jeudi 19 mars 2009 Statut Membre Dernière intervention 14 août 2009 - 25 juin 2009 à 13:31
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 25 juin 2009 à 16:34
Bonjour,


J'essai de liées des listes dans un formulaire, mais après mon choix rien ne se passe.. Mais je n'ai pas d'erreur..


Page appelante :
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Acquisition species variant</title>
<head>
<script type="text/javascript">
function request05(liste)
{
var l1 = f.elements["list1"];
var l2 = f.elements["list2"];
var index = l1.selectedIndex;
if(index < 1)
l2.options.length = 0;
else{
var xhr_object = null;

if(window.XMLHttpRequest)// Firefox
xhr_object = new XMLHttpRequest();
elseif(window.ActiveXObject)// Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else{// XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
 
xhr_object.open("POST", "test2.php", true);

xhr_object.onreadystatechange = function(){
if(xhr_object.readyState == 4)
eval(xhr_object.responseText);
}
 
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var data = "speciesvariant_name="+escape(l1.options[index].value)+"&form="+f.name+"&select=list2";
xhr_object.send(data);
}
 
}
</script>
</head>

<form name="enter_nvll_xp_choix" action="Entree_dans_la_bdd/enter_DB_experience.php" method="POST">
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("test");
 
$experience = mysql_query("SELECT * FROM speciesvariant");
 
echo '<tr><td>Test listes liees:</td>';

echo '<td><select name="list1" id="list1" class="ButtonL" onchange="request05(this.form)">';
echo '<option value="" selected disabled>Choix</option>';

while($speciesvariant_name1 = mysql_fetch_array($experience))
{
$speciesvariant_name2 = $speciesvariant_name1['speciesvariant_name'];
echo "<option value="$speciesvariant_name2"> $speciesvariant_name2 </option>";
}
//echo '</select>';
echo '</td><td><select name="list2" id="list2" class="ButtonL"></td>';

 
/*---------------------------------------------------------------------*/
 
 
mysql_close();
?>

test2.php :
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>test</title>
<head>
 
</head>
 

 
<?php
$mysql_db = @mysql_connect("localhost", "root", "");
@mysql_select_db("test");
 $query "SELECT `AGI` FROM `gene` WHERE `speciesvariant_name` '".$_POST["speciesvariant_name2"]."'";
$query .= " ORDER BY `AGI`";
$result = @mysql_query($query);
 
echo 'var o = null;';
echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];';
echo 's.options.length = 0;';
while($r = mysql_fetch_array($result))
echo 's.options[s.options.length] = new Option("'.$r["AGI"].'");';
 
@mysql_close($mysql_db);
?>

 
</html>

Est-ce vous pourriez me dire pourquoi la seconde liste ne se rempli pas ?


Merci pour votre aide.


Bien Cordialement,

Onylink (Master 1 Bio-informatique)

6 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
25 juin 2009 à 13:50
Bonjour,

oulah....   
tu utilises ajax, ça retourne du texte dans une variable javascript !
donc, si je lis bien :
echo 'var o = null;';
echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];';
echo 's.options.length = 0;';

???? c'est du javascript ! donc non exécuté !
il faudrait le faire "manuellement"
et dans la même réponse, ça ajoute du html !
echo 's.options[s.options.length] = new Option("'.$r["AGI"].'");';
qui n'est pas affiché non plus ! et pas dans une balise <select>
là aussi, il faut le faire "manuellemnt" !

sans préjuger de ce qui se passe et coté php, et coté javascript !
comme on ne peut pas tester....

t'es sur la mauvaise voie....
tout ce que je peux faire, pour le moment, c'est
te donner un lien où la gestion de listes liées
est abordé : c'est ici

Cordialement [mon Site] [M'écrire] Bul
3
cs_onylink Messages postés 19 Date d'inscription jeudi 19 mars 2009 Statut Membre Dernière intervention 14 août 2009
25 juin 2009 à 14:20
oki, merci pour le lien..

Pour faire l'AJAX j'ai suivi un tuto.. J'ai remplacé mes variables et adapté à ma bdd.
http://www.toutjavascript.com/savoir/xmlhttprequest.php3#section_05

Je vais tenter de faire avec le lien que tu m'as envoyé..

Cordialement,
Onylink
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
25 juin 2009 à 14:41
>>Pour faire l'AJAX j'ai suivi un tuto..
certes... tu a simplement shunté que le script sur le serveur
retourne des données, du texte brut... qui doit être exploité
par le javascript.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
25 juin 2009 à 14:43
et, ça doit dater un peu...
ajax fonctionne avec tous les navigateurs de nos jours
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_onylink Messages postés 19 Date d'inscription jeudi 19 mars 2009 Statut Membre Dernière intervention 14 août 2009
25 juin 2009 à 16:15
Merci grâce à ton lien j'ai réussi à faire ce que je voulais..

Maintenant je vais essayé d'en lier plusieurs..
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
25 juin 2009 à 16:34
nickel si ça baigne.
>>Maintenant je vais essayer d'en lier plusieurs..
3 ou plus, un ch'tiot peu plus complexe, mais
   ce n'est au fond, qu'une "généralisation" de
   2 listes    ;o))
0
Rejoignez-nous