Bonsoir
Je vais essayé de t expliquer.
1 - la requête :
1.1 - Tu fais ta requête et tu l exécutes avec une boucle. La pas de problème.
2 - La boucle :
2.1 - Il faut que tu initialises une variable $last_nom
2.2 - Tu lui donneras $data['nom'] comme valeur en fin de boucle.
3 - Le tableau :
3.1 - En premier il faut faire 2 comparaisons (dans la meme condition) pour fermer la ligne en cours
3.2 - en second tu fais une comparaison pour demarrer une nouvelle ligne si menu_id change.
<?php
$sql = 'SELECT menus.id AS menu_id, nom, position, id_membre, id_menu, membre.id, login
FROM menus, membre, link
WHERE menus.id = link.id_menu
AND membre.id = id_membre
ORDER BY nom ASC';
$reg = mysql_query($sql);
$last_menu_id = '';
echo'<table summary="menus et logins">' ;
while($data = mysql_fetch_array($req))
{
//On teste si le nouveau menu_id est differant de l ancien ET que $last_menu_id n est pas égale à '', c est pour fermer la ligne
if($last_menu_id != $data['menu_id'] AND $last_menu_id != '')
{
echo '</tr>' ;
}
//On teste si le nouveau menu_id est égal à l ancien
if($last_menu_id == $data['menu_id'])
{
echo '<tr><td>'.$data['nom'].'</td>' ;
}
echo'<td>'.$data['login'].'</td>' ;
// on donne $data['menu_id'] comme valeur à $last_menu_id
$last_nom = $data['nom'];
}//Fin while
echo'</tr></table>' ;
?>
Test ca. Attention ton tableau sera déformé du à une différence de cellule par ligne. Je n est pas testé
Pour tout ce qui est des comparaisons, utilise les id car il est unique, tu peux avoir des nom identique( ptete pas dans ton cas mais c'est un bon réflex à prendre).
++ Jerome
Ps je te laisse imaginer la galère si tu as plusieurs niveaux genre section, cat, id ...
un petit exemple dont je suis assez fière !