Menu dynamique avec BDD [Résolu/Fermé]

Signaler
Messages postés
277
Date d'inscription
vendredi 11 juin 2010
Statut
Membre
Dernière intervention
19 juin 2016
-
Messages postés
1
Date d'inscription
lundi 23 mai 2016
Statut
Membre
Dernière intervention
23 mai 2016
-
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.

15 réponses

Messages postés
269
Date d'inscription
lundi 15 novembre 2010
Statut
Membre
Dernière intervention
25 mars 2017
11
en apprenant les bases du html ca devrait aller tout seul
Messages postés
277
Date d'inscription
vendredi 11 juin 2010
Statut
Membre
Dernière intervention
19 juin 2016
1
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
Messages postés
269
Date d'inscription
lundi 15 novembre 2010
Statut
Membre
Dernière intervention
25 mars 2017
11
ok alors allons y petit a petit :)
tu arrives a récupérer les infos de ta base déja ou pas ?
Messages postés
277
Date d'inscription
vendredi 11 juin 2010
Statut
Membre
Dernière intervention
19 juin 2016
1
bonjour et merci

oui j'ai récupéré mes infos de ma BDD
Messages postés
269
Date d'inscription
lundi 15 novembre 2010
Statut
Membre
Dernière intervention
25 mars 2017
11
tu peu coller le minima du script que tu utilise on va voir ensemble comment l'adapter pour generer un menu html
Messages postés
277
Date d'inscription
vendredi 11 juin 2010
Statut
Membre
Dernière intervention
19 juin 2016
1
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;
}
?>
Messages postés
269
Date d'inscription
lundi 15 novembre 2010
Statut
Membre
Dernière intervention
25 mars 2017
11
et donc qu'est ce qui ne marche pas ?
Messages postés
277
Date d'inscription
vendredi 11 juin 2010
Statut
Membre
Dernière intervention
19 juin 2016
1
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 table
CREATE 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
Messages postés
269
Date d'inscription
lundi 15 novembre 2010
Statut
Membre
Dernière intervention
25 mars 2017
11
c pas évident si tu colle tout a chaques fois pour bien faire il faudrai que je le copie dans mon editeur de code mais non pask sinon on en finirai jamais...

colle le minima a l'avenir stp

essaie juste une simple requete et affiche un champ pour voir, mais sans tout le bazard
Messages postés
277
Date d'inscription
vendredi 11 juin 2010
Statut
Membre
Dernière intervention
19 juin 2016
1
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
Messages postés
269
Date d'inscription
lundi 15 novembre 2010
Statut
Membre
Dernière intervention
25 mars 2017
11
je comprend tout jusque la :
"je peux afficher le champ "contenu" de ma table mais juste avec le titre "

le reste je comprend pas ce que tu veux.... :(

sinon ton systeme est pas mauvais par contre il est vraiment dans les choux niveau sécurité
Messages postés
277
Date d'inscription
vendredi 11 juin 2010
Statut
Membre
Dernière intervention
19 juin 2016
1
je suis en train de voir quelques chose et je te redis...

Merci
Messages postés
277
Date d'inscription
vendredi 11 juin 2010
Statut
Membre
Dernière intervention
19 juin 2016
1
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.
Messages postés
277
Date d'inscription
vendredi 11 juin 2010
Statut
Membre
Dernière intervention
19 juin 2016
1
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
Messages postés
269
Date d'inscription
lundi 15 novembre 2010
Statut
Membre
Dernière intervention
25 mars 2017
11
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'];
Messages postés
277
Date d'inscription
vendredi 11 juin 2010
Statut
Membre
Dernière intervention
19 juin 2016
1
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.
Messages postés
269
Date d'inscription
lundi 15 novembre 2010
Statut
Membre
Dernière intervention
25 mars 2017
11
alors explik ce que tu as fait car je t'avoue je ne vois toujours pas exactement ce que tu voulais faire :)
Messages postés
277
Date d'inscription
vendredi 11 juin 2010
Statut
Membre
Dernière intervention
19 juin 2016
1
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
Messages postés
1
Date d'inscription
lundi 23 mai 2016
Statut
Membre
Dernière intervention
23 mai 2016

Ca remonte un peu, mais j'ai toujours pas compris, porrait tu mieux expliquer stp

Merci