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

Langage PHP Discussion :

[PHP-JS] Problème dans un menu dynamique


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [PHP-JS] Problème dans un menu dynamique
    Voila le fichier menu2.php qui me permet normalement de générer le menu déroulant.
    Avant de générer le menu à partir de tables afin de le rendre dynamique, le résultat était le suivant : http://lbd56.free.fr
    (menu droit)
    Depuis que j'ai changé mon fichier menu2.php, afin de le rendre dynamique le menu reste figé( voir photo jointe), avec tous les liens qui sont affichés simultanément.
    Voici le script :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <script type="text/javascript">                                                  <!-- Début script JavaScript-->
    window.onload=montre;  <!-- fonction JS -->
    function montre(id) {
        var d = document.getElementById(id);                                         <!-- on récupère dans la variable d le nombre d'élèments -->
            for (var i = 1; i<=10; i++) {                                            <!-- pour i, de 1 à 10, si on a un sous menu, on l'affiche : cela formera le menu déroulant -->
                if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
            }
        if (d) {d.style.display='block';}
    }
     
    </script>                                                                        <!-- Fin du script JavaScript-->
     
    <dl id="menu2">
     
                 <?php
     
                      $recup_num_categorie="SELECT * FROM categorie WHERE num_categorie<>'NULL';";
                      if (!($res_recup_num_categorie=mysql_query($recup_num_categorie,$GLOBALS['lien'])))
                         {
                              echo "Problème de requête dans la récupération des catégories de familles de produits".
                              $res_recup_num_categorie."<BR>";
                              echo mysql_error($GLOBALS['lien']);exit;
                        }
                    $smenu=1;
     
                    while ($rep=mysql_fetch_row($res_recup_num_categorie)) {         // Tant qu'il y a des réponses à la requête, on récupère les informations suivantes de la base, puis on les afficher par le script HTML suivant    
                        $codecat=$rep[0];
                        $libellecat=$rep[2];
                        echo "<dt onmouseout=\"javascript:montre();\"
                        onmouseover=\"javascript:montre(\'smenu.$smenu\');\">";
                        echo "$libellecat";
                        echo " </a></dt>";
                        echo "<dd id=\"smenu.$smenu\" onmouseout=\"javascript:montre();\"
                        onmouseover=\"javascript:montre(\'smenu.$smenu\');\">";
                        echo "<ul>";
     
                        $recup_num_famille="SELECT * FROM famille_produit WHERE num_categorie='$codecat';";
                         if (!($res_recup_num_famille=mysql_query($recup_num_famille,$GLOBALS['lien'])))
                         {
                              echo "Problème de requête dans la récupération des familles de produits".
                              $res_recup_num_famille."<BR>";
                              echo mysql_error($GLOBALS['lien']);exit;
                         }
     
                            while ($rep_code_fam=mysql_fetch_row($res_recup_num_famille)) { 
                            $codefam=$rep_code_fam[0];
                            $libellefam=$rep_code_fam[1];
                            echo "<li><a href='pageproduit.php?u=0&ref=$codefam'>$libellefam</a></li>";
                            }
                        echo "</ul>";
                        echo "</dd>";
     
                        $smenu+=1;
                    }
                ?>              
    </dl>

    Si quelqu'un pouvait m'aider, se serait avec plaisir!!!!
    Images attachées Images attachées  

  2. #2
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    en ce moment, l'url que tu as fournie est celle qui contient le nouveau code ou pas?

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Non c'est le résultat que j'aimerai obtenir ca justement sur l'url. C'est ce que j'avais avant que je modifie le code pr qu'il soit dynamique.

  4. #4
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Je pense que le problème vient de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "<dt onmouseout=\"javascript:montre();\"
                        onmouseover=\"javascript:montre(\'smenu.$smenu\');\">";
    Ici tu protèges les single quotes de smenu.$menu et c'est mal !

    Du coup, JS ne sait plus l'interpréter...

    Si tu fais un echo() avec des double quotes, il est inutile de protéger les simples, et inversement.

    Fais les corrections sur ton code et dis-moi si ça marche !

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    J'ai fais les modifications aux 2 endroits et c'est tjs pareil...snifff lol

  6. #6
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    et en te passant de Peux-tu poster le code source interprété de ton menu ?

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    J'ai essayé en enlevant le ' window.onload=montre; ' et c'est tjs pareil, du coup je l'ai remis.
    Je mets le code généré pris sur la page :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
     
     
                  <script type="text/javascript">                                                  <!-- Début script JavaScript-->
    window.onload=montre;  <!-- fonction JS -->
    function montre(id) {
        var d = document.getElementById(id);                                         <!-- on récupère dans la variable d le nombre d'élèments -->
            for (var i = 1; i<=10; i++) {                                            <!-- pour i, de 1 à 10, si on a un sous menu, on l'affiche : cela formera le menu déroulant -->
                if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
            }
        if (d) {d.style.display='block';}
    }
     
    </script>                                                                        <!-- Fin du script JavaScript-->
     
    <dl id="menu2">
     
      <dt onmouseout="javascript:montre();" onmouseover="javascript:montre('smenu.1');">Crochet</dt>
    <dd id="smenu.1" onmouseout="javascript:montre();"
    					onmouseover="javascript:montre('smenu.1');"><ul><li><a href='pageproduit.php?u=0&ref=1'>Crochet à oeil de sécurité grade 80</a></li><li><a href='pageproduit.php?u=0&ref=2'>Croc à oeil avec linguet haute résistance</a></li></ul></dd><dt onmouseout="javascript:montre();"
    				  	onmouseover="javascript:montre('smenu.2');">Maille/Maillon</dt><dd id="smenu.2" onmouseout="javascript:montre();"
    					onmouseover="javascript:montre('smenu.2');"><ul><li><a href='pageproduit.php?u=0&ref=3'>Maille norvégienne verte haute résistance avec maille</a></li><li><a href='pageproduit.php?u=0&ref=4'>Maille norvégienne verte haute résistance</a></li><li><a href='pageproduit.php?u=0&ref=5'>Maille norvégienne à connecteur haute résistance</a></li><li><a href='pageproduit.php?u=0&ref=6'>Maille norvégienne haute résistance à émérillon</a></li><li><a href='pageproduit.php?u=0&ref=7'>Maille dieppoise haute résistance</a></li><li><a href='pageproduit.php?u=0&ref=8'>Maille dieppoise haute résistance avec maille</a></li><li><a href='pageproduit.php?u=0&ref=9'>Maille dieppoise à émérillon haute résistance articulé</a></li><li><a href='pageproduit.php?u=0&ref=10'>Maille ovale haute résistance à 2 méplats</a></li><li><a href='pageproduit.php?u=0&ref=11'>Maillon rapide galvanisé grande ouverture</a></li></ul></dd><dt onmouseout="javascript:montre();"
    				  	onmouseover="javascript:montre('smenu.3');">Manille</dt><dd id="smenu.3" onmouseout="javascript:montre();"
    					onmouseover="javascript:montre('smenu.3');"><ul><li><a href='pageproduit.php?u=0&ref=12'>Manille spéciale pour chaîne HR tête carrée ou tête fraisée finition rouge</a></li><li><a href='pageproduit.php?u=0&ref=13'>Manille droite ou lyre haute résistance axe tête carrée applatie pour passage de chaîne axe jaune</a></li><li><a href='pageproduit.php?u=0&ref=14'>Manille droite ou lyre haute résistance axe trou carrée applatie pour passage de chaîne axe jaune</a></li><li><a href='pageproduit.php?u=0&ref=15'>Manille droite haute résistance green pin tête carrée axe vert</a></li><li><a href='pageproduit.php?u=0&ref=16'>Manille lyre haute résistance green pin tête carrée axe vert</a></li><li><a href='pageproduit.php?u=0&ref=17'>Manille droite haute résistance green pin trou carré axe vert</a></li><li><a href='pageproduit.php?u=0&ref=18'>Manille lyre haute résistance green pin trou carré axe vert</a></li><li><a href='pageproduit.php?u=0&ref=19'>Manille droite noire tête carrée marquée</a></li><li><a href='pageproduit.php?u=0&ref=20'>Manille lyre noire axe tête carrée marquée</a></li><li><a href='pageproduit.php?u=0&ref=21'>Manille droite noire axe trou carré marquée</a></li><li><a href='pageproduit.php?u=0&ref=22'>Manille lyre noire axe trou carré marquée</a></li><li><a href='pageproduit.php?u=0&ref=23'>Manille commerciale droite ou lyre axe tête carrée noire non marquée</a></li></ul></dd><dt onmouseout="javascript:montre();"
    				  	onmouseover="javascript:montre('smenu.4');">Connecteur</dt><dd id="smenu.4" onmouseout="javascript:montre();"
    					onmouseover="javascript:montre('smenu.4');"><ul><li><a href='pageproduit.php?u=0&ref=24'>Connecteurs grade 80 jaune</a></li></ul></dd><dt onmouseout="javascript:montre();"
    				  	onmouseover="javascript:montre('smenu.5');">Chaîne</dt><dd id="smenu.5" onmouseout="javascript:montre();"
    					onmouseover="javascript:montre('smenu.5');"><ul><li><a href='pageproduit.php?u=0&ref=25'>Chaîne à émérillon noir à oeil à 4 mailles</a></li><li><a href='pageproduit.php?u=0&ref=26'>Chaîne grade 80 mailles courtes</a></li><li><a href='pageproduit.php?u=0&ref=27'>Chaîne grade 80 mailles mi-longues</a></li><li><a href='pageproduit.php?u=0&ref=28'>Chaîne grade 80 mailles longues</a></li></ul></dd><dt onmouseout="javascript:montre();"
    				  	onmouseover="javascript:montre('smenu.6');">Emérillon</dt><dd id="smenu.6" onmouseout="javascript:montre();"
    					onmouseover="javascript:montre('smenu.6');"><ul><li><a href='pageproduit.php?u=0&ref=29'>Émérillon noir forgé à petit oeil</a></li><li><a href='pageproduit.php?u=0&ref=30'>Émérillon petit oeil noir à méplats</a></li></ul></dd><dt onmouseout="javascript:montre();"
    				  	onmouseover="javascript:montre('smenu.7');">Cosse</dt><dd id="smenu.7" onmouseout="javascript:montre();"
    					onmouseover="javascript:montre('smenu.7');"><ul><li><a href='pageproduit.php?u=0&ref=31'>Cosse tube bleu épaisse pour câble acier</a></li><li><a href='pageproduit.php?u=0&ref=32'>Cosse coeur galvanisé pour câble</a></li></ul></dd><dt onmouseout="javascript:montre();"
    				  	onmouseover="javascript:montre('smenu.8');">Serre Câble</dt><dd id="smenu.8" onmouseout="javascript:montre();"
    					onmouseover="javascript:montre('smenu.8');"><ul><li><a href='pageproduit.php?u=0&ref=33'>Serre câble noir en acier estampe</a></li><li><a href='pageproduit.php?u=0&ref=34'>Serre câble galvanisé en acier estampe</a></li></ul></dd><dt onmouseout="javascript:montre();"
    				  	onmouseover="javascript:montre('smenu.9');">Divers</dt><dd id="smenu.9" onmouseout="javascript:montre();"
    					onmouseover="javascript:montre('smenu.9');"><ul><li><a href='pageproduit.php?u=0&ref=35'>Épissoir à pomme pour câble acier</a></li><li><a href='pageproduit.php?u=0&ref=36'>Clé pour manille trou carré largueur de cul fonte</a></li><li><a href='pageproduit.php?u=0&ref=42'>titi</a></li><li><a href='pageproduit.php?u=0&ref=40'>toto</a></li><li><a href='pageproduit.php?u=0&ref=43'>stone sour</a></li></ul></dd>		
     
    </dl>
    J'ai mis le code brut, sans l'avoir remis avec les tabulations, car ca découpe qd meme ici vu la longueur des lignes...desole

  8. #8
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Bon maintenant c'est plus clair :
    Ajoute un point à smenu dans ta fonction JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (document.getElementById('smenu'+i))
    Mets ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (document.getElementById('smenu.'+i))
    Et là, y'a plus de problème !

    Tu as dû vouloir utiliser un point de concaténation, mais entre les quotes, il est interprété comme un point normal...

  9. #9
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Trop bien ca marche!!!
    Merci bcp!!!!!!!!

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

Discussions similaires

  1. [PHP-JS] problème dans mon script
    Par kawther dans le forum Langage
    Réponses: 2
    Dernier message: 17/04/2007, 08h57
  2. [PHP-JS] Problème avec un menu déroulant
    Par nsimon dans le forum Langage
    Réponses: 2
    Dernier message: 11/02/2007, 19h00
  3. [PHP-JS] Problème avec un menu déroulant
    Par grumly22 dans le forum Langage
    Réponses: 3
    Dernier message: 09/05/2006, 11h07
  4. [PHP-JS] Ecrire dans un javascript dynamiquement 'echo'
    Par nono3000 dans le forum Langage
    Réponses: 6
    Dernier message: 23/12/2005, 15h17
  5. [Free Pascal] Intégrer des valeurs dans un menu dynamique
    Par boullery dans le forum Free Pascal
    Réponses: 16
    Dernier message: 30/03/2005, 17h04

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