Développement web, informatique et communication

Php, mysql, accessibilité, xhtml, ajax, référencement, linux, android, mobiles

 

création select avec optgroup depuis bdd

Une simple génération d’un <select> depuis une table d’une base de données, dont les données sont classées par lettres alphabétiques dans les <optgroup>. Le script génère donc des <option> ordonnés. Votre site sera alors beaucoup plus accessible (voir les règles d’accessibilité sur le référentiel en français).

<p>

<label for="form_fournisseur">Fournisseur :</label>

<select name="form_fournisseur" id="form_fournisseur">

<?php

BDD_connexion(); // votre connexion à la BDD

$req_fournisseur=mysql_query("select id_fournisseur_produit, nom_fournisseur_produit from fournisseur_produit order by nom_fournisseur_produit"); // votre requête

mysql_close(); // fermeture de la connexion BDD

$first_letter_fournisseur="";

while($res_fournisseur=mysql_fetch_array($req_fournisseur, MYSQL_ASSOC)){

$first_letter_fournisseur2=strtoupper(substr($res_fournisseur['nom_fournisseur_produit'],0,1));

if ($first_letter_fournisseur!=$first_letter_fournisseur2 && !empty($first_letter_fournisseur))

echo '</optgroup>';

if ($first_letter_fournisseur!=$first_letter_fournisseur2){

echo '<optgroup label="'.$first_letter_fournisseur2.'">';

$first_letter_fournisseur=$first_letter_fournisseur2;

}

if ($value_form_fournisseur == $res_fournisseur['id_fournisseur_produit']) $select_fournisseur=' selected="selected"';

echo '<option value="'.$res_fournisseur['id_fournisseur_produit'].'"'.$select_fournisseur.'>'.$res_fournisseur['nom_fournisseur_produit'].'</option>';

$select_fournisseur="";

}

echo '</optgroup>';

?>

</select>

</p>

à utiliser avec la table suivante (exemple) :

CREATE TABLE IF NOT EXISTS `fournisseur_produit` (

`id_fournisseur_produit` int(11) unsigned NOT NULL AUTO_INCREMENT,

`nom_fournisseur_produit` varchar(250) COLLATE latin1_general_ci NOT NULL,

PRIMARY KEY (`id_fournisseur_produit`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

INSERT INTO fournisseur_produit values ('', 'Ovh'), ('', 'Cybellips'), ('', 'Grivel'),('', 'Olympus'),('', 'Orikaso'),('', 'Omega');

Ce qui donne :