Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1148 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  rendre un menu dynamique et non statique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

rendre un menu dynamique et non statique

n°1315338
jenny50
Posté le 28-02-2006 à 14:28:28  profilanswer
 

Bonjour à tous,  
 
Je viens une nouvelle fois vers où car je dois rendre mon projet demain et je n'arrive tjs pas à faire ce que je souhaite (j'ai une solution de dépannage mais elle ne me convient pas).
 
J'ai ce script qui me donne un menu verticale non dynamique mais esthétique. Le hic c'est que toutes les catégories et leurs sous catégories sont entrées en dur.

Code :
  1. <script language="JavaScript">
  2. //-------------------------Liens de rubriques et leur contenu
  3. rub1 = '<a href="2000/dec.php">n°2 Décembre</a>';
  4. rub2 = '<a href="2001/dec.php">n°6 Décembre</a><br><a href="2001/sept.php">n°5 Septembre</a><br> <a href="2001/juin.php">n°4 Juin</a><br> <a href="2001/avril.php">n°3 Avril</a>';
  5. function fermer(e){
  6. document.getElementById("rubrique"+e).innerHTML = '';
  7. document.getElementById("rubrique"+e).style.position = 'absolute';
  8. }
  9. function go(n){
  10. document.getElementById("rubrique"+n).style.position = 'relative';
  11. if(n == 1){
  12.     document.getElementById("rubrique"+n).innerHTML = rub1 + "   <a href='javascript:fermer("+n+" )'></a>";
  13.     }
  14.     if(n == 2){
  15.         document.getElementById("rubrique"+n).innerHTML = rub2 + "   <a href='javascript:fermer("+n+" )'></a>";
  16.     }
  17. }
  18. <body>
  19. <h2><a href="javascript:go(2)">Infos 2001</a></h2>
  20.          <DIV ID="rubrique2" STYLE="position:relative"></DIV>
  21.          <h2><a href="javascript:go(1)">Infos 2000</a></h2>
  22.          <DIV ID="rubrique1" STYLE="position:relative"></DIV>
  23. </script>


J'ai réussi à faire en sorte de changer le code du body pour que mes rubriques s'affiche dynamiquement. Mais je n'y arrive pas pour les sous rubriques

Code :
  1. <?
  2.          $sql = " SELECT cat_cle, cat_lib FROM categorie WHERE cat_lib like '%20%' ORDER BY cat_lib DESC ";
  3.          $qry = pg_query($conn, $sql);
  4.          while ($result = pg_fetch_assoc($qry))
  5.           {
  6.          ?>
  7.          <h2><a href="javascript:go(<?=$result['cat_cle']?> )">Infos de <?=$result['cat_lib']?></a></h2>
  8.          <DIV ID="rubrique6" STYLE="position:relative"></DIV>
  9.          <?
  10.           }
  11.          ?>


Pour le lien (ouvrir ou fermer la rubrique) j'ai utilisé ma clé de catégorie. Est-ce une bonne solution?? Comment feriez-vous??

mood
Publicité
Posté le 28-02-2006 à 14:28:28  profilanswer
 

n°1315593
newneo2001
Posté le 28-02-2006 à 19:17:29  profilanswer
 

il faut que tu imbriques 2 boucles SQL
 

Code :
  1. $req_cat = 'SELECT cat FROM table... ';
  2. while mysql_fetch_array($req_cat){
  3.   echo 'la catégorie : '.$req_cat['cat'];
  4.    $req_sscat = 'SELECT sscat FROM table WHERE cat = '.$req_cat['cat'];
  5.      while mysql_fetch_array($req_sscat){
  6.         echo 'la sous catégorie : '.$req_sscat['sscat'];
  7.       }
  8. }


 
Voilà, bonne chance

Message cité 1 fois
Message édité par newneo2001 le 01-03-2006 à 09:50:39
n°1315869
jenny50
Posté le 01-03-2006 à 09:47:19  profilanswer
 

Je n'y arrive pas..
 
Voici mes requetes.

