Listes deroulantes avec choix influent sur autres listes!!

zigzou Messages postés 8 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 29 juin 2004 - 28 juin 2004 à 17:59
mbvitse Messages postés 9 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 7 avril 2005 - 8 mars 2005 à 09:17
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

cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
29 juin 2004 à 11:51
[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]]
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
29 juin 2004 à 11:55
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]]
0
zigzou Messages postés 8 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 29 juin 2004
29 juin 2004 à 12:33
bah je te remercie bul!! ;)

Je vasi tester ca de ce pas!
0
zigzou Messages postés 8 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 29 juin 2004
29 juin 2004 à 15:10
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.
0

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

Posez votre question
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
29 juin 2004 à 15:29
[ 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]]
0
zigzou Messages postés 8 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 29 juin 2004
29 juin 2004 à 15:34
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!)
0
zigzou Messages postés 8 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 29 juin 2004
29 juin 2004 à 17:07
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();
?>
0
mbvitse Messages postés 9 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 7 avril 2005
8 mars 2005 à 09:17
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
0
Rejoignez-nous