Mammouth du PHP |
19672 Messages
05 févr. 2006, 22:23
Suggestion : ça vaut ce que ça vaut, mais je l'ai utilisé pour créer un menu contenant des rubriques/sous/rubriques avec une suele requête :
- 1 : je récupère tout classé par rubrique/sous-rubrique
- 2 : j'enregistre les données dans un tableau à deux dimensions : la première dimension, c'est le niveau "rubrique" et la seconde dimension contient les sous-rubriques
- 3 : un simple count($tableau['rubrique']) va me donner le nombre de sous-rubrique
- 4 : j'utilise les valeurs du tableau pour gérer mon affichage au lieu des fonctions mysql déjà utilisées pour créer mon tableau.
Exemple (à tester):
<?php
/* On crée la requête SQL */
$sql = "SELECT `rub_nom`, `ssrub_nom` ".
"FROM `rubrique` AS r, `ssrubrique` AS sr ".
"WHERE r.rub_id = sr.rub_id;";
/* Connexion à MySQL et exécution de la requête */
/*
.........
*/
$exec = mysql_query($sql);
$tableau = array();
/* On crée un pointeur pour la première dimension du tableau */
$rub = "";
while(false($ligne = mysql_fetch_assoc($exec)))
{
if($rub != $ligne['rub_nom'])
{
$rub = $ligne['rub_nom'];
$tableau['rub_nom'] = array();
}
$tableau['rub_nom'][] = $ligne['ssrub_nom'];
}
/* Maintenant, j'ai toutes mes lignes classées, je peux afficher */
?>
<ul>
<?php
foreach($tableau as $rubrique => $val)
{
/* Affichage de la rubrique */
?>
<li>
<?php
echo($rubrique ." (". count($tableau[$rubrique]) ." sous-rubriques)");
?>
<ul>
<?php
foreach($tableau[$rubrique] as $ssrubrique)
{
?>
<li><?php echo($ssrubrique); ?></li>
<?php
}
?>
</ul>
</li>
<?php
}
?>
</ul>
J'ai fait un test en alimentant un tableau à la main avec un tableau comme ceci:
<?php
$tableau = array("rub1" => array("ssrub_11", "ssrub_12", "ssrub_13", "ssrub_14", "ssrub_15"), "rub2" => array("ssrub_21", "ssrub_22"), "rub3" => array("ssrub_31", "ssrub_32", "ssrub_33"))
?>
L'affichage me donne ceci:
- rub1 (5 sous-rubriques) :
- ssrub_11
- ssrub_12
- ssrub_13
- ssrub_14
- ssrub_15
- rub2 (2 sous-rubriques) :
- rub3 (3 sous-rubriques) :
- ssrub_31
- ssrub_32
- ssrub_33
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse 