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

Messages postés
37
Date d'inscription
lundi 26 mars 2007
Statut
Membre
Dernière intervention
8 octobre 2008
- - Dernière réponse : Limahl19
Messages postés
37
Date d'inscription
lundi 26 mars 2007
Statut
Membre
Dernière intervention
8 octobre 2008
- 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

20/38 réponses

Meilleure réponse
Messages postés
205
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 octobre 2011
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jreaux62
Messages postés
205
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 octobre 2011
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']

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jreaux62
Messages postés
205
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 octobre 2011
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 ...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jreaux62
Messages postés
205
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 octobre 2011
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">
// ...
?>

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jreaux62
Messages postés
205
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 octobre 2011
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jreaux62
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
19
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 !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
19
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 !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
19
3
Merci
On la récupère comme ça :

$_GET['nom_variable'];

a++

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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
19
3
Merci
oui, c'est tout a fait possible :

'>

a++

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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
19
3
Merci
oui !

a++

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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de nicomilville
Messages postés
205
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 octobre 2011
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(); ?>
------------------------------------------------------------------------------

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jreaux62
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
19
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 !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de nicomilville
Messages postés
205
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 octobre 2011
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" !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jreaux62
Messages postés
205
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 octobre 2011
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 ...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jreaux62
Messages postés
205
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 octobre 2011
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) ?

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jreaux62
Messages postés
37
Date d'inscription
lundi 26 mars 2007
Statut
Membre
Dernière intervention
8 octobre 2008
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
Messages postés
37
Date d'inscription
lundi 26 mars 2007
Statut
Membre
Dernière intervention
8 octobre 2008
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
Messages postés
37
Date d'inscription
lundi 26 mars 2007
Statut
Membre
Dernière intervention
8 octobre 2008
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
Messages postés
37
Date d'inscription
lundi 26 mars 2007
Statut
Membre
Dernière intervention
8 octobre 2008
0
Merci
je met ce code dans la page lié au formulaire?
Commenter la réponse de Limahl19
Messages postés
37
Date d'inscription
lundi 26 mars 2007
Statut
Membre
Dernière intervention
8 octobre 2008
0
Merci
desole d'etre aussi nul.... merci encore pour ta rapidité....
Commenter la réponse de Limahl19