mickaelpfr
Messages postés197Date d'inscriptionmardi 18 février 2003StatutMembreDernière intervention29 avril 2009
-
16 juin 2006 à 16:39
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 2007
-
16 juin 2006 à 17:32
salut a tous après 2 jours complet je me décide a poster
je chercher a créer un menu qui aurait cette arborescence :
</li>
<li>[# Handhelds and PDAs]</li>
<li>[# Internet Cards]</li>
<li>[# Accessories]</li>
</li>
qui permet donc d'avoir autant de sous menu ou menu ...
via une table php de type :
id ; idParent , titre , idPAge
id est l'id en autoincrément, idParent , id du parent , titre , titre du menu et idPage , corespond a l'id d'une autre table qui contient les info de la page ( url , contenu ... )
la je déprime j'arrive a afficher les menu et sous menu de façon illimité mais aps a construire mon menu en version html :(
code php :
function rechercheEnfant($id,$monTableauParent,$niveau){
//connexion a la bdd
include("config/config.php");
require_once("classes/gestion_bdd.class.php");
$gestionBdd = new gestion_bdd($serveur,$baseDeDonnee,$utilisateur,"");
$gestionBdd->connexionBdd();
//On va vérifier que le menu a des enfant $requeteRechercheEnfant "SELECT * FROM menu WHERE `idParent` ".$id;
$resultatRechercheEnfant = $gestionBdd->executeRequete($requeteRechercheEnfant);
$niveau++;
$nomtableau = "tableau[]";
while($row=MYSQL_FETCH_ARRAY($resultatRechercheEnfant, MYSQL_ASSOC)){
$html .= "<li>";
$nomtableau .= "[]";
echo $nbelement.$row[titre]." niveau : $niveau - $nomtableau
\n";
CREATE TABLE `menu` (
`id` int(11) NOT NULL auto_increment,
`idParent` int(11) NOT NULL,
`titre` varchar(200) NOT NULL,
`idPage` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
INSERT INTO `menu` VALUES (1, 0, 'père', 0);
INSERT INTO `menu` VALUES (2, 1, 'fils', 0);
INSERT INTO `menu` VALUES (3, 2, 'pti fils 1', 13);
INSERT INTO `menu` VALUES (4, 2, 'pti fils 2', 13);
si qq peut me venir en aide
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 16 juin 2006 à 17:32
Salut,
C'est un problème classique. Tu ne l'as pas attrapé par le bon coté...
Je suis parti de ta fonction, en la modifiant petit à petit. Je te laisse voir comment ça se passe.
//connexion a la bdd
// on le fait une fois, ça va suffir (même les inclusion, un fois c'est bon)
include("config/config.php");
require_once("classes/gestion_bdd.class.php");
$gestionBdd = new gestion_bdd($serveur,$baseDeDonnee,$utilisateur,"");
$gestionBdd->connexionBdd();
// La fonction récursive
function creaMenu( $idparent=0 ) {
global $gestionBdd; // on récupère le gestionnaire de BDD
// On va chercher tous les liens qui ont comme parent : $idparent $requeteRechercheEnfant "SELECT * FROM menu WHERE `idParent` ".$idparent;
$resultatRechercheEnfant = $gestionBdd->executeRequete($requeteRechercheEnfant);
// Si aucun... on laisse tomber
if( !mysql_num_rows($resultatRechercheEnfant) ) return;
echo ""; // debut de la liste
// pour chaque lien, un point dans la liste
while( $row = mysql_fetch_assoc($resultatRechercheEnfant) ) {
echo "<li>"; // debut de l'item
// le lien
echo "{$row['titre']}\n";
// puis on va chercher les sous liens de celui ci
// soit ceux qui ont comme parent le présent! C'est la récursion
creaMenu( $row['id'] ); // Envoi directe à l'affichage la liste des liens enfants
echo "</li>"; // fin de l'item
}
echo "" // fin de la liste
}
// Puis pour envoyer le menu :
creaMenu(); // On commence à idparent=0, donc à la racine !