Listes déroulantes liées [Résolu]

Limahl19 37 Messages postés lundi 26 mars 2007Date d'inscription 8 octobre 2008 Dernière intervention - 26 août 2008 à 16:32 - Dernière réponse : Limahl19 37 Messages postés lundi 26 mars 2007Date d'inscription 8 octobre 2008 Dernière intervention
- 9 sept. 2008 à 15:09
Bonjour,

J'aimerai savoir s'il est possible de créer deux listes deroulantes dans un meme formulaire, dont la deuxieme se remplie en fonction de la premiere, a partir d'une seule table dans une base de données.

Dans cette table se trouvent la marque et le modele d'une voiture..... La premiere liste se remplirai avec les marques et la deuxieme se remplirait avec les modeles en fonction de la marque....

Tous les exemples, que j'ai trouvé sur le site, le font toujours avec deux tables...

Pourriez vous m'aider, s'il vous plait?
Afficher la suite 

Votre réponse

38 réponses

Meilleure réponse
jreaux62 206 Messages postés vendredi 13 juin 2008Date d'inscription 24 octobre 2011 Dernière intervention - 26 août 2008 à 18:17
3
Merci
Ca tombe bien, j'ai eu le cas recemment.
Le code est ici :
http://www.asp-php.net/ressources/bouts_de_code.aspx?id=921

Merci jreaux62 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de jreaux62
Meilleure réponse
jreaux62 206 Messages postés vendredi 13 juin 2008Date d'inscription 24 octobre 2011 Dernière intervention - 27 août 2008 à 13:36
3
Merci
C'est exact !
ListeA renvoie un numero qui sert a créer l'array() pour la ListeB
Pour recuperer aussi "la marque de la voiture", il suffit d'ajouter au formulaire un input "hidden" :

Par ex. si dans ta BD, la marque est appelée "CATEGORIE", ajouter :
marque" value="<?php echo $val_A['CATEGORIE']; ?>>

Et tu la recupere ensuite avec :
$marque = $_POST['marque']

Merci jreaux62 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de jreaux62
Meilleure réponse
jreaux62 206 Messages postés vendredi 13 juin 2008Date d'inscription 24 octobre 2011 Dernière intervention - 27 août 2008 à 13:48
3
Merci
Rectification!
Oublie le message précédent !!!
le <input type="hidden" ... est inutile !!!

En effet, comme tu recuperes le NUM de l'enregistrement avec $_POST['listeB'], inutile de recuperer autre chose !

La requete sera :
$table = 'MATABLE';$SQL 'SELECT * from '.$table.' WHERE NUM '. $_POST['listeB'];

Après, tu peut afficher toutes les données de l'enregistrement ...

Merci jreaux62 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de jreaux62
Meilleure réponse
jreaux62 206 Messages postés vendredi 13 juin 2008Date d'inscription 24 octobre 2011 Dernière intervention - 27 août 2008 à 14:19
3
Merci
Si tu lis bien l'article, tu verras :
<?php
// ...
$URLdest = 'dest.php';
// ...
<form name="monform" method="POST" action="<?php echo $URLdest;?>">
// ...
?>

