Liste déroulante

Par pege, il y a 10 ans


Bonsoir, je me demandais comment créer une liste déroulante à partir de ma base de données... Donc j'ai par exemple catégorie Benjamins et puis des sous classes qui font partie de benjamin, vous comprendrez peut-etre mieux avec une image...
Je ne sais pas vraiment comment commencé, quelqu'un aurait une idée?
Merci d'avance!

image:

8 réponses

Morghoot, il y a 10 ans

Comment est organisé ta base de données ?
Je pense que ça pourrait nous donner une indication pour t'aider ^^

pege, il y a 10 ans

A partir de l'image elle ressemble a ceci:

id | catégorie | équipe

1 | HOMMES : U18| HU18A

2 | HOMMES : U18| HU18B

3 | HOMMES : U16| HU16A

4 | HOMMES : U16| HU16B

5 | HOMMES : U16| HU16C

6 | HOMMES : U16| HU16D

...

Ca t'aide?

Huggy, il y a 10 ans

Bonjour Blackandyellow,
Tu devrais pouvoir t'en tirer en triant tes équipes par catégorie puis en gérant les ruptures de catégorie.
Pour les groupes, il y a la balise optgroup qui fait ça (voir ici)

$query = "SELECT id, categorie, equipe FROM equipes ORDER BY categorie, equipe"; $categ = ""; echo "<select>"; foreach($pdo->query($query) as $row) { if ($categ != $row['categorie']) { // rupture de categorie if ($categ !== "") { // s'il y avait un groupe ouvert, on le ferme echo "</optgroup>"; } echo "<optgroup label='" . $row['categorie'] . "'>" $categ = $row['categorie']; } echo "<option value='" . $row['id'] . "'>" . $row['equipe'] . "</option>"; } echo "</optgroup>"; echo "</select>";
pege, il y a 10 ans

Merci bcp pour ce que tu as déjà fait mais j'ai juste un petit problème...
La liste n'affiche que ca:

Et dans ma base de données il y a ca:

id | catégorie | équipe

1 | cadets| Julien

2 | cadets| Bastien

3 | minimes| Sylvain

Je ne vois pas d'ou le problème pourrait venir

Huggy, il y a 10 ans

Peux-tu nous montrer le html généré de la liste déroulante ?

pege, il y a 10 ans

Biensur, voila:

<select> <optgroup label="Cadets"> <option value="3>Adrien</option> <option value=" 5="">Benjamins</option> <option value="1>Gaëtan</option> <option value=" 4="">Gaëtan</option> </optgroup> </select>
Huggy, il y a 10 ans

Il manque la quote fermante après value (j'ai édité mon code)
Pour les groupes manquant, la rupture n'est pas détectée
as-tu recopié mon code tel quel ?

pege, il y a 10 ans

J'ai trouvé la solution les potos, voici le bon code:

$query = "SELECT id, categorie, equipe FROM equipes ORDER BY categorie, equipe"; $categ = ""; echo "<select>"; foreach($pdo->query($query) as $row) { if ($categ != $row['categorie']) { // rupture de categorie if ($categ !== "") { // s'il y avait un groupe ouvert, on le ferme echo "</optgroup>"; } echo "<optgroup label='" . $row['categorie'] . "'>"; $categ = $row['categorie']; } echo "<option value='" . $row['id'] . "'>" . $row['equipe'] . "</option>"; } echo "</optgroup>"; echo "</select>";