Menu dynamique + bdd

kyript Messages postés 346 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 26 mars 2012 - 13 déc. 2005 à 14:54
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015 - 15 déc. 2005 à 16:07
Bonjour a tous

je cherche a faire un menu avec sous menu dynamique

les menu et sous menu irons cherché leurs nom dans une table

voici ma table

categorie1
-id
-cat1
categorie2
-id
-cat1
-cat2
categorie3
...


Merci de m'orienter pour cela car je suis un peu perdu

19 réponses

kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
13 déc. 2005 à 15:10
Salut...

Tu met un champs pour déterminer si ton lien est menu ou sousmenu et s'il est sous menu tu l'assigne (avec une variable provenant d'un autre champs et qui est ignorée si c'est un menu) à un menu via un champs id... .. .

@ tchaOo°
0
kyript Messages postés 346 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 26 mars 2012
13 déc. 2005 à 15:20
ok merci je vai essayer de develloper ca on verra bien ce que ca donne
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
13 déc. 2005 à 15:25
Tu récupère le résultat d'une requête (mysql_query) à la bdd et tu lui fais un fetch_array pour ordonner la requete en tableau... ensuite on peut imaginer quelque chose du genre...

foreach ($this->Menus as $key) {
$this->assignMenu($key, $value);
}
0
kyript Messages postés 346 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 26 mars 2012
13 déc. 2005 à 15:45
je comprend pas trop le 2ieme message

peut tu develloper stp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
13 déc. 2005 à 15:52
raaa merde encore la touche enter... atta je te remet ça... .. .

Imaginons que tu récupère le résultat d'une requête (mysql_query) à la bdd et tu lui fais un fetch_array (ici dans $ftchresult) pour ordonner la requete en tableau... ensuite on peut imaginer quelque chose du genre...

en imaginant que ta table contient les champs 'ismenu' (1 si c'est un menu 0 si c'est un sousmenu) 'menuref' pour savoir à l'id de quel menu est rattaché le sousmenu et 'nom' , 'lien, 'id'... .. .

$Menus = '';

foreach ($ftchresult as $key => $link) {
if(!empty($ftchresult[$key]['ismenu'])){
$Menus[$ftchresult[$key]['id']]['lien'] = $ftchresult[$key]['lien'];
$Menus[$ftchresult[$key]['id']]['nom'] = $ftchresult[$key]['nom'];
} else {
$Menus[$ftchresult[$key]['menuref']]['sousmenu'][] = array(
'lien' => $ftchresult[$key]['lien'],
'nom' => $ftchresult[$key]['nom']
);
}

}



ce qui te donnera un tableau à peut pret comme ça...

