Liste option/optgroup dynamique

speed837 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
speed837 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je n'arrive pas à trouver de réponse sur le forum de CCM ainsi que sur Google.
Il faudrait que j'arrive à afficher une liste avec des <optgroup> et <option> dynamique
(connectée avec ma base de donnée) . Cette liste est composée de marques de voiture avec leurs modèles adéquats.
Pour ce faire j'ai créée une table exprès, c'est à dire une colonne 'Marque' et une autre colonne 'Modele'. J'aimerai pouvoir mettre les marques dans <optgroup> et suivant la marque se trouvant dans l'<optgroup> mettre les modèles en conséquence>.
Je m'y suis peut être mal pris dès le début mais je ne vois pas comment faire plus simple
(2 colonnes).

Actuellement mon code affiche que les marques tirées de ma base de données, mais elles s'affichent le nombre de fois qu'il y a de modèles.

Exemple :
citroen : modeleA
citroen : modeleB
renault : modeleC
renault : modeleD
renault : modeleE

Avec ces données la dans ma base de données mon code afficherai (en optgroup):

citroen
renault
renault
renault

(Oui qu'une seule fois citroen, je ne sais pourquoi m'enfin s'il me reste que ce détail a régler ça sera pas mal hihi)

Je vous donne mon bout de code :

    $ReponseMarque=mysql_query("SELECT * FROM InfoMateriel WHERE 1");
    $Liste=mysql_fetch_array($ReponseMarque);
  
    <select name="ListeMarque">
        <?php
        while ($Liste=mysql_fetch_array($ReponseMarque))
        { 
            ?>
            <optgroup label=" <?php echo $Liste['Marque'];?>">
            <?php 
        } ?>
    </select> 


J'attends vos aides avec impatience, merci d'avance !
A voir également:

5 réponses

mahdu972 Messages postés 232 Date d'inscription   Statut Membre Dernière intervention   18
 
Bonjour,
Avec un group by ListeMarque dans la requête sa va mieux?
0
speed837 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Merci d'une réponse aussi rapide !
D'après ce que j'ai compris, le GROUP BY est un moyen de regrouper des informations se trouvant sur plusieurs tables d'un même name ?
Si tel est le cas je ne vois pas comment l'exploiter dans mon problème :x
0
mahdu972 Messages postés 232 Date d'inscription   Statut Membre Dernière intervention   18
 
Non le group by permet de regrouper les informations de la colonne placer après le group by (ici ListeMarque) . Mais le group by ne peux pas s'utiliser avec un select *. J'aurai fait deux requêtes : l'une qui select les marques, et la deuxième qui select les modèles avec dans le where la marque voulue.
0
speed837 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Ta solution m'a surement l'air d'être la bonne je l'exploiterai dès demain matin !
Dans la deuxième requête dont tu parles, je vais pouvoir mettre une variable dans la WHERE ?
Car ma liste va être dynamique, c'est à dire possibilité d'ajouter une marque et un modèle.
C'est cet ajout de marque qui me semble poser problème dans la solution avec les deux requêtes que tu as ennoncé :/
0
mahdu972 Messages postés 232 Date d'inscription   Statut Membre Dernière intervention   18
 
Oui pas de problème pour mettre une variable dans une requête. Il faut juste faire attention a la syntaxe, pour qu'il prenne bien la variable et non la chaine $tavariable...
0
speed837 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Je te tiens au courant dès demain matin de l'avancé de mon code !
Encore merci pour cette idée
0

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

Posez votre question
speed837 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Je cherche depuis ce matin et je suis à cour d'idées.
Mon code actuel est :

$ResultatSelectionMarque= mysql_query("SELECT DISTINCT Marque FROM InfoMateriel");
	
	?>
	<select name="ListeMarquee">
	<option value="">---Marque modele---</option>
	<?php	
	while ($ListeMarque=mysql_fetch_array($ResultatSelectionMarque))
	{
		?>
		<optgroup label=" <?php echo $ListeMarque['Marque'];?>">
		<?php
		$RequeteSelectionModele= mysql_query("SELECT 'Modele' FROM 'InfoMateriel' WHERE 'Modele' ='$ListeMarque'");
		
			while ($ListeModele = mysql_fetch_array($RequeteSelectionModele))
			{
				echo '<option value="', $ListeModele['Modele'], '">', $ListeModele['Modele'], '</option>';
				echo "aa";
			}		
	} ?>
	</select> 


Avec ce code j'arrive correctement à afficher dans les <optgroup> qu'une seule fois la marque mais la boucle while que je fais en dessous de cette balise de ne fonctionne pas du tout.
J'ai donc pour le moment une liste de ce type :

---Marque modele---
Citroen
Fiat
Peugeot
Renault

(j'ai rajouté quelques marques afin de mieux visualiser le résultat de mes tests)
0