"dest.php" est le fichier qui traitera le formulaire.
C'est dans ce fichier que tu recupères les données du formulaire et où tu fais la requete :
<?php
$table = 'MATABLE';$SQL 'SELECT * from '.$table.' WHERE NUM '. $_POST['listeB'];
$result = mysql_query($SQL)  or die('Erreur SQL : '.$query.'
'.mysql_error());
$val = mysql_fetch_array($result);
// ensuite tu affiches les données
echo 'marque : '. $val['CATEGORIE'] .'
';
echo 'donnée : '. $val['DONNEE] .'
';
// ...
?>

Mais tu peux tres bien faire le traitement sur la meme page :
Il faut alors simplement ecrire :
(par defaut, le formulaire enoie le resultat sur la meme page)
<?php
// ...
<form name="monform" method="POST">
// ...
?>

Merci jreaux62 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de jreaux62
Meilleure réponse
jreaux62 206 Messages postés vendredi 13 juin 2008Date d'inscription 24 octobre 2011 Dernière intervention - 28 août 2008 à 15:23
3
Merci
J'ai écrit un autre code, qui est plus adapté a tes besoins :
http://www.asp-php.net/ressources/bouts_de_code.aspx?id=924

Merci jreaux62 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de jreaux62
Meilleure réponse
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 29 août 2008 à 10:38
3
Merci
Pour le lien sur une image il te suffit de faire ça :

a++

Si la réponse vous convient, pensez : Réponse acceptée !

Merci nicomilville 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de nicomilville
Meilleure réponse
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 29 août 2008 à 10:52
3
Merci
Pour transmettre des variables dans un lien on fait comme ça :

a++

Si la réponse vous convient, pensez : Réponse acceptée !

Merci nicomilville 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de nicomilville
Meilleure réponse
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 29 août 2008 à 12:03
3
Merci
On la récupère comme ça :

$_GET['nom_variable'];

a++

Si la réponse vous convient, pensez : Réponse acceptée !

Merci nicomilville 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de nicomilville
Meilleure réponse
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 29 août 2008 à 12:26
3
Merci
oui, c'est tout a fait possible :

'>

a++

Si la réponse vous convient, pensez : Réponse acceptée !

Merci nicomilville 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de nicomilville
Meilleure réponse
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 29 août 2008 à 12:32
3
Merci
oui !

a++

Si la réponse vous convient, pensez : Réponse acceptée !

Merci nicomilville 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de nicomilville
Meilleure réponse
jreaux62 206 Messages postés vendredi 13 juin 2008Date d'inscription 24 octobre 2011 Dernière intervention - 29 août 2008 à 16:03
3
Merci
Bonjour Limahl19,

1- petite correction :
[annonce.php?idc=<?php echo $row['nom']; ?> " width="150" />]

2- ListeB : $SQL_B = 'SELECT DISTINCT * ... ne fonctionnera pas
Si tu as plusieurs enregistrement avec des "marque" et "modele" identiques, tu ne peux pas récupérer un seul ID

Tu as donc 2 solutions (tout dépend si tu veux récupérer 1 seul enregistrement ou tous les enregistrements qui ont "marque" et "modele" identiques)

A- SOLUTION 1 : tu veux récupérer 1 seul enregistrement.
Il faut alors afficher "ID"-"modele" (par exemple)
Dans le script, modifie :
$SQL_B 'SELECT * FROM '. $table .' WHERE marque \''. $_POST['listeA'] .'\'';
...
echo $val_B['id'] .'- '. $val_B['modele'];


B- SOLUTION 2 : tu veux récupérer tous les enregistrements qui ont "marque" et "modele" identiques. (tu ne peux pas recuperer l'"id" tout de suite)
Modifie ton script comme ceci :
------------------------------------------------------------------------------
<?php
// connexion
include("_connexion.php");
// 1 table : MATABLE
$table = 'test2';
// les champs : NUM, marque, modele
// select DISTINCT marque pour eviter les doublons
$SQL_A = 'SELECT DISTINCT marque FROM '. $table. ' ORDER BY marque ASC';
$result_A = mysql_query($SQL_A);
// fichier de destination du formulaire
$URLdest = 'destv5.php';
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title></title>
</head>

<form name="meslistes" method="POST">
marque : <select name="listeA" onchange="document.getElementById('meslistes').submit();">
<?php
// listeA
echo '<option value="">-----choisir-----</option>';
while ($val_A = mysql_fetch_array($result_A)) {
if (isset($_POST['listeA']) && $_POST['listeA']==$val_A['marque']) {
$selection = ' selected';
} else {
$selection = '';
}
echo '<option value="'. $val_A['marque'] .'"'. $selection .'>';
echo $val_A['marque'];
echo '</option>';
}
echo '</select>';
// listeB
if (isset($_POST['listeA']) && $_POST['listeA']!='') {
echo ' modele : <select name="listeB" onchange="document.getElementById(\'meslistes\').submit();">';
echo '<option value="">-----choisir-----</option>';
// select DISTINCT modele pour eviter les doublons
$SQL_B 'SELECT DISTINCT modele FROM '. $table .' WHERE marque \''. $_POST['listeA'] .'\'';
$SQL_B .= ' ORDER BY modele ASC';
$result_B = mysql_query($SQL_B);
while ($val_B = mysql_fetch_array($result_B)) {
if (isset($_POST['listeB']) && $_POST['listeB']==$val_B['modele']) {
$selection = ' selected';
} else {
$selection = '';
}
echo '<option value="'. $val_B['modele'] .'"'. $selection .'>';
echo $val_B['modele'];
echo '</option>';
}
echo '</select>';
}
echo '
';
?>
</form>
<?php
if (isset($_POST['listeB']) && $_POST['listeB']!='') {
echo '<form name="monform" method="POST" action="'. $URLdest .'">';
echo '';
echo '';
echo '';
echo '</form>';
}
?>

</html>
<?php mysql_close(); ?>
------------------------------------------------------------------------------

Dans "destv5.php" (qui recoit le formulaire) :
------------------------------------------------------------------------------
<?php
// connexion
include("_connexion.php");
// 1 table : MATABLE
$table = 'test2';
// resultat du formulaire
$marque = $_POST['marque'];
$modele = $_POST['modele'];
// recuperation des fiches avec marque et modele identiques
$SQL 'SELECT * FROM '. $table .' WHERE marque '. $marque .' AND modele = '.$modele;
$result = mysql_query($SQL);
?>
...
<?php
// affichage des resultats
while ($val = mysql_fetch_array($result)) {
// ici, affichage avec ta mise en page (dans un tableau par exemple)
echo $val['modele'] .' - '. $val['marque'];
// ...
echo '
'; // passer a la ligne pour fiche suivante
}
?>
...
<?php mysql_close(); ?>
------------------------------------------------------------------------------

Merci jreaux62 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de jreaux62
Meilleure réponse
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 1 sept. 2008 à 12:27
3
Merci
re,

Pour ouvrir une popup il faut un langage client (vbscript, javascript, etc...) !

Après pour mettre les donnés dans la popup faut faire des conditions en javascript pour savoir la valeur de tes listes déroulantes...

Sinon, je te conseil de ne pas tiliser les popups car elle sont bloqué par presque tout le monde...

Utilise un div avec un grisage de la page, j'ai fait une source dernièrement, regarde dans mon profil...

a++

Si la réponse vous convient, pensez : Réponse acceptée !

Merci nicomilville 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de nicomilville
Meilleure réponse
jreaux62 206 Messages postés vendredi 13 juin 2008Date d'inscription 24 octobre 2011 Dernière intervention - 1 sept. 2008 à 12:43
3
Merci
Bonjour [auteur/LIMAHL19/1016414.aspx Limahl19],
je ne suis pas prof de programmation (mais j'ai été prof de dessin !), ni expert en php (j'ai commencé le PHP il y a moins d'un an !)
Mais ... :
1- la programmation m'intéresse (je fais aussi des sites web)
2- des explications simples et claires ainsi que des exemples détaillés premettent de mieux comprendre,
3- j'ai déjà rencontré les mêmes problèmes, et je me suis posé les mêmes questions !
4- j'aime bien les "casse-tête" !

Merci jreaux62 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de jreaux62
Meilleure réponse
jreaux62 206 Messages postés vendredi 13 juin 2008Date d'inscription 24 octobre 2011 Dernière intervention - 1 sept. 2008 à 15:35
3
Merci
[auteur/LIMAHL19/1016414.aspx Limahl19],
c'est une nouvelle question :
clic sur "forum" : "Poser une question" pour ouvrir un nouveau post avec le titre adéquate.
Et regarde avant si la question n'a pas déjà été posée ...

Merci jreaux62 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de jreaux62
Meilleure réponse
jreaux62 206 Messages postés vendredi 13 juin 2008Date d'inscription 24 octobre 2011 Dernière intervention - 3 sept. 2008 à 13:18
3
Merci
Bonjour,
2 solutions :
1- soit tu affiches directement ton champ input "autre choix" (à coté de la liste déroulante),
2- soit il te faut un script en langage client (javascript, ...) pour que, quand l'internaute clique (onclick ...) sur l'option "autre" de ta liste déroulante, l'input "autre choix" est créé (ou rendu visible).

La question subsidiaire étant : comment vas-tu gérer le texte écrit par l'internaute (qui peux écrire n'importe quoi dans ce champ) ?

Merci jreaux62 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de jreaux62
Limahl19 37 Messages postés lundi 26 mars 2007Date d'inscription 8 octobre 2008 Dernière intervention - 27 août 2008 à 09:21
0
Merci
Merci de ta réponse trés rapide.....
Tu me tire une grosse epine du pied...

Y a t'il un moyen de te joindre plus facilement si j'ai d'autre problemes?.....

Remarque ça a été tres tres rapide par le forum...

Encore merci beaucoup
Commenter la réponse de Limahl19
Limahl19 37 Messages postés lundi 26 mars 2007Date d'inscription 8 octobre 2008 Dernière intervention - 27 août 2008 à 09:58
0
Merci
je vais surement paraitre bête mais comment on affiche les resultats....

en choisissant renseignant les deuxlistes, comment afficher les resultats des deux listes????
quand on clique sur le bouton cela recharge la page....

en attendant, je cherche de nouveau....

en attendant, merci...
Commenter la réponse de Limahl19
Limahl19 37 Messages postés lundi 26 mars 2007Date d'inscription 8 octobre 2008 Dernière intervention - 27 août 2008 à 11:55
0
Merci
y a un autre petit probleme...

j'ai regarder ce que transmettez les listes et la liste un transmet un chiffre et pas la marque de la voiture......

desole de rederanger...
Commenter la réponse de Limahl19
Limahl19 37 Messages postés lundi 26 mars 2007Date d'inscription 8 octobre 2008 Dernière intervention - 27 août 2008 à 13:57
0
Merci
je met ce code dans la page lié au formulaire?
Commenter la réponse de Limahl19
Limahl19 37 Messages postés lundi 26 mars 2007Date d'inscription 8 octobre 2008 Dernière intervention - 27 août 2008 à 14:00
0
Merci
desole d'etre aussi nul.... merci encore pour ta rapidité....
Commenter la réponse de Limahl19

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

listes déroulantes liées - page 2