IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Construction menu dynamique avec titre [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut Construction menu dynamique avec titre
    Bonjour je me rend compte que mon menu dynamique n'est pas hyper bien fais .
    Je cherche à créer un menu bien spécifique, je veux dire par la qu'il doit etre constituer de :
    1. catégorie
    2. nom de la page

    Pour l'instant je ne fais que lister les nom de pages ce qui m'embête bien vu que je doit avoir comme titre le nom de la catégorie en h2 et ensuite la liste des pages de cette même catégorie et ainsi de suite.
    Ma catégorie 1
    • test1
    • test2
    • test3

    Ma catégorie 2
    • autre
    • autre2
    • autre3
    Bon voici mon sql :
    La table catégorie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE IF NOT EXISTS `categorie` (
      `id` int(3) NOT NULL AUTO_INCREMENT,
      `catpage` varchar(100) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
    LA table des pages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE IF NOT EXISTS `page` (
      `id` int(4) NOT NULL AUTO_INCREMENT,
      `catpage` varchar(100) NOT NULL,
      `pathpage` varchar(100) NOT NULL,
      `contentpage` text NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
    Je lie les deux tables par la catégorie, je récupère le tout et l'affiche. cependant j'aimerai pouvoir construire mon menu comme citer plus haut, que modifier dans mes tables ?
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  2. #2
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    Bonjour,

    ce que j'aurai fais :

    table categorie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE IF NOT EXISTS `categorie` (
      `id_cat` int(3) NOT NULL AUTO_INCREMENT,
      `catpage` varchar(100) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
    Table page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE IF NOT EXISTS `page` (
      `id` int(4) NOT NULL AUTO_INCREMENT,
      `id_cat` int(3) NOT NULL,
      `pathpage` varchar(100) NOT NULL,
      `contentpage` text NOT NULL,
      PRIMARY KEY (`id`),
      FOREIGN KEY (id_cat) REFERENCES categorie (id_cat)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
    et dans ton php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $dbConnect = mysql_connect('localhost', 'mysql_user', 'mysql_password');
     
    $query = mysql_query('SELECT c.cat_id, c.catpage, p.pathpage, p.contentpage from categorie c join page p on c.cat_id = p.cat_id');
     
    $catId = 0;
    while( $result = mysql_result($query ) {
     if($catId != $result['cat_id']) {
     echo "<h2>". $result['catpage'] . "</h2>";
    $catId = $result['cat_id']
    }
     
    echo "<a href=\"". $result['pathpage'] . "\" >". $result['pathpage'] ."</a>";
     
     
    }
    mysql_close($dbConnect );
    ps : code non testé mais c'est une piste que tu peux approfondir
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  3. #3
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    je viens de tenter quelque chose avec votre approche seulement il me retourne un titre + un lien à chaque tours de boucle .
    <h2 class="subtitle">test</h2>
    <ul>
    <li><a href="http://www.barrisol.dev/test/machin.html" title="test-machin">Machin</a></li>
    </ul>
    <h2 class="subtitle">test</h2>
    <ul>

    <li><a href="http://www.barrisol.dev/test/machination.html" title="test-machination">Machination</a></li>
    </ul>
    <h2 class="subtitle">test2</h2>
    <ul>
    <li><a href="http://www.barrisol.dev/test2/vroum.html" title="test2-vroum">Vroum</a></li>
    </ul>
    Vous pouvez constater qu'il ma retourner 2 fois la catégorie "test" suivi du liens ou url suivante donc pas pratique .
    Mon code PHP ou plutot smarty mais bon c'est pareille pour moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    {foreach from=$pages key=attr item=ipages}
    			<h2 class="subtitle">{$ipages.catpage}</h2>
    			<ul>
    				<li><a href="{$ipages.catpage}/{$ipages.pathpage}.html" title="{$ipages.catpage}-{$ipages.pathpage}">{$ipages.pathpage|ClashFirstString|replace:'-':' '}</a></li>
    			</ul>
    			{/foreach}
    La requête SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT categorie.id_cat, categorie.catpage, page.pathpage, page.contentpage from categorie join page on categorie.id_cat = page.id_cat
    Une idée je me suis certainement planté pour pas changer
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  4. #4
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    Ben d'après ton code tu ne fais pas de IF pour vérifier si la catégorie courrente est la même ou non que la catégorie précédente donc forcement il affichera tout le temps de le nom de la catégorie pour une page.

    cf code si dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($catId != $result['cat_id']) {
     echo "<h2>". $result['catpage'] . "</h2>";
    $catId = $result['cat_id']
    }
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  5. #5
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    effectivement cela fonctionne mieux avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $catId = 0;
    			$mDyn=null;
    			foreach($pages->constructDyn() as $result) {
    			if($catId != $result['id_cat']) {
    				$mDyn .= '<h2 class="subtitle">'. $result["catpage"] . '</h2>';
    				$catId = $result['id_cat'];
    			}
    				$mDyn .= '<ul><li><a href='.$result["catpage"].'/'.$result["pathpage"].'>'. $result["pathpage"] .'</a></ul>';
    			}
    seulement l'équivalent de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($catId != $result['id_cat']) {
    				$mDyn .= '<h2 class="subtitle">'. $result["catpage"] . '</h2>';
    				$catId = $result['id_cat'];
    			}
    en smarty me faciliterai la tâche.
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  6. #6
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    Désolé je ne connais pas le smarty... quelqu'un ?
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  7. #7
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    Ben j'ai essayer comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    {if $catId neq $ipages.catid}
    			<h2 class="subtitle">{$ipages.catpage}</h2>
    			{$catId eq $ipages.catid}
    			{/if}
    Du coté PHP :
    $catId = 0;
    $this->smarty->assign('catId', $catId);
    Mais je n'ai aucun H2, le if est incorrect.
    Si un spécialiste smarty passe par la
    en tout cas merci jsd03
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  8. #8
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    Je pense que le mieux serait de créer un nouveau topic sur ta question à propos du IF en smarty.

    Bonne continuation.
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  9. #9
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    oui bonne idée je vais posé la question dans le bon forum.
    Merci à toi
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réalisation d'un menu dynamique avec javascript
    Par KosenHitatchi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/03/2011, 13h57
  2. Code javascript de menu dynamique avec des options depuis SQL
    Par Lekno dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 01/02/2011, 11h46
  3. menu dynamique avec reflet
    Par jedizign dans le forum Silverlight
    Réponses: 8
    Dernier message: 23/10/2008, 15h29
  4. Menu dynamique avec JS et base mysql
    Par djoyanna dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 08/09/2008, 11h51
  5. menu dynamique avec oracle forms developper 10g
    Par larneb19 dans le forum Forms
    Réponses: 2
    Dernier message: 16/06/2008, 14h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo