8791 sujets

Développement web côté serveur, CMS

hello, je suis en train de programmer un menu, et je voulais avoir comment optimiser au mieux ma requête.
En gros; j'ai un champs ID qui correspond à la ligne du menu, et un champs P_ID optionnel si cette ligne est un sous-menu.

Là j'imaginais faire

$requete = "SELECT * FROM menu ORDER by id WHERE p_id ='' ASC"; //on selectionne les lignes qui ne sont pas des sous-menus
$resultat = requete($requete);
$nr_result = mysql_num_rows($resultat);

if (!empty($nr_result)) { 
	while( $row = mysql_fetch_assoc( $resultat ) ){
		echo $row["titremenu"];
	
		$requete2 = "SELECT * FROM menu WHERE p_id='".$row["id"]."' ORDER by id ASC"; //on sélectionne les sous-menus de cet ID
		$resultat2 = requete($requete2);
		$nr_result2 = mysql_num_rows($resultat2);
		
		if (!empty($nr_result2)) { 
			while( $row2 = mysql_fetch_assoc( $resultat2 ) ){
				echo $row["titremenu"];
			}
		
		}
	}

}


Mais je suppose qu'il y a plus simple et qu'il y a moyen de faire une seule requête pour le même résultat ?
Je sais pas trop quoi utiliser, GROUP_ID ou ce genre de trucs...
Mon problème c'est que je ne sais pas combien de "sous-niveaux" il y a pour chaque item du menu, et donc combien de requête je dois faire...

Bref, si quelqu'un a une piste, je suis preneur !
Si c'est une arborescence compliquée, ope pour l'arbre à valeurs intervalaire. Désolé, j'ai perdu le lien.