Bonjour,
je suis nouveau sur le forum et je ne sais pas trop si c'est le bon endroit pour vous exposer mon problème :
J'affiche un <select> dans ma page comme ceci :
1 2 3 4 5 6 7 8 9 10
| <?php
// Dans ce code il manque la class car je ne sais pas comment faire
<select name="galerie" id="galerie">
<option class="infos" value="">Sélectionnez une galerie</option>
<?php foreach ($liste_galeries_disponibles as $galerie) : ?>
<option value="<?php echo $galerie['id']; ?>"><?php echo $galerie['titre']; ?></option>
<?php endforeach; ?>
</select>
?> |
Je voudrais obtenir ceci au final:
1 2 3 4 5 6 7 8 9 10
| // la class "vert" est attribuée si la galerie n'est pas associé à ce client
// la class "rouge" est attribuée si la galerie est déjà attribuée. -->
<select name="galerie" id="galerie">
<option class="infos" value="">Sélectionnez une galerie</option>
<option class="vert" value="7">Test 1</option>
<option class="rouge" value="8">Test 2</option>
<option class="rouge" value="9">Test 3</option>
<option class="rouge" value="10">Test 4</option>
<option class="vert" value="11">Test 5</option>
</select> |
Mon code php actuel :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| // On recherche les infos sur le client selon N° dans le GET.
$sql = "SELECT client_id, client_nom, client_login, client_mail, galerie_id, galerie_nom
FROM CLIENT
LEFT JOIN CLIENT_GALERIE USING(client_id)
LEFT JOIN GALERIE USING(galerie_id)
WHERE client_id=".intval($_GET['clientId'])."";
$result = mysql_query($sql);
while($donnees= mysql_fetch_assoc($result))
{
// s'il existe au moins une galerie
if($donnees['galerie_id'] !== NULL)
{
// conception tableau de la liste des galeries visibles par le client
if (!isset($valeurForm['galeries_accessibles'][0])) //si l'index 0 est absent c'est que c'est la première occurence
$valeurForm['galeries_accessibles'][] = array('galerie_id' => $donnees['galerie_id'], 'galerie_titre' => $donnees['galerie_nom']);
else//sinon on ajoute un trait d'union avant le nom
$valeurForm['galeries_accessibles'][] = array('galerie_id' => $donnees['galerie_id'], 'galerie_titre' => ' - ' . $donnees['galerie_nom'] );
}
// Pas de clients associé
else
$valeurForm['galeries_accessibles'] = NULL;
//Données à afficher dans le formulaire
$valeurForm['client_nom'] = display($donnees['client_nom']);
$valeurForm['client_login'] = display($donnees['client_login']);
$valeurForm['client_mail'] = display($donnees['client_mail']);
}
// On recherche toutes les galeries existantes dans la bdd.
$sql = "SELECT galerie_id, galerie_nom FROM GALERIE";
$result = mysql_query($sql);
while( $l = mysql_fetch_assoc($result) )
$liste_galeries_disponibles[] = array('id'=>$l['galerie_id'], 'titre'=>$l['galerie_nom']); |
Je voudrais afficher en rouge les galeries dont le client a déjà accès et en vert celles dont il n'a pas accès dans un <select>.
Je récupère les galeries associées à un client dans un tableau de cette forme:
$valeurForm['galeries_accessibles'][0 à xxx] = array('galerie_id' => $donnees['galerie_id'], 'galerie_titre' => ' - ' . $donnees['galerie_nom'] );
Je récupère les données, dans une autre table où sont stockés toutes les galeries disponibles, dans un tableau de cette forme :
$liste_galeries_disponibles[0 à xxx] = array('id'=>$l['galerie_id'], 'titre'=>$l['galerie_nom']);
Mon idée était de modifier le tableau $liste_galeries_disponibles (c'est celui dont je me sers pour afficher les valeurs dans le <select>), en y ajoutant une clé "class" comme ceci:
$liste_galeries_disponibles[0 à xxx] = array('id'=>$l['galerie_id'], 'titre'=>$l['galerie_nom'], 'class'=>$classOptionSelect);
Il faudrait que la variable "$classOptionSelect" soit 'vert' si l'id de la galerie à afficher dans select est aussi dans l'autre tableau.
Et la class sera 'rouge' si l'id est présente.
J'ai bien essayé en imbriquant plusieurs boucles et fonctions (foreach, in_array, for etc...) mais je ne m'en sort pas.
En espèrant que je vous ai exposé mon soucis de façon compréhensible et au bon endroit.
Quelqu'un aurait il une idée pour m'aiguiller un peu ?
Merci d'avance pour vos réponses.
Partager