Code :
  1. $sql = " SELECT cat_cle, cat_lib FROM categorie WHERE cat_lib like '%20%' ORDER BY cat_lib DESC ";
  2. $qry = pg_query($conn, $sql);
  3. $result = pg_fetch_assoc($qry);
  4. $sql2 = " SELECT doc_cle, doc_lib, doc_type, doc_file, doc_cat FROM documents WHERE doc_cat=".$result['cat_cle']." ORDER BY doc_lib DESC ";
  5. $qry2 = pg_query($conn, $sql2);
  6. $result2 = pg_fetch_assoc($qry2);


 
Je souhaite boucler cette ligne:  

Code :
  1. rub2 = '<a href="2001/dec.php">n°6 Décembre</a><br> <a href="2001/sept.php">n°5 Septembre</a><br> <a href="2001/juin.php">n°4 Juin</a><br> <a href="2001/avril.php">n°3 Avril</a>';


 
où :
2 = cat_cle;
2001/dec.php = doc_file
n°6 Décembre = doc_lib
 
Merci d'avance

n°1315877
newneo2001
Posté le 01-03-2006 à 09:55:44  profilanswer
 

ben c'est exactement le code que je t'ai fait au dessus.
 
$req_cat = $sql
$req_sscat = $sql2
 
il faut juste rajouter les mysql_query apres les $req_cat et $req_sscat mais ca tu le sais déjà.
 
Il est où le problème ?

n°1315884
jenny50
Posté le 01-03-2006 à 10:06:54  profilanswer
 

Ben ça m'affiche une liste énorme où est écrit !: "categorie:souscategorie:...."
 
Voici mon code, regarde s'il te parait correct?

Code :
  1. $sql = " SELECT cat_cle, cat_lib FROM categorie WHERE cat_lib like '%20%' ORDER BY cat_lib DESC ";
  2. $qry = pg_query($conn, $sql);
  3. $result = pg_fetch_assoc($qry);
  4. while (pg_fetch_array($qry, O, PGSQL_ASSOC))
  5. {
  6. echo 'la catégorie : '.$sql['cat_lib'];
  7. $sql2 = " SELECT doc_cle, doc_lib, doc_type, doc_file, doc_cat FROM documents WHERE doc_cat=".$result['cat_cle']." ORDER BY doc_lib DESC ";
  8. $qry2 = pg_query($conn, $sql2);
  9. $result2 = pg_fetch_assoc($qry2);
  10. while (pg_fetch_array($qry2, O, PGSQL_ASSOC))
  11. {
  12. echo 'la sous catégorie : '.$sql2['doc_lib'];
  13. }
  14. }

n°1315896
newneo2001
Posté le 01-03-2006 à 10:12:44  profilanswer
 

normal que ca marche pas
 
ton problème vient de là
 

Code :
  1. $result = pg_fetch_assoc($qry);
  2. while (pg_fetch_array($qry, O, PGSQL_ASSOC))


 
ca sert à rien ta boucle while là.
 
corrige comme ca normalement :
 

