Listes deroulantes avec choix influent sur autres listes!!

Signaler
Messages postés
8
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
29 juin 2004
-
Messages postés
9
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
7 avril 2005
-
Voila je suis nouveau dans la communauté du javascript! :/

Et g un petit problème:

Dans une de mes tables (mySQL) j'effectue une requete pour connaitre le contenu d'une liste deroulante.

J'aimerais que, lorsque l'utilisateur est fait son choix dans la premiere liste, le contenu de la seconde liste déroulante change en fonction de ce choix (contenu également dans une BDD). Le problème c'est qu'avec un bouton submit je ne recupere pas le premier choix influent sur le second :'( !!!

Je vous montre mon code actuel (sans javascript car mes tests furent non concluant!):

$famille = mysql_query("SELECT DISTINCT nomfamille, idfamille FROM ssousfamilles;");
$nomfamille=array();
$numfam=array();

$z1=0; $z2=0;
echo '<td><center><select name="famille">';
while($family = mysql_fetch_array($famille)){
$nomfamille[$z1] = $family['nomfamille'];
$numfam[$z1] = $family['idfamille'];
echo'<option value='.$numfam[$z1].'>'.$nomfamille[$z1].'</option>';
$z1++;
}
echo'</select></center></td>';

echo '<td><center><select name="sousfamille">';

$choix_famille = $_POST['famille'];

$sfamille = mysql_query("SELECT DISTINCT idsfamille, nomsfamille FROM ssousfamilles WHERE idfamille='.$choix_famille.'");
$numsfam = array();
$nomsfamille = array();

while($sfamily = mysql_fetch_array($sfamille)){
$nomsfamille[$z2] = $sfamily['nomsfamille'];
$numsfam[$z2] = $sfamily['idfamille'];
echo'<option value='.$numfam[$z2].'>'.$nomfamille[$z2].'</option>';
$z2++;
}
echo '</select></center></td>';

Si jamais vous ne comprenez pas ce que je souhaite n'hésitez pas a me demander de reformuler!!! ;)

