8796 sujets

Développement web côté serveur, CMS

bonjour,
c la premiere que j'ai besoin de faire une liste deroulante avec groupe
j'ai un table constitué de deux colonne(champs): produit et rubrique

plusieurs produit corresponde à une rubrique(nettoyage)
et encore d'autre produits corresponde à une rubrique(livres)
ainsi de suite
ds ma liste deroulante j'ai une requette qui me sélectionne tout les produits et j'aimerais les grouper par la rubrique correspondante.
voila le code de ma liste deroulante


echo '<form method="post" action="test_comb.php">';



    echo '<select size=1 name="produits">'."\n";

    echo '<option value="-1">--liste des produits--</option>'."\n";

    echo '<optgroup label= "rubrique">';

    $resultat = mysql_query("SELECT produits FROM test_excel" );

    while($t =  mysql_fetch_array($resultat))

    {

        

       echo '<option value= "'.$t[0].'">'.$t['produits'];

        echo '</option>'."\n";

   }    

   echo '</optgroup>';

   echo '</select>'."\n";

  

 

   echo '<input type="checkbox" name="produits1" value="A">Année N';

   echo '<input type="checkbox" name="produits2" value="B">Année N-1';

   echo '<input type="checkbox" name="produits3" value="C">Prévision';

   //valider mon produit selectionner

   echo '<input type="submit" value="ok" />';

   echo '</form>';


c'est absolument urgent et je ne sais pas comment faire
je vous remercie pour votre aide
Modifié par timo (13 Jul 2009 - 16:37)
Bonjour,

Si j'ai bien compris ton problème, au lieu de faire une requete globale :
$resultat = mysql_query("SELECT produits FROM test_excel" );

Il faut filter avant l'affichage.

Dans une première requete tu dois sélectionner chaque rubrique, et ensuite pour chaque rubrique (ou tu fera un echo "optgroup") tu fais une requete pour récupérer les produits correspondant à cette rubrique.
Salut,

tu peux aussi faire ça côté PHP :
<?php
$sql = 'Select rubrique, produit from produits order by rubrique, produit';
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0) {
	echo '<select name="produit">'."\n";
	$rub_en_cours = '';
	while($row = mysql_fetch_row($result)) {
		if($rub_en_cours != $row[0]) { // Changement de rubrique ?
			if($rub_en_cours != '') {
				echo "</optgroup>\n";
			}
			echo '<optgroup label="'.$row[0].'">'."\n";
			$rub_en_cours = $row[0];
		}
		echo '<option value="'.$row[1].'">'.$row[1]."</option>\n";
	}
	echo "</optgroup>\n";
	echo '</select>'."\n";
}
?>
Au passage (et comme indiqué dans l'Aide) les URGENT, HELP et autres joyeusetés n'ont rien à faire dans un titre... Smiley murf
Modifié par Heyoan (13 Jul 2009 - 10:33)