Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

un select qui en influance un autre


Black_Dr4gon
 Partager

Messages recommandés

Bonjour.

Voila j'ai des donnees dans des tables que j'affiche dans des selects. Je valorise les selects en fonction de requete sql. Jusque la rien de bien complique. Mais maintenant je souhaiterais quand choisissant une valeur dans le premier select je puisse modifier les valeurs afficher par le second.

Par exemple le premier me permet de choisir les valeurs paires ou impaires, une fois choisi je vais chercher dans la base de donnees tout les chiffres ayant une valeur impaire et le deuxieme menu deroulant les affiche.

Voila, j'espere que j'ai ete suffisament claire, sinon demander moi des precision.

Merci par avance. :P

Lien vers le commentaire
Partager sur d’autres sites

Pour commencer quelques petites questions : quel logciel de bdd utilises-tu ?

Et puis qu'est ce que tu appelles des "select" ? select est une commande sql non pas un objet graphique,

est ce que tu parles d'un champ de selection multiple dans une page PHP ?

Lien vers le commentaire
Partager sur d’autres sites

  • Modérateurs

Bonjour,

 

Tu peux utiliser, dans le where de ton second select, la sélection de ton premier select.

Il y a longtemps que je n'ai pas codé du SQL mais, dans l'esprit, ça donne quelque chose comme :

SELECT V2, V3, V4 from T2 where V2 in (SELECT V1 from T1 where V1 = V1 / 7 * 7)

où T1 et T2 sont des tables, V1 une colonne de la table T1, et V2, V3 et V4 des colonnes de la table T2, et où l'on demande à V2 de faire partie des valeurs de V1 présentes dans T1 et multiples de 7.

NB: il faut peut-être dire into au lieu de in. Bref, je ne garantis pas du tout la syntaxe.

 

Ce qu'il faut savoir, c'est que de telles requêtes sont relativement coûteuses... mais bien pratiques ! :P

Modifié par Gen
Lien vers le commentaire
Partager sur d’autres sites

Effectivement, je crois que je me suis mal expliqué.

Je ne parlais pas du select dans une requete sql, mais plutôt d'un select de code html.

J'offre à l'utilisateur la possibilité de choisir les nombres paires ou impaires dans le premier select, et aprés en fonction du résultat choisi je vais chercher dans la base de données les valeurs paires (ou impaires) qui correspondent dans la table T2.

Sinon en ce qui concerne le sgbd, je travail pour l'instant sur du MySQL, mais je vais migrer vers un sql server.

PS. J'ai lu que pour passer de l'un à l'autre les seules modifications du code PHP à faire sont trouver les équivalents des fonctions mysql_query pour les sql server ? (une fois la migration de la base effectuée bien entendu)

Merci pour vos réponses, et désolé pour le malentendu que je n'ai pu rectifier plus tôt (je ne peux pas aller sur internet quand je le veux à mon travail :P )

Lien vers le commentaire
Partager sur d’autres sites

Effectivement, je crois que je me suis mal expliqué.

Je ne parlais pas du select dans une requete sql, mais plutôt d'un select de code html.

J'offre à l'utilisateur la possibilité de choisir les nombres paires ou impaires dans le premier select, et aprés en fonction du résultat choisi je vais chercher dans la base de données les valeurs paires (ou impaires) qui correspondent dans la table T2.

 

Effectivement c'est plus clair comme ça ! Alors tu as deux solutions

1) soit tu utilises un formulaire pour ta 1er liste de choix, quand tu cliquera sur le bouton "Valider" ça va recharger ta page que tu aura codé, et guider le programme php vers un des deux choix possible : afficher dans la 2e liste de choix seulement les valeurs paire ou seulement les valeurs impaires (par une requête sql qui va rapporter les valeurs voulues)

 

2) sinon tu peux essayer d'utiliser AJAX, plus intuitif pour l'utilisateur (pas de bouton de formulaire à valider), où tu dois pouvoir utiliser un évènement Javascript du genre OnClick sur ta 1e liste de choix, qui déclenchera le rafraichissement de la 2e liste de choix, et ira piocher les bonnes valeurs dans la base de données XML. Mais je ne connais pas trop cette technologie nouvelle donc peux pas t'aider plus.

Lien vers le commentaire
Partager sur d’autres sites

Suite ...

Pour selectionner les valeurs paires ou impaires plutôt que d'effectuer cette opération dans la reqête SQL, tu peux aussi le faire en php (plus simple) : tu filtres toutes les valeurs qui sont dans ta base avec ce script, grace au 'modulo' (opérateur représenté par %)

 

<?php
if ($nombre % 2 == 0) 
echo "$nombre est un nombre pair"; 
else 
echo "$nombre est un nombre impair"; 
?>

 

(Un script qui provient de la FAQ PHP de PHPIndex, qui contient plein de scripts bien utiles)

 

Bon courage, et tiens nous au courant de l'avancée du projet :P

Lien vers le commentaire
Partager sur d’autres sites

En ce qui concerne le changement de SGBD, il m'est imposé. On m'avait dit que je pouvais demander ce que je voulais, que c'était juste une question de temps. Donc j'ai commencé à coder avec easyPHP pour simuler le serveur Apache et le serveur MySQL. Et j'ai appris la semaine dernière que finalement on ne pouvait que me donner un SQL serveur.

Ensuite pour l'exemple des nombres paires, ce n'est qu'un exemple. En réalité il sagit de sélectionner différentes parties d'un avion en fonction du type d'avion (A320, A340 et A380). Donc je suis obligé d'aller chercher dans la base de données les parties propres à chaque avion (ce qui m'évite de faire un site statique en plus). Et ces différentes parties sont elle mêmes regroupées en mot clés.

Enfin avec du javascript on peut faire recharger la page, mais c'est quelquechose de lourd et couteux en temps et en ressource car il ya a plein d'autres tables et paramètre que je serais obligeé de recharger sur ma page, je voulais éviter ça. Si je n'ai pas le choix c'est ce que je ferais.

Merci.

Lien vers le commentaire
Partager sur d’autres sites

Pour faire des listes de sélection dépendantes (autrement appelées "Master - Detail"), il y a plusieurs solutions :

 

*) Solution "old-school" qui revient à réafficher la même page en pré-remplissant le champ déjà sélectionné, et en "peuplant" le champ dépendant avec la liste de valeurs correspondant au choix du premier champ.

 

*) Solution "tout-JavaScript" qui revient à générer du code JavaScript avec tout ce qu'il faut pour changer le contenu de la seconde liste de sélection lorsque l'on change ce qui est sélectionné dans la première. Ca nécessite de récupérer l'intégralité des possibilités, donc potentiellement lourd.

 

*) Solution "AJAX" qui ne nécessite que d'avoir les éléments de la première liste sur la page, et de créer une page sur le serveur qui prend un paramètre et doit renvoyer en XML les éléments à afficher dans le second champ, en fonction du premier. Le code JavaScript va se charger de récupérer / remplir la seconde liste à chaque changement dans la première

 

Après, à toi de voir si tu as besoin de pouvoir consulter cette page depuis un navigateur qui ne supporte pas forcément l'AJAX, ni forcément le JavaScript (téléphone mobile, PDA, client léger, etc.)

 

J'ai déjà fait un exemple "tout-JavaScript" de page contenant deux champs liés, il est très facile d'adapter en fonction des besoins...

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

 Partager

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...