Code :
  1. $sql = " SELECT cat_cle, cat_lib FROM categorie WHERE cat_lib like '%20%' ORDER BY cat_lib DESC ";
  2. $qry = pg_query($conn, $sql);
  3. while ($result = pg_fetch_assoc($qry))
  4.     {
  5.     echo 'la catégorie : '.$result['cat_lib'].'</br>';


 
tien moi au courant
++


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
n°1315907
anapajari
s/travail/glanding on hfr/gs;
Posté le 01-03-2006 à 10:19:45  profilanswer
 

jenny50 a écrit :

Ben ça m'affiche une liste énorme où est écrit !: "categorie:souscategorie:...."
 
Voici mon code, regarde s'il te parait correct?

Code :
  1. $sql = " SELECT cat_cle, cat_lib FROM categorie WHERE cat_lib like '%20%' ORDER BY cat_lib DESC ";
  2. $qry = pg_query($conn, $sql);
  3. $result = pg_fetch_assoc($qry);
  4. while (pg_fetch_array($qry, O, PGSQL_ASSOC))
  5. {
  6. echo 'la catégorie : '.$sql['cat_lib'];
  7. $sql2 = " SELECT doc_cle, doc_lib, doc_type, doc_file, doc_cat FROM documents WHERE doc_cat=".$result['cat_cle']." ORDER BY doc_lib DESC ";
  8. $qry2 = pg_query($conn, $sql2);
  9. $result2 = pg_fetch_assoc($qry2);
  10. while (pg_fetch_array($qry2, O, PGSQL_ASSOC))
  11. {
  12. echo 'la sous catégorie : '.$sql2['doc_lib'];
  13. }
  14. }



waouh c'est magnifiquement n'importe quoi :o
 
Tu fais

Code :
  1. $sql = " SELECT cat_cle, cat_lib FROM categorie WHERE cat_lib like '%20%' ORDER BY cat_lib DESC ";


definition d'une chaine de caractère ( dans ce cas précis une requete)

Code :
  1. $qry = pg_query($conn, $sql);


execution de la requete

Code :
  1. $result = pg_fetch_assoc($qry);


tu recupères le résultat de la requete dans un tableau associatif

Code :
  1. while (pg_fetch_array($qry, O, PGSQL_ASSOC)) {


tu récupères la ligne suivantes du resultat de la requete ( la je sais déjà pas ce qu'il fait vu que tu as déjà un fetch avant)

Code :
  1. echo 'la catégorie : '.$sql['cat_lib'];


Et le tu fais un echo de la case 'cat_lib' de ton tableau $sql ( qui est en fait un string défini plutot).
Pas trop étonnant que ça marche pas.
Il vaut mieux essayer de comprendre ce qu'on fait plutot que d'assembler 2/3 bouts de code péchés a droite a gauche sur le net!
 
Par ailleurs newneo2001, ton code c'est nawak aussi :o
[edit] le code nawak en question c'est celui la

newneo2001 a écrit :


Code :
  1. $req_cat = 'SELECT cat FROM table... ';
  2. while mysql_fetch_array($req_cat){
  3.   echo 'la catégorie : '.$req_cat['cat'];
  4.    $req_sscat = 'SELECT sscat FROM table WHERE cat = '.$req_cat['cat'];
  5.      while mysql_fetch_array($req_sscat){
  6.         echo 'la sous catégorie : '.$req_sscat['sscat'];
  7.       }
  8. }


 


les deux variables dans les echos n'existent pas


Message édité par anapajari le 01-03-2006 à 10:21:29
n°1315916
newneo2001
Posté le 01-03-2006 à 10:24:34  profilanswer
 

anapajari > si tu veux, mais ca serait bien de dire pourquoi alors ?
 
Pour ce que tu dis du code jenny50, oui ca je sais que ca merde c'est pour ca que je lui ai réécrit.
 
et tu proposes quoi alors toi ?


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
n°1315928
anapajari
s/travail/glanding on hfr/gs;
Posté le 01-03-2006 à 10:30:29  profilanswer
 

Bin je l'ai dit pourquoi!!! [:spamafote]
Dans le 1er cas tu fait echo de $req_cat['cat'], or $req_cat c'est en fait la requete que tu as définie 2 lignes plus tot!
 
Dans ton 2eme bout de code tu ne t'es pas contre pas trompé, tu fais:

Code :
  1. while ($result = pg_fetch_assoc($qry))


et tu te sers bien de result et plus de sql

n°1315931
newneo2001
Posté le 01-03-2006 à 10:33:56  profilanswer
 

ah oui c'est pcq le 1er code je l'ai fait pour lui montrer le schéma pour imbriquer les 2 boucles. mais le code était un peu capilotracté c'est vrai
 
j'ai aussi oubié d'exécuter les query dans mon 1er code si tu regardes bien aussi.
 
Ce qui compte c'est que ca marche maintenant :)


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
mood
Publicité
Posté le 01-03-2006 à 10:33:56  profilanswer
 

n°1315944
jenny50
Posté le 01-03-2006 à 10:53:24  profilanswer
 

en fait j'avais déjà fait ce code. Mais ça ne fonctionne pas. Quand je visualise juste les catégorie apparaisent normal c'est correct dans mon body. Le hic vient vraiment de la partie php dans javascript. Mais quand je regarde le code source les sousrubriques sont présentes et bien remplies. Alors pourquoi elles ne s'affichent pas c'est un mistère.
 
Voici mon code entier. Regarde si tu vois qqch qui pourrait êtr une erreur.

Code :
  1. <?php
  2. require('fonctions.php');
  3. $conn = g_connect();
  4. $rep = '../img';
  5. ?>
  6. <html>
  7. <head>
  8. <title>Bodemer Infos du groupe Bodemer</title>
  9. <!-------------------------- Fichiers liés pour aérer code -->
  10. <link href="../css/style.css" rel="stylesheet" type="text/css">
  11. <script type="text/javascript" src="../css/javascript.js"></script>
  12. <script language="JavaScript">
  13. //-------------------------Liens de rubriques
  14. <?
  15. $sql = " SELECT cat_cle, cat_lib FROM categorie WHERE cat_lib like '%20%' ORDER BY cat_lib DESC ";
  16. $qry = pg_query($conn, $sql);
  17. while ($result = pg_fetch_assoc($qry))
  18.    {
  19.    echo 'rub '.$result['cat_cle'].'=\'';
  20. $sql2 = " SELECT doc_cle, doc_lib, doc_type, doc_file, doc_cat FROM documents WHERE doc_cat=".$result['cat_cle']." ORDER BY doc_lib DESC ";
  21. $qry2 = pg_query($conn, $sql2);
  22. while ($result2 = pg_fetch_assoc($qry2))
  23. {
  24. echo '<img src="../img/puce.jpg" border="0" hspace="10"><a href="../admin/file.php?cle=' .$result2['doc_cle']. '&oid=' .$result2['doc_file']. '&doc_type' .$result2['doc_type']. '" target="bodemer">' .$result2['doc_lib'].'</a></br>';
  25. }
  26. echo '\'';
  27. }
  28. ?>
  29. //rub2 = '<a href="2001/dec.php">n°6 Décembre</a><br> <a href="2001/sept.php">n°5 Septembre</a><br> <a href="2001/juin.php">n°4 Juin</a><br> <a href="2001/avril.php">n°3 Avril</a>';
  30. function fermer(e){
  31. document.getElementById("rubrique"+e).innerHTML = '';
  32. document.getElementById("rubrique"+e).style.position = 'absolute';
  33. }
  34. function go(n){
  35. document.getElementById("rubrique"+n).style.position = 'relative';
  36. <?
  37. $sql = " SELECT cat_cle, cat_lib FROM categorie WHERE cat_lib like '%20%' ORDER BY cat_lib DESC ";
  38. $qry = pg_query($conn, $sql);
  39. while ($result = pg_fetch_assoc($qry))
  40.    {
  41.    echo 'if(n == '.$result['cat_cle'].'){ document.getElementById("rubrique"+n).innerHTML = rub' .$result['cat_cle']. '+ "   <a href=\'javascript:fermer("+n+" )\'><img src="../img/croix.jpg" border="0"></a>"; }'; 
  42.    }
  43. ?>
  44. //if(n == 1){
  45.     //document.getElementById("rubrique"+n).innerHTML = rub1 + "   <a href='javascript:fermer("+n+" )'><img src=\"../img/croix.jpg\" border=\"0\"></a>";
  46.     //}
  47. }
  48. </script>
  49. </head>
  50. <body>
  51. <table width="90%" align="center" height="100%" border="1" bordercolor="#CCCCCC" cellpadding="0" cellspacing="0">
  52. <tr valign="top">
  53.  <td>
  54.   <table width="100%" height="79%" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC" bordercolor="#333399">
  55.    <tr valign="top">
  56.     <td width="25%">
  57. <!-------------------------- Tableau pour agir -->
  58.      <table width="80%" align="center" bgcolor="#CCCCCC" cellpadding="0" cellspacing="0">
  59.       <tr>
  60.        <td>
  61.         <div class="bodemerinfos">
  62.          <?
  63.          $sql = " SELECT cat_cle, cat_lib FROM categorie WHERE cat_lib like '%20%' ORDER BY cat_lib DESC ";
  64.          $qry = pg_query($conn, $sql);
  65.          while ($result = pg_fetch_assoc($qry))
  66.           {
  67.          ?>
  68.          <h2><a href="javascript:go(<?=$result['cat_cle']?> )"><img src="../img/+.jpg" border="0" hspace="5">Bodemer Infos de <?=$result['cat_lib']?></a></h2>
  69.          <DIV ID="rubrique<?=$result['cat_cle']?>" STYLE="position:relative"></DIV>
  70.          <?
  71.           }
  72.          ?>
  73. <!-------------------------Code pour que le lien soit ouvert au chargement -->
  74.          <script language='JavaScript' type='text/javascript'>
  75.           go(6);
  76.          </script>
  77.         </div>
  78.        </td>
  79.       </tr>
  80.      </table>
  81.     </td>
  82.     <td width="75%" height="70%" bgcolor="#FFFFFF" align="center">
  83.      <iframe src="../public/infos.php" name="bodemer"></iframe>
  84.     </td>
  85.    </tr>
  86.   </table>
  87.  </td>
  88. </tr>
  89. </table>
  90. </body>
  91. </html>

n°1315951
newneo2001
Posté le 01-03-2006 à 11:00:23  profilanswer
 

met en ligne et montre nous.
 
Le truc qu'il faut comprendre c'est que le PHP est interprété coté serveur alors que le JS coté client.
 
En fait ton PHP, doit te générer ta page HTML correctement, regarde ta source et si la source est bonne, c'est que c'est ton JS qui ne fonctionne pas.
 
A savoir que pour des menu dynamiques je te conseille plus l'utilisation des CSS qui peut permettre ce genre de menu. Et c'est bien mieux que le javascript


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
n°1315974
jenny50
Posté le 01-03-2006 à 11:28:39  profilanswer
 

C'est trop le bazar pour le mettre en ligne car ma base est géré en interne...
En ce qui concerne les css je suis dac avec toi mais j'aurais voulu régler ce problème. J'aime pas quand quelque chose reste en suspens...
 
Merci de ton aide jvais voir comment je peux faire. C'est bien mon JS qui ne fonctionne pas puisque ma source est bonne...

n°1315979
newneo2001
Posté le 01-03-2006 à 11:31:33  profilanswer
 

Ce qui faut faire c'est d'abord faire fonctionner ton menu sans le PHP. Ecrit ta source en dure. Qd ton menu fonctionne, là tu as qu'à remplacer le dure par le PHP.
 
@++


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
n°1315990
jenny50
Posté le 01-03-2006 à 11:45:53  profilanswer
 

merci mais justement c'est la méthode que j'ai utilisé...
Et ça ne fonctionne pas... EN dure y'a pas de soucis tout marche.
 
1. j'ai changer mon code dans mon body (le plus simple) pas de soucis.
2. mettre mon php dans mon JS et là merdage...
 
Il doit y avoir un petit bug

n°1315999
newneo2001
Posté le 01-03-2006 à 11:50:38  profilanswer
 

c'est que ton code PHP, ne génère pas un code HTML valide, tout simplement.
 
Maintenant ti tu mets pas en ligne on pourra difficilement t'aider +


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
n°1316027
omega2
Posté le 01-03-2006 à 12:11:38  profilanswer
 

jenny50 a écrit :

merci mais justement c'est la méthode que j'ai utilisé...
Et ça ne fonctionne pas... EN dure y'a pas de soucis tout marche.
 
1. j'ai changer mon code dans mon body (le plus simple) pas de soucis.
2. mettre mon php dans mon JS et là merdage...
 
Il doit y avoir un petit bug


Si ca marche pas, c'est que le code php ne te cré pas de code html respectant la même régle que ce que t'avais mis en place avec ta version "en dur".
Faute d'exemple "dynamique" accéssible sur un serveur, c'est à toi de regarder le code html de la page tel que reçu par le navigateur afin de chercher les différences. On ne poura pas le faire à ta place.

n°1316039
jenny50
Posté le 01-03-2006 à 12:26:39  profilanswer
 

j'en ai bien conscience.. je vous remercie de votre aide.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  rendre un menu dynamique et non statique

 

Sujets relatifs
vlookup, menu deroulant sur diffrente ligne[Resolu]selection de ligne d'un tableau dynamique et formulaire
Encore un menu deroulant....menu qui descend tout seul ???
[MFC] Menu dynamiqueCreer un menu deroulant
Include pour un menutableau dynamique croisée
Menu DHTML ? CSS ? 
Plus de sujets relatifs à : rendre un menu dynamique et non statique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR