Mysql Php, création modèle base de donnée pour menu Dynamique

Signaler
-
 GEEK44D -
Bonjour,

En Mysql et Php j'aimerais créer un script et plusieurs Tables qui remplaceraient la Table ci-dessous.

Cette Table crée un menu dynamique chaque parent 0 est un Entête de Menu et les relations sous menu, menu inférieur son définies grâce aux relations Parent ID.

Mon problème c'est que j'aimerais automatiser la création de nouvelles entrées dans le menu, pour l'instant je n'arrive à le faire que manuellement.

ID Parent Nom
1 0 Félins
2 1 Grands Félins
3 2 Panthères
4 2 Lions
5 1 Petits Félins
6 2 Tigres
7 0 Poissons
8 0 Canins
9 8 Saumons
10 8 Requins
11 9 Loups
12 9 Chiens

Merci d'avance pour votre aide.

8 réponses

Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
Salut, pourquoi plusieurs table si tout peut tenir dans une seul ?

Si tu as compris la logique pour insérer les données manuellement, essaye de le faire en php, c'est la même méthode. Tu dois uniquement récupérer l'id parent pour un nouveau insert d'un enfant.

stéph
Merci Stay,

Mais l'intérêt d'avoir plusieurs tables est d'avoir une architecture plus claire et structurée.

On pourrait avoir une table Menu, une table Rubrique et une Sous Rubrique avec des liaisons Parent, Enfant. Je l'ai déjà fait avec un UNION sur les tables, ça fonctionne presque, il faut que j'ajoute une colonne ID au résultat.

A+
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
Dans mon poste précédent, j'ai dis que tu connais la logique. Si je t'ai posé la question au sujet des tables c'est uniquement pour voir ce que tu avais en tête.
Tu n'as besoin de personne pour la logique donc la création de ce topique à été inutile. Tu donnes les réponses à tes propres pseudo problèmes.

Commence ton développement et revient si tu as un réel soucis.

stéph
Merci Stay,

T'es gentil, mais j'ai un réel soucis, si tu pouvais m'indiquer le Script Sql pour récupérer tous les éléments dans une colonne ID, ce serait sympa, car c'est notamment là que je bloque.

Par ailleurs je débute en Php Mysql alors l'intérêt du Forum c'est de pouvoir échanger des idées sur la meilleure façon de faire, je ne m'y prends peut être pas de la bonne façon.

A+
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
Oui, tu t'y es pris de la mauvaise façon.
Mais heureusement ;) je pose les bonnes questions.

Ici, je ne suis pas chez moi et je répond par GSM.
Je te propose de lire la doc sur PDO.
Demain, je te promet de revenir vers toi et on mettra quelque chose en place. Par rapport à tes compétences.

stéph
Merci Steph,

Effectivement je connais un peu PDO, j'ai déjà un script PHP qui fonctionne avec, notamment pour la connexion et l'affichage des données.

Pour le reste j'ai encore du boulot.

Merci pour ton aide.

A Demain.
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
Super, aucun problème, ça sera très simple.

stéph
Stéph ci-dessous le code de ma page :

C'est une adaptation d'un code Html, dis moi ce que t'en pense.

A+

<?php require_once('../Connections/ConnexionMysqlMenuPDO.php'); ?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>jQuery Superfish dropdown menu with php and Mysql</title>
<link rel="stylesheet" href="css/superfish.css" media="screen">
<script src="js/jquery-1.9.0.min.js"></script>
<script src="js/hoverIntent.js"></script>
<script src="js/superfish.js"></script>
<script>

// initialise plugins
jQuery(function(){
jQuery('#example').superfish({
//useClick: true
});
});

</script>
</head>

<?php
// Récupération des données
try {
// On envois la requète
$select = $connection->query("SELECT ID, Parent, Nom FROM Menu ORDER BY Nom ASC");

?>


<?php

$categories = array();

while($row = $select->fetch(PDO::FETCH_ASSOC) ) {
$categories[] = array(
'parent_id' => $row['Parent'],
'categorie_id' => $row['ID'],
'nom_categorie' => $row['Nom']
);
}

function afficher_menu($parent, $niveau, $array) {

$html = "";
$niveau_precedent = 0;

if (!$niveau && !$niveau_precedent) $html .= "\n\n";

foreach ($array AS $noeud) {

if ($parent == $noeud['parent_id']) {

if ($niveau_precedent < $niveau) $html .= "\n\n";

$html .= "<li>" . $noeud['nom_categorie'] . "";

$niveau_precedent = $niveau;

$html .= afficher_menu($noeud['categorie_id'], ($niveau + 1), $array);

}
}

if (($niveau_precedent == $niveau) && ($niveau_precedent != 0)) $html .= "\n</li>\n";
else if ($niveau_precedent == $niveau) $html .= "\n";
else $html .= "</li>\n";

return $html;

}
?>

<?php } catch ( Exception $e ) {
echo "Une erreur est survenue lors de la récupération des Données";
}
?>

<?php

echo afficher_menu(0, 0, $categories);
?>


</html>