La Communauté Webmaster  forum rss


  Forum-webmaster
  Technique - programmation
  Javascript / DOM / Ajax
(Modérateurs: Shain, Netah, Lilian, lauryv, ToToMaStEr)
  Listes déroulantes liées
« Précédent Suivant »
Pages: [1] Descendre
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
  Auteur  Sujet: Listes déroulantes liées  (Lu 1228 fois)
Listes déroulantes liées
« sur: le 10-06-2005 a 14:25:33 »
enjoy man
Membre récent
*

Hors-Ligne

Messages: 3





Voir le Profil
Répondre avec citation

Bonjour à tous
Voila mon problème.
Je veux créer deux listes déroulantes liées entre elles. Cad: les valeurs de la deuxième liste dépendent du choix du visiteur dans la première. Un exemple sur www.autoscout24.lu
Le problème c'est que mes valeurs sont stockées dans une base de données. Mais est-ce un problème ? J'ai bien trouvé des javascript mais ils font appel à des chaînes, pour appeller une bdd je bloque. (exemple: http://www.alistapart.com/d/complexdynamiclists/dynamicselect.html )
Quelqu'un aurait-il une idée, un conseil ? Merci à vous et bonne journée
Cyril

Rapporter au modérateur  

Re:Listes déroulantes liées
« Répondre #1 sur: le 11-06-2005 a 12:11:27 »
tavman
Habitué
***

Hors-Ligne

Messages: 466



HS

Voir le Profil
Répondre avec citation

regarde un peu la taille du script :

   <script type="text/javascript">
      function populate(o)
      {
         d=document.getElementById('de');
         if(!d){return;}         
         var mitems=new Array();
         mitems['Main Courses']=['Burger Meals','Breakfast','Steaks','Fish Dishes','Vegetarian Dishes'];
         mitems['Snacks']=['Brownies','Cookies'];
         mitems['Drinks']=['Shakes','Sodas','Cocktails','Juices'];
         mitems['Salads']=['Tuna Salad','Cesar Salad','Green Salad','Prawn Salad'];
         mitems['Deserts']=['Pancakes','Waffles','Ice Cream','Fresh Fruit'];
         d.options.length=0;
         cur=mitems[o.options[o.selectedIndex].value];
         if(!cur){return;}
         d.options.length=cur.length;
         for(var i=0;i<cur.length;i++)
         {
            d.options[i].text=cur[i];
            d.options[i].value=cur[i];
         }
      }
    </script>

alors quand c'est aussi court que ca, tu regarde vite fait et tu voit ca :

mitems['Main Courses']=['Burger Meals','Breakfast','Steaks','Fish Dishes','Vegetarian Dishes'];
mitems['Snacks']=['Brownies','Cookies'];
mitems['Drinks']=['Shakes','Sodas','Cocktails','Juices'];
mitems['Salads']=['Tuna Salad','Cesar Salad','Green Salad','Prawn Salad'];
mitems['Deserts']=['Pancakes','Waffles','Ice Cream','Fresh Fruit'];

et tu te dit que t'as plus qu'a essayer de réécrire ca en php avec les éléments de ta bdd...
je pense pas que ce soit vraiment trop compliqué.

Après ca, si tu veut t'y retrouver dans tes items, plutot que de faire passer tes données en chaine de caractère, t'as cas faire passer tes chiffres :

<select name="or" id="or" onchange="populate(this)">
<option value="1">Main Courses</option>
<option value="2">Snacks</option>
<option value="3">Salads</option>
<option value="4">Drinks</option>
<option value="5">Deserts</option>
</select>

et dans le JS, tu met ca :

for(var i=0;i<cur.length;i++) {
   d.options[i].text=cur[i];
   d.options[i].value=i;
}

et tu devrait pouvoir t'y retrouver...

Voila, bonne chance a toi

Rapporter au modérateur  

I-Radian
Re:Listes déroulantes liées
« Répondre #2 sur: le 13-06-2005 a 10:03:40 »
enjoy man
Membre récent
*

Hors-Ligne

Messages: 3





Voir le Profil
Répondre avec citation

merci pour ta réponse.
ya pas de souci pour le code. Mais le problème c'est que dans les variables,le script stocke des chaînes de caractères :
mitems['Snacks']=['Brownies','Cookies'];

Moi je voudrais pouvoir générer ca automatiquement en appelant ma base...
Est-ce possible?

Rapporter au modérateur  
Re:Listes déroulantes liées
« Répondre #3 sur: le 13-06-2005 a 12:10:09 »
tavman
Habitué
***

Hors-Ligne

Messages: 466



HS

Voir le Profil
Répondre avec citation

biensur que c'est possible... le php ne fait que générer du texte interpreté ensuite en HTML ou javascript (après, ca dépend ou c'est placé) :