(concretement: je fais une requete pour faire le contenu de la premiere liste, je souhaite recuperer le choix ici $$numfam[$z1] pour ensuite recuperer en fonction de ce choix le contenu d'une autre liste :p )

Merci d'avance pour le coup de main car ca fait un bail que je suis coincé, google a beau etre sympas il m'a pas suffisament aidé la dessu :'(......

8 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
[Bonjour, br une recherche sur ce forum aurait sûrement br permis d avoir une réponse. nombreux br exemples, questions/réponses ... sur ce sujet. br un exemple : br [url= br http://marcel-bultez.chez.tiscali.fr/documents/PHP/PHP.php
cliquer ici]
Cordialement Bul. [Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
texte bouffé dans réponse précédente ?
nombreux exemples,questions/réponses
sur le sujet.
http://marcel-bultez.chez.tiscali.fr/documents/PHP/PHP.php
une rubrique en parle
Cordialement Bul. [Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
Messages postés
8
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
29 juin 2004

bah je te remercie bul!! ;)

Je vasi tester ca de ce pas!
Messages postés
8
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
29 juin 2004

Bon bah gros pb!

J'ai testé ton code il marche nicquel avec mes modifs (mes requetes... )

Et la premiere partie s'affiche bien, la page s'actualise mais la seconde liste ne se remplit pas!!! :'(
(de plus je te l'ai pas dis mais y en a une troisieme qui depend de la seconde mais ca je verrais plus tard!!!!):

Donc voila les modiffs:

<?php
//=====================================
//== ouverture de la base de données
//=====================================
$co=mysql_connect("localhost","root","");


$dbnom="MD2i";
$db=mysql_select_db($dbnom,$co);

$res=mysql_query("SELECT DISTINCT nomfamille, idfamille FROM ssousfamilles;");
$max=@mysql_num_rows($res);
?>
<script type="text/javascript">
function appel()
{ location.href="test.php?tbl2="+tb1.options[tb1.selectedIndex].text; }
//========================================
//== rappel de la page en passant en paramètre
//== la ligne cliquée dans table 1
//========================================
</script>
<select name="tb1" size=1
onchange='appel();'><?
for ($nb=0;$nb<$max;$nb++)
{ $i=mysql_result($res,$nb,'nomfamille');
?><option><?echo $i; }
?></select><?
if (isset($_GET["tbl2"]))
{ //=======================================
//== si tbl2 est défini, c'est qu'on a
//== cliqué sur une ligne de table 1
//=======================================
$rch="WHERE nomfamille='".$_GET["tbl2"]."'";
$choix = $_GET["tbl2"];
$res=mysql_query("SELECT DISTINCT idsfamille, nomsfamille FROM ssousfamilles".$rch,$co);
$max=@mysql_num_rows($res);
//========================================
//== on affiche donc dans un select la TABLE 2
//========================================
?><select name="tb2" size=1><?
for ($nb=0;$nb<$max;$nb++)
{ $i=mysql_result($res,$nb,"nomsfamille");
?><option><?echo $i; }
?></select><? }
mysql_close($co);
?>

Les champs de ma table sont : idfamille ; idsfamille ; idssfamille ; nomfamille ; nomsfamille ; nomssfamille.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
[ y a pas de raisons , sauf mauvais select, br tables .... br u mon exemple marche-t-il lui ? /u br chez moi pas de pb br faire un pas à pas , contrôler le code généré ... br table border=0 cellspacing=0 cellpadding=4 bgcolor=#E0E0E0 tr td class=code br $rch= WHERE nomfamille= .$_GET[ tbl2 y a pas de raisons , sauf mauvais select, br tables .... br u mon exemple marche-t-il lui ? /u br chez moi pas de pb br faire un pas à pas , contrôler le code généré ... br table border=0 cellspacing=0 cellpadding=4 bgcolor=#E0E0E0 tr td class=code br $rch= WHERE nomfamille= .$_GET[ tbl2]."'";

?><script>alert("<?echo $_GET["tbl2Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
Messages postés
8
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
29 juin 2004

Bah je veux bien k il y est une erreur de select ou quoi que ce soit!!

Mais mon dernier test c'etait juste un changement de requete et de connexion a ma base avec ton code! Donc a mon avis le pb vient d'ailleurs (X-Files... o_O)!

Si tu pouvais me filer un chtit coup de main ce serait agréable (allez juste un peu de ton temps.... =) )

Sinon la je continue a faire des tests ( pas tres concluant donc je vais continuer... mais je risque de sauter par la fenetre un de ces 4!)
Messages postés
8
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
29 juin 2004

C bon j'ai reussi !!!!! :D

La seconde liste depend de la seconde!!

Mais g un dernier soucis la troisieme liste ne depend pas de la troisième...

Voici mon code si tu peux analysé la ou ca peche pour la troisieme liste ce serait vraiment super sympas!!! ;)

<?php
//===================================== //ouverture de la base de données
//=====================================
mysql_connect("localhost","root","");
mysql_select_db("MD2i");


$famille = mysql_query("SELECT DISTINCT nomfamille, idfamille FROM ssousfamilles;");

?>
<script type="text/javascript">
function appel()
{ location.href="test2.php?tbl2="+tb1.options[tb1.selectedIndex].text; }
//=============================================== //rappel de la page en passant en paramètre //la ligne cliquée dans table 1
//===============================================
</script>
<select name="tb1" size=1
onchange='appel();'><?

$z1=0;

$nomfamille=array();
$numfam=array();

while($family = mysql_fetch_array($famille)){
$nomfamille[$z1] = $family['nomfamille'];
$numfam[$z1] = $family['idfamille'];
echo'<option>'.$nomfamille[$z1].'</option>';
$z1++;
}echo'</select>';

/*for ($nb=0;$nb<$max;$nb++)
{ $i=mysql_result($res,$nb,'nomfamille');
?><option><?echo $i; }
?></select><?*/



if (isset($_GET["tbl2"]))
{ //======================================= //si tbl2 est défini, c'est qu'on a //cliqué sur une ligne de table 1
//=======================================
//$rch="WHERE nomfamille='".$_GET["tbl2"]."'";
$choix = $_GET["tbl2"];
echo ''.$choix.'

';
//$res=mysql_query("SELECT DISTINCT idsfamille, nomsfamille FROM ssousfamilles".$rch);
$sfamille = mysql_query("SELECT DISTINCT idsfamille, nomsfamille FROM ssousfamilles WHERE nomfamille='".$choix."'");


//=============================================== //on affiche donc dans un select la TABLE 2
//===============================================
?><select name="tb2" size=1><?

$numsfam = array();
$nomsfamille = array();

$z2=0;
while($sfamily = mysql_fetch_array($sfamille)){
$nomsfamille[$z2] = $sfamily['nomsfamille'];
//$numsfam[$z2] = $sfamily['idfamille'];
echo'<option>'.$nomsfamille[$z2].'</option>';
$z2++;
}echo'</select>';
}

/*for ($nb=0;$nb<$max;$nb++)
{ $i=mysql_result($res,$nb,"nomsfamille");
?><option><?echo $i; }
?></select><? }*/


mysql_close();
?>
Messages postés
9
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
7 avril 2005

J'ai utlisé ta methode, j'ai changé la fonction pour retrouvé l'ID de la table plustôt que le texte

function appel()
{ location.href="Document21.php3?tbl2="+tb1.options[tb1.selectedIndex].value;}

cependant j'ai un problème le champs de depart disparait alors que la valeur je dois la recuperer avec les POST

Si tu as une idée

merci


Michel