8768 sujets

Développement web côté serveur, CMS

Bonjour,

J'essaie doucement de me (re)mettre à SQL, et ouch! Ça pique…
J'ai une table 'lieu' qui contient les champs suivants: `id`,`nom`,`rue`,`codePostal`,`ville`,`conso`
Je fais la recherche suivante:
SELECT * FROM lieu WHERE conso = "A emporter" ORDER BY codePostal ASC

Mais je bloque au formatage du rendu Smiley cligne
Je souhaiterais obtenir un menu déroulant de ce style:
<select>
    <optgroup label="numéro du département">
		<option>codePostal - ville</option>
		<option>codePostal - ville</option>
		<option>codePostal - ville</option>
		<option>codePostal - ville</option>
    </optgroup>
    <optgroup label="numéro du département">
		<option>codePostal - ville</option>
    </optgroup>
</select>


Est-ce quelqu'un pourrait m'aiguiller? Je suis perdu dans les boucles…
Merci beaucoup
Modifié par speedlab (02 Apr 2014 - 22:53)
Bonjour,
Aprés ta requête, tu peux créer un array qui comporte comme clefs les numéros de departement, et ensuite, un array avec les villes en faisant plus ou moins comme ça:

$resultat = array();
foreach($resultat_sql as $rq){
  if( !isset($resultat[$rq['num_dept']]) ){
    $resultat[$rq['num_dept']] = array();
  }
  array_push( $resultat[$rq['num_dept']], array($rq['cod_postal'], $rq['nom_ville']) );
}

Ensuite en faisant 2 boucles imbriquées, tu as tes optgroup et leurs options:

foreach($resultat as $kr => $r){
  echo '<optgroup label="' . $kr . '">';
  foreach( $r as $one){
    echo '<option>' . $one[0] . ' - ' . $one[1] .  '</option>'
  }
  echo '</optgroup>';
}

Modifié par loicbcn (03 Apr 2014 - 09:42)