Pb liste deroulante liée

reg -  
 reg -
Bonjour,
Je suis debutant en php et javascript, j'ai lu pas mal de tuto et reponses qui pouvait repondre a ma question mais elles ne sont pas satisfaisantes.

Je n'arrive pas a faire de liste deroulante liée. Je voudrais en fonciton de la premiere liste afficher des resultats differents.

J'ai ce code:

<html>
<head>
<script language="javascript">
function changer(){ document.formulaire.id_continent.value=document.formulaire.deroulant.value;
document.formulaire.id_c.value=document.formulaire.deroulant.value;

}
</script>
</head>
<body>
<?php
include("inc_connexion.php");
//include("test.html");
$connexion=connexion();
if($connexion!=0)
{
$req2="select id_continent, nom_continent from continents";
//echo $req2;
$res2= mysql_query($req2) or die ("erreur req2". mysql_error());
echo "<ul border=7 width='20%' cellpadding='1' cellspacing='3' class='tabMenu' style='border:1px solid yellow' align='center'>";
echo"<center><li><a href='Accueil1.php' title='Accueil'><b>Accueil</b></a></li></center>";
echo "
<form name='formulaire' method='GET'>
<select name='deroulant' onChange='changer();''>";
while ($ligne= mysql_fetch_array($res2))
{
$id_continent1=$ligne['id_continent'];
$nom_continent1=$ligne['nom_continent'];
echo "<option value='$nom_pays1'>".$nom_continent1."</option>";
}echo "
</select>"; }
echo"<input type='text' name='id_continent'><input type='text' name='id_c'></form></ul>";
$id=$_GET['changer()'];
include ('Nouveau3.php');

?>
</body>
</html>

Comment je peux faire pour transformer le input (vers la fin du script) en une liste deroulante?
Et il faudrait que dans la deuxieme liste deroulante n'affiche que les pays qui se trouve dan s le continent selectionné dans la premiere liste deroulante. Et pour cela j'ai donc crée deux table avec un champs en commun qui est l'id_continent.
Merci d'avance pour votre aide et merci d'avoir pris la peine de lire ce long script.

A voir également:

6 réponses

Passarinho44 Messages postés 977 Statut Contributeur 132
 
Bonjour,

Alors pour faire cela tu as trois choix :
- Soit tu te lances dans de l'Ajax pour faire un truc propre et fonctionnel mais difficile à mettre en place. Comme tu dis être débutant je ne pense pas que ce soit le plus simple pour toi ...
- Soit tu crée toutes les listes déroulantes possibles et tu affiches juste celle que tu veux ( si j'ai bien compris ça sera une par continent donc c'est encore faisable mais peu recommandé )
- Soit tu remplis ta liste déroulante en javascript selon ce qui est choisi dans la première
La dernière me parait la mieux adaptée.
Le principe sera que quand la première change ça lance la fonction (comme ça le fait déjà) et que cette fonction remplira la deuxième liste avec certaines valeur selon la valeur choisie dans la première liste.

Je ne sais pas si je suis très clair :x

0
reg
 
Bonjour,
C'est la troisieme solution que j'ai obté.
Mais je bloque.
J'arrive a afficher la premiere liste avec tous les continents qui est dans ma bdd.
J'arrive aussi a afficher tous les pays dans ma bdd. Mais j'arrive pas a faire en sorte qu'il ne selectionne que les pays en fonction d'un continent.
Dans le script que j'ai mis plus haut j'ai reussi a afficher les continents dans la liste deroulante et dans le input text sont id. Comment je peux faire pour recuperer la valeur du id?
Aurais-tu un bout de script pour me mettre dans la voix?
Merci d'avance pour ton aide.
0
Passarinho44 Messages postés 977 Statut Contributeur 132
 
Je n'ai pas de bout de script sous la main dsl :x
Je peux juste te guider pour tes recherches :

Alors déjà pour récupérer la valeur d'un élément en Javascript :
document.getElementById("id_de_ton_element").value

Donc pour cela il va falloir que tu ajoutes un id à ta liste déroulante des continents. donc dans ta balise select tu ajoutes juste : id="continents" par exemple

Et ton script va etre :

if ( document.getElementById("continents").value == "Europe" ) {
// ici tu mets à partir de ta base de données et du javascript les pays de l'Europe dans la liste déroulante
// n'oublie pas de mettre aussi un id à ta liste déroulante des pays pour pouvoir la retrouver par la même méthode que celle des continents.

Après en cherchant un peu sur internet tu trouveras des scripts tout fait pour vider une liste déroulante en javascript, pour la remplir, etc :)

J'espère que ça va t'aider
0
reg
 
Ok je vais voir ca.
Par contre pour le " document.getElementById("id_de_ton_element").value "
je le place où? Dans le javascript entre les head? Si c'est le cas je le place a la suite de ce que j'ai mis a savoir:

function changer(){ document.formulaire.id_continent.value=document.formulaire.deroulant.value;
document.formulaire.id_c.value=document.formulaire.deroulant.value;
document.getElementById("id_de_ton_element").value// ce que tu m'as dit de mettre
}

Merci pour ton aide.
0

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

Posez votre question
Passarinho44 Messages postés 977 Statut Contributeur 132
 
Non non, le document.getElementById("id_de_ton_element").value c'était juste pour que tu aies un exemple de comment ça marche.

La partie à mettre dans ta fonction javascript c'est celle que j'ai mis après avec le if.
Bien sur elle est à compléter mais l'idée est là.
Si tu as des problèmes pour le faire tourner hésites pas à me mettre ton code ici :)
0
reg
 
B'jour,
J'ai toujours pas trouvé de sollution a mon probleme.
Je ne sais pas ce qu'il faut faire. Pouvez vous m'expliquer comment faire le code javascript avec l'aide de ces codes?

Code pour afficher tous les continents:

$req2="select id_continent, nom_continent  from continents";
             
              $res2= mysql_query($req2) or die ("erreur req2". mysql_error());
              
             
              echo "
<form name='formulaire' method='GET'>
<select name='deroulant' onChange='changer();''><option value='0'>Selectionner un continent</option>";

  while  ($ligne= mysql_fetch_array($res2))
  {
            
                   $id_continent1=$ligne['id_continent'];
                    $nom_continent1=$ligne['nom_continent'];
echo "<option value='$id_continent1'>".$nom_continent1."</option>"; 
}
           echo "
    </select>"; 
 
     echo"<input name='id_continent12' value='id_continent12'></form></ul>";
  


Code qui affiche TOUS les pays (alors que je ne souhaite qu'afficher ceux qui font partis du continent selectionné):

$req3="select pays.id_continent, nom_pays  from pays, continents where pays.id_continent=continents.id_continent";
              //echo $req2;
              $res3= mysql_query($req3) or die ("erreur req2". mysql_error());
             
               
              echo "
<form name='formulaire1' method='GET'>
<select name='deroulant1' onChange='changer1();''>";
while ($ligne= mysql_fetch_array($res3))
              {
                    //if ($id_continent=='1'){ 
                   $id_continent1=$ligne['id_continent'];
                    $nom_pays1=$ligne['nom_pays'];
echo "<option value='$id_continents1'>".$nom_pays1."</option>";
}echo "
    </select>"; 
                while  ($ligne= mysql_fetch_array($res3))   {
               
            echo"<select size='1' name='g'><option value='id_continent1'>".$nom_pays."</otpion></form></ul>";
            }


Comment faire pour relier ces deux listes deroulantes. J'ai essayé plusieur code trouver sur divers sites/ forum mais ca n'a pas marché.
0