Array
(
[1] => Array
(
[lien] =>
[nom] => plop
[sousmenu] => Array
(
[0] => Array
(
[lien] => http:...
[nom] => hello
)

[1] => Array
(
[lien] => http:...
[nom] => hello
)

)

)

[3] => Array
(
[sousmenu] => Array
(
[0] => Array
(
[lien] =>
[nom] => zioupla
)

[1] => Array
(
[lien] => http:...
[nom] => hello
)

)

[lien] => http:...
[nom] => pwet
)

)
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
13 déc. 2005 à 15:55
Là t'as la moitié du travail de maché... t'as plus qu'a géré l'organisation pour entrer les bonnes données dans ta bdd (surtout l'id du menu pour les sous menu)... .. .

Désolé pour le message d'avant c'était un extrait d'un class qui fait la même chose (mais qui n'est pas exploitable tel quel car héritant d'autres class spécifiques)... .. .

on courage et bonne continuation... .. .

@ tchaOo°
0
kyript Messages postés 346 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 26 mars 2012
13 déc. 2005 à 16:08
Je te remercie beaucoup je ferai ca ce soir surement ( du taf, du taf et encore du taf )

je tien au courant * et encore merci
0
kyript Messages postés 346 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 26 mars 2012
14 déc. 2005 à 10:37
Slt

bon j'ai essayer d'analyser et de comprendre ton bout de code est a vrai dire j'ai vraiment du mal a comprendre

parce quand on fait
foreach( $ftchresult as $key => $link)

le $key c'est la ou on met le resultat
mais $link il vient d'ou ?

la suite aussi j'ai du mal
peut etre serai tu m'aider ??
0
kyript Messages postés 346 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 26 mars 2012
14 déc. 2005 à 10:59
en faite j'ai peut etre mal exprimé ma bdd
je te la remet au cas ou ...

catégorie 1
-id
0
kyript Messages postés 346 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 26 mars 2012
14 déc. 2005 à 11:01
en faite j'ai peut etre mal exprimé ma bdd
je te la remet au cas ou ...

catégorie1
-id
-nom_categorie1

sous_categorie1
-id
-nom_categorie1
-nom_sous_categorie1
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
14 déc. 2005 à 14:25
Dans le foreach $key correspond au nom de l'entrée et $link à sa valeur dans le tableau

ex : array([nom] => zioupla)
$key $value

Par contre j'ais pas du tout compris ce que tu m'a mis là... c'est quoi dans ta bdd les nom carégorie, etc... la structure de ta table... .. ?

@ tchaOo°
0
kyript Messages postés 346 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 26 mars 2012
14 déc. 2005 à 14:46
ok merci
voila pour les tables

table1
-champ id
-chanmp cat1

table2
-champ id
-champ cat1 // pour savoir d'ou il vient
-champ cat2


voilivoilou
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
15 déc. 2005 à 00:16
Pourquoi faire plusieurs tables... si tu suit mon exemple une seule table suffit...

champ id [int(4) auto_increment] (l'id du lien)
champ nom [varchar(30 ou 40)] (le nom du lien)
champ url [varchar(50 ou +)] (l'url du lien)
champ ismenu [tinyint(1)] (1 = menu, 0 = sous menu)
champ menuref [tinyint(1)] (pour les sous menu avec l'id du menu associé)

@ tchaOo°
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
15 déc. 2005 à 00:17
le menuref sera plutot en int(4) enfin avec la même taille et type que le l'id... .. .

@ tchaOo°
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
15 déc. 2005 à 00:28
int(4) ?
medium_int(4) oui :p
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
15 déc. 2005 à 04:51
mediumint et pas medium_int puisque tu cherche la tite bête... .. . :oP ;o)

En effet int, qui pour mon dernier post est une erreur je pensait à tinyint, sera peut être un peu gros... tinyint ou smallint sera amplement suffisant... moi je mettrais smallint comme ça ça laisse de la marge... .. .

@ tchaOo°
0
kyript Messages postés 346 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 26 mars 2012
15 déc. 2005 à 09:12
help me please

je suis desolé mais a vrai dire je comprend rien
peut tout m'expliquer ce que tu faite sur ces quelques ligne
je remercie beaucoup d'avance



if(!empty($ftchresult[$key]['ismenu']))
{
$Menus[$ftchresult[$key]['id']]['lien'] = $ftchresult[$key]['lien'];
$Menus[$ftchresult[$key]['id']]['nom'] = $ftchresult[$key]['nom'];
echo $Menus[$ftchresult[$key]]['nom'];
}
else
{
$Menus[$ftchresult[$key]['menuref']]['sousmenu'][] =
array('lien' => $ftchresult[$key]['lien'],'nom' => $ftchresult[$key]['nom']);
}
0
kyript Messages postés 346 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 26 mars 2012
15 déc. 2005 à 09:44
quand je fait ca


echo "".$key."-->".$link."

";

avant de faire le if
coila ce qu'il m'affiche

1-->sous_cat1
nom-->sous_cat1
2-->index.php36
url-->index.php36
3-->0
ismenu-->0
4-->1
menuref-->1

en faite il m'a pris l'enrigstement n°2 mais pas les autres je comprend pas
et il me les affiche en double
je capte zoued
aidez moi svp !!! :-(
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
15 déc. 2005 à 16:07
Euh tu sais gérer une requete sql ? tu sais ce que c'est qu'une boucle ?

Parce que c'est bien de vouloir faire un menu dynamique géré avec php mais il faudrait peut être apprendre les base de php d'abord... hein... .. . :o)

Bon reprenons depuis le début... .. .

// on se connect à la bdd puis on selectione la table
$connect = mysql_connect('localhost', 'root', '') or die('probleme de connection : '.mysql_error());
mysql_select_db('test',$connect) or die('probleme de selection : '.mysql_error());
// on récupère toutes les entrées de la tables
$qresult = mysql_query('SELECT id,nom,url,isMenu,menuRef FROM text_menu',$connect) or die('probleme de requete : '.mysql_error());
//on ferme la connection
mysql_close($connect);

//on initialise notre variable Menu
$Menus = '';

// por chaque entré
while ($row = mysql_fetch_assoc($qresult)) {
// si le champs menu n'est pas à 0 (donc il est à 1)
// cela veut dire que le lien est un menu
if(!empty($row['isMenu'])){
// on assigne donc le nom et le lien
$Menus[$row['id']]['url'] = $row['url'];
$Menus[$row['id']]['nom'] = $row['nom'];
// sinon c'est un sous menu
} else {
// on assigne donc le nom et le lien du sousmenu
// dans la clé sousmenu du menu correspondantque l'on retrouve
// grace à menuRef qui correspond à l'id du menu associé
$Menus[$row['menuRef']]['sousmenu'][] = array(
'url' => $row['url'],
'nom' => $row['nom']
);
}
}

Voili voilou... .. .

@ tchaOo°
0
Rejoignez-nous