Menu dynamique avec BDD
Résolu
troubadour2
Messages postés
284
Statut
Membre
-
ekamy Messages postés 1 Statut Membre -
ekamy Messages postés 1 Statut Membre -
Bonjour,
Je voudrais pouvoir incorporer un menu dynamique lié à ma BDD.
J'ai trouvé mon bonheur sur le site "developpez.com
https://pbnaigeon.developpez.com/tutoriel/PHP/conception-site-dynamique/
Tous les liens fonctionnent mais je ne sais pas comment afficher mes pages.
Pouvez-vous m'aider un peu s'ils vous plait.
En vous remerciant beaucoup.
Je voudrais pouvoir incorporer un menu dynamique lié à ma BDD.
J'ai trouvé mon bonheur sur le site "developpez.com
https://pbnaigeon.developpez.com/tutoriel/PHP/conception-site-dynamique/
Tous les liens fonctionnent mais je ne sais pas comment afficher mes pages.
Pouvez-vous m'aider un peu s'ils vous plait.
En vous remerciant beaucoup.
15 réponses
-
en apprenant les bases du html ca devrait aller tout seul
-
Bonjour
Merci pour tes encouragements mais je connais les bases du HTML mais pour ça je ne vois pas.
Peut-être en me donnant quelques explications ça pourrai m'aider.
Merci -
ok alors allons y petit a petit :)
tu arrives a récupérer les infos de ta base déja ou pas ? -
bonjour et merci
oui j'ai récupéré mes infos de ma BDD -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
tu peu coller le minima du script que tu utilise on va voir ensemble comment l'adapter pour generer un menu html
-
Tout d'abord il y a ce script qui affiche soit la page courante soit la page d'accueil
// on récupère l'id de la page courante passée par l'URL // Si non défini, on considère que la page est la page d'accueil if (isset($_GET['id_page'])) { $_ENV['id_page'] = intval($_GET['id_page']); } else { $_ENV['id_page'] = $id_page_accueil; }
et la fonction qui.......// Affiche les menus. // Paramètres : id de la page -> $idpage // (id de la page en cours pour le menu de gauche, id de la page racine (1) pour le menu du haut) // Renvoie : le menu sous forme de liste -> $menu_retour function affiche_menu($idpage) { // Sélectionne toutes les pages filles de la page en cours $strSQL = 'SELECT 'Id_page', 'Titre' FROM 'pages' WHERE 'Id_parent' = '.$idpage; $resultat = requete_SQL($strSQL); // Si la page n'a pas de page fille, alors on modifie la requète pour obtenir ses pages soeurs. if (mysql_num_rows($resultat) == 0) { $strSQL = 'SELECT 'Id_page', 'Titre' FROM 'pages' WHERE 'Id_parent' = '.$_ENV['id_parent']; $resultat = requete_SQL($strSQL); } $menu_retour = '<ul>'; while ($tabl_result = mysql_fetch_array($resultat)) { $menu_retour .= '<li>'; $menu_retour .= '<a href="index.php?id_page='.$tabl_result['Id_page'].'">'; $menu_retour .= $tabl_result['Titre']; $menu_retour .= '</a>'; $menu_retour .= '</li>'; } $menu_retour .= '</ul>'; return $menu_retour; } ?> -
ben en fait je ne sais pas comment afficher mes pages dynamiquement.
Dans ma BDD j'ai 6 champs dont 1 champ "contenu" j'affiche bien toutes les pages via le menu mais elles sont vides.
mes pages se trouvent dans un dossier "page" à la racine du site.
voici ma tableCREATE TABLE IF NOT EXISTS 'pages' ( 'Id_page' int(11) NOT NULL AUTO_INCREMENT, 'Titre' varchar(255) CHARACTER SET utf8 NOT NULL, 'Mots_cles' varchar(255) CHARACTER SET utf8 NOT NULL, 'Description' varchar(255) CHARACTER SET utf8 NOT NULL, 'Contenu' text CHARACTER SET utf8 NOT NULL, 'Id_parent' int(11) NOT NULL DEFAULT '1', PRIMARY KEY ('Id_page') ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ; -- -- Contenu de la table 'pages' -- INSERT INTO 'pages' ('Id_page', 'Titre', 'Mots_cles', 'Description', 'Contenu', 'Id_parent') VALUES (1, 'Accueil', 'Accueil', 'Accueil', 'Accueil', 0), (2, 'L''association', 'L''association', 'L''association', 'L''association', 1), (3, 'Membres', 'Membres', 'Membres', 'Membres', 1), (4, 'Galeries', 'Galeries', 'Galeries', 'Galeries', 1), (5, 'Infos pratiques', 'Infos pratiques', 'Infos pratiques', 'Infos pratiques', 1), (6, 'Historique', 'Historique', 'Historique', 'Historique', 2), (7, 'Statuts', 'Statuts', 'Statuts', 'Statuts', 2), (8, 'Réglement', 'Réglement', 'Réglement', 'Réglement', 2), (9, 'Musiciens', 'Musiciens', 'Musiciens', 'Musiciens', 3), (10, 'Responsables', 'Responsables', 'Responsables', 'Responsables', 3), (11, 'Récompenses', 'Récompenses', 'Récompenses', 'Récompenses', 3), (12, 'Photos', 'Photos', 'Photos', 'Photos', 4), (13, 'Vidéos', 'Vidéos', 'Vidéos', 'Vidéos', 4), (14, 'La presse', 'La presse', 'La presse', 'La presse', 4), (15, 'Notre répertoire', 'Notre répertoire', 'Notre répertoire', 'Notre répertoire', 4), (16, 'Formations', 'Formations', 'Formations', 'Formations', 5), (17, 'Prestations', 'Prestations', 'Prestations', 'Prestations', 5), (18, 'Lieu', 'Lieu', 'Lieu', 'Lieu', 5);
Merci -
En fait je crois que je me suis mal expliqué.
Si par exemple c'était un menu classique sans BDD j'aurai juste besoin de cliquer sur le lien du menu pour afficher la page historique<a href="index.php?body=historique">Historique</a>
avec se script bien sur<?php //si la valeur "body" de $_GET existe et est différent de NUL //alors $corps prend pour valeur les 3 chaines de caractéres concaténé, qui représente l'url que je veux afficher if (isset($_GET['body']) && $_GET['body'] != NULL) $corps = 'page/' . $_GET['body'] . '.php'; else $corps = 'page/accueil.php'; ?>
je peux afficher le champ "contenu" de ma table mais juste avec le titre
je ne peux quand même pas mettre le code de toutes mes pages dans ma base de donnée.
C'est là que je ne comprend pas.
Merci -
je suis en train de voir quelques chose et je te redis...
Merci -
c'est encore moi .
je pensais qu'en rajoutant dans ma table "contenu" page/historique.php
j'allais pouvoir ouvrir cette page, mais non c'est la galère. -
tu peux m'expliquer ça j'ai du mal à comprendre.
ça concerne mon champ "contenu"
stocker uniquement l'adresse physique sur le serveur de la page à inclure. A ce moment là, il faudra remplacer l'affichage du contenu en provenance de la base de données par un include du chemin extrait du contenu de la DB
Je te remercie -
en gros tu stoque le nom de la page qui contien le contenu que tu souhaites faire aparaitre apres le click...
et tu utilise include pour l'afficher
tu récupere ta variable $_POST et tu include la page qui correspond
par exemple
url => index.php?body=article $page = $_GET['body']; switch($page){ case "article" : include 'article.php'; break; case "accueil" : include 'accueil.php'; break; defaut : include "login.php"; break; }
ou directement (en faisant quelques controles sinon c'est dangereux ^^)
include $_GET['body'];
-
Bonjour
Ca y est bon sang de bonsoir..........................................
Super cool ça fonctionne comme je le souhaitais.
C'est génial.
Un grand merci pour tout. -
alors explik ce que tu as fait car je t'avoue je ne vois toujours pas exactement ce que tu voulais faire :)
-
Bonjour,
En fait j'ai du rajouter tout simplement le chemin relatif dans mon champ contenu. "page/menu_membre/membre.php"
C'est ton dernier post qui ma donnée la puce à l'oreille.
A+
Merci