<script type="text/javascript">
      function populate(o)
      {
        d=document.getElementById('de');
        if(!d){return;}       
        var mitems=new Array();
        mitems['Main Courses']=[ <?
$requete = mysql_query ("SELECT * FROM `mabase`;");

while ( $T = mysql_fetch_array($requete) ) {

echo "'" . $T['element'] . "' , ";

}

?> ];

// et puis tu termine ton code après... suffit juste que tu regarde exactement le code que tu génère et après c'est assez facile.
Faut bien comprendre que php ne fait que générer du texte (ou faire des opérations sur le serveur...), après, c'est le navigateur qui interprete le texte et puis voila.

Aller bonen chance a toi

Rapporter au modérateur  

I-Radian
Re:Listes déroulantes liées
« Répondre #4 sur: le 13-06-2005 a 13:44:17 »
enjoy man
Membre récent
*

Hors-Ligne

Messages: 3





Voir le Profil
Répondre avec citation

nickel mec, c justement ce que j'avais esquissé ! je te remercie, je v me pencher la dessus

par contre je n'ai pas trop compris :
et dans le js tu mets ça:
for(var i=0;i<cur.length;i++) {
  d.options[i].text=cur[i];
  d.options[i].value=i;
}

« Dernière Édition: le 13-06-2005 a 13:55:13 par enjoy man » Rapporter au modérateur  
Re:Listes déroulantes liées
« Répondre #5 sur: le 13-06-2005 a 20:08:03 »
tavman
Habitué
***

Hors-Ligne

Messages: 466



HS

Voir le Profil
Répondre avec citation

Citation de: enjoy man le le 13-06-2005 a 13:44:17
par contre je n'ai pas trop compris :
et dans le js tu mets ça:
for(var i=0;i<cur.length;i++) {
  d.options[i].text=cur[i];
  d.options[i].value=i;
}
bahh c'est plutot simple : la seule ligne que j'ai changé la dedans en fait, c'est ca :
            d.options[i].value=cur[i];

que j'ai remplacé par ca :
            d.options[i].value=i;

ainsi, lorsque tu récupère tes variables, tu récupère un chiffre et non une String... Donc c'est plus facile pour t'y retrouver dans ta base de données...
Perso, jte conseil plutot de faire deux base comme ca :

base 1 (les valeurs de ta première liste) :
____________
ID1 | VALUE |

base 2 (les valeurs de la seconde liste) :
______________________________
ID2 | ID1 | Pos_Objet | VALUE |

ID1 renvoit la valeur pour savoir si on met l'objet dans telle ou telle liste... et Pos_Objet, c'est son numéro dans la liste... Donc quand tu voudra récupèrer quelque chose, t'aura cas faire une recherche pour voir les objet ou ID1 c'est la valeur renvoyée par la première liste et Pos_Objet c'est la valeur renvoyée par la deuxième liste....

Remarque, t'aurai pu utilisé VALUE de la même manière, mais c'est juste une mesure de sécurité : si jamais un jour t'as 2 fois la même VALUE qui correspond a l'ID1, tu pourra toujours le retrouvé... Enfin là, c'est un peu compliqué, c'est clair...

Une autre remarque : tu pourrait aussi faire une 2ème liste dans ton javascript qui contient n parallèle de l'autre les ID2 correspondantes aux VALUE....

Enfin bon, a chacun ses techniques pour s'y retrouver entre un tableau et une base de données, après, c'est a toi de gérer...

Rapporter au modérateur  

I-Radian
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
Pages: [1] Monter
« Précédent Suivant »
Sauter à: 

Votre statut : Invité
Vous devez être membre pour participer.
 
 
Let’s Encrypt : le certificat SSL gratuit
Tester votre site internet sur différents navigateurs
[WordPress] Des problèmes avec l’administration ?
Rappel : Mettez à jour vos CMS et vos sites E-commerce
Le .fr fête ses 25 années d’existence !
Mesurer votre audience en temps réel avec BubbleStat
Porter réclamation contre Google Panda ?
Zlio n’est plus …
 
 
 
 
 

Copyright (c) Devclic 2002 - 2026 - Tous droits réservés

creation site internet strasbourg