PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 HTML, xHTML CSS » Tarif pour traduction en anglais ?? » 02-11-2011 18:20:07

quaresma
Réponses : 2

Bonsoir à toutes et tous,
je suis webmaster freelance et une éventuelle future cliente me demande un devis pour un site internet bilingue de 8 pages.

Je connais mes tarifs normaux, mais je n'ai encore jamais réalisé un site en deux langues (français - anglais).

Aussi, pourriez-vous me dire à combien je pourrai évaluer le montant de la traduction en Anglais ??

Merci beaucoup pour vos réponses et bonne soirée
quaresma

#2 Re : Javascript » Bloquer le menu lors du changement de page » 03-11-2010 22:37:00

Pierrot a écrit :

'<div class="sousmenu"><a class="lienmenu" href="lefichierphpquirempliratoncadredumileu.php?num='.$num.'&lib='.$lib.'">'.$lib.'</a></div><br>



$("a.lienmenu").click(function() {
      $("contenucel1").empty().append($.ajax({
          url: $(this).attr('href')
         )}
    });
     

a++

Merci beaucoup.

j'essayerai demain et je te tiendrai au courant.

Bonne soirée

#3 Re : Javascript » Bloquer le menu lors du changement de page » 03-11-2010 22:37:00

Pierrot a écrit :

A savoir que le code ............... n'a rien à voir avec le menu de gauche

fais la même pour les liens de ton menu et le problème est réglé wink

a++

Et il n'y a rien de plus facile ??

Genre une fonction PHP qui récupère l'id du menu et sous-menu en cours et qui laisse le menu en question ouvert tant que je n'ai pas changé de menu ??

Cela doit bien être réalisable non ??

#4 Re : Javascript » Bloquer le menu lors du changement de page » 03-11-2010 22:37:00

Tu as raison "gros malin" (humour)

On repart du début :

je suis en train de faire un site et je voudrais faire en sorte que mon menu de gauche reste bloqué sur la partie du menu sur laquelle j'ai cliqué lorsque je change de page.
Par exemple, lorsque je clique sur le sous-menu "théâtre", j'aimerai que le menu relatif à théâtre reste ouvert (tu comprends ??) lors du changement de page.

Voici mon js :

function afficheMenu(obj){
 
  var idMenu     = obj.id;
  var idSousMenu = 'sous' + idMenu;
  var sousMenu   = document.getElementById(idSousMenu);
 
  /*****************************************************/
  /** on cache tous les sous-menus pour n'afficher    **/
  /** que celui dont le menu correspondant est cliqué **/
  /** où 4 correspond au nombre de sous-menus         **/
  /*****************************************************/
  for(var i = 1; i <= 5; i++){
    if(document.getElementById('sousmenu' + i) && document.getElementById('sousmenu' + i) != sousMenu){
      document.getElementById('sousmenu' + i).style.display = "none";
    }
  }
 
  if(sousMenu){
    //alert(sousMenu.style.display);
    if(sousMenu.style.display == "block"){
      sousMenu.style.display = "none";
    }
    else{
      sousMenu.style.display = "block";
    }
  }
 
}

Ensuite le code pour le menu :

<div id="menu">
<?php
require("identification/connexion_sql.php");
// on attaque le php ici
// dans un premier temps on recupere les menus de niveau 1 donc ceux qui ont l'id_parent egal a 0
$req1 = "SELECT id_menu, lib_menu FROM menus WHERE id_parent='0' ORDER BY ordre_menu" or die ("impossible d'effectuer la requête");
$rep1 = mysql_query($req1);
while($row1 = mysql_fetch_array($rep1)) {

// on affiche le menu de niveau 1
echo "<div class=\"menu\" id=\"menu".$row1['id_menu']."\" onclick=\"afficheMenu(this)\"><a href=\"#\">".$row1['lib_menu']."</a></div><br>";
// ensuite on fait une seconde requete pour chercher les sous menus de ce niveau, s'il y en a on les affiche, sinon on ne fait rien

$req2="SELECT id_menu, lib_menu FROM menus WHERE id_parent='".$row1['id_menu']."' ORDER BY ordre_menu"  or die ("impossible d'effectuer la requête");
$rep2=mysql_query($req2);
$nb2=mysql_num_rows($rep2);
if (isset($nb2) && $nb2>0) {

echo "<div id=\"sousmenu".$row1['id_menu']."\" style=\"display:none\"><br>";
while ($row2=mysql_fetch_array($rep2)) {
$num = $row2['id_menu'];
$lib = htmlentities($row2['lib_menu']);
print '<div class="sousmenu"><a href="contenu.php?num='.$num.'&lib='.$lib.'">'.$lib.'</a></div><br>';
}
echo "</div>";
}
}
?>
</div>

Puis le .ccs relatif au menu:

#menu{
  width:150px;
}
.menu, .sousmenu{
  text-align: right;
}
.menu{
  height:18px;
  width:150px;
  color:#fff;
  padding-bottom: 10px;
  top:0;
  font-family:arial,sans-serif;
  font-size:12px;
  text-decoration:none;
}
.sousmenu{
  height:14px;
  width:170px;
  padding: 0px;
  color:#ffffff;
  text-align: right;
}
.menu a{
  display:block;
  width:100%;
  height:100%;
  color:#fff;
  font-family:arial,sans-serif;
  font-size:12px;
  text-decoration:none;
  margin-top: 0;
}
.sousmenu a{
  display:block;
  width:100%;
  height:100%;
  color:#666666;
  font-family:Garamond;
  font-size:18px;
  text-decoration:none;
}
.sousmenu a:hover, .sousmenu a:active, .sousmenu a:focus{
  color:#ffffff;
}

Le code de la page php sur laquelle je fais les tests:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head>
    <title>Création d'un design étape par étape - Etape n°1 : Le code xhtml</title>
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <meta http-equiv="Content-Language" content="fr" />
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" href="css/copie_style_menu.css" type="text/css" />
      <link rel="stylesheet" href="css/contenu.css" type="text/css" />
    <script type="text/javascript" src="js/copie_functions.js"></script>
      <script type="text/javascript" src="js/functions_contenu.js"></script>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
  </head>
 
  <body>
  <div id="conteneur">
    <div id="entete"></div>
    <div id="conteneur2">
    <div id="cellulegauche"><?php include("menu/copie_menu.php") ?></div>
       
    <div id="contenucel1">
    <div class="titre_lien"><?php
  $titre = $_GET['lib'];
  print''.$titre.''; ?></div>
  <?php
  include ("requetes/requete_lien.php");
  ?>
    </div>
        <div id="contenucel2"></div>
        <div id="contenucel3" class="placeholder"></div>
        <script>
    $("a.lien").click(function() {
      loadContent( $(this).attr('href') );
      return false;
    });
     
    function loadContent(page){
        $.ajax({
          url: page,
          success: function(data) {
            $('.placeholder').html(data);
          }
        });
    }
    </script>
        </div>
    </div>
  </body>
</html>

A savoir que le code

<script>
    $("a.lien").click(function() {
      loadContent( $(this).attr('href') );
      return false;
    });
     
    function loadContent(page){
        $.ajax({
          url: page,
          success: function(data) {
            $('.placeholder').html(data);
          }
        });
    }
    </script>

n'a rien à voir avec le menu de gauche. C'est unet fonction qui me permet d'afficher dans la zone blanche de droite un texte lorsque je clique sur un lien appartenant à la zone blanche du milieu.

Et enfin, le lien vers le site en test : Site de test

J'espère que ces données seront suffisantes, sinon n'hésites-pas à me dire ce qu'il manque.
Merci beaucoup pou ton aide et bonne soirée.

PS :

$("#contenucel1").append("Le contenu que tu veux")
pour la 3ieme, dis moi ce que tu veux mettre

Je ne veux rien remplacer, mais faire en sorte que mon menu de gauche reste bloqué sur la partie du menu sur laquelle j'ai cliqué lorsque je change de page.

#5 Re : Javascript » Bloquer le menu lors du changement de page » 03-11-2010 22:37:00

Pierrot a écrit :

bon, pour la 1ere et 2ieme question, j'te laisse deviner.
pour la 3ieme, dis moi ce que tu veux mettre wink
a++

Ok, je vais voir sur un autre forum, si c'est pour jouer aux devinettes ^^

#6 Re : Javascript » Bloquer le menu lors du changement de page » 03-11-2010 22:37:00

C'est-à-dire au clic dans mon menu ??

Dans la fonction javascript ou dans le code PHP ??

Par quoi dois-je remplacer "Le contenu que tu veux" ??

Merci encore et bonne journée

#7 Re : Forum Général PHP » Problème de requête » 30-10-2010 11:20:39

Bonjour,
c'est bon j'ai réussi.

Merci tout de même et bonne journée

#8 Re : Javascript » Bloquer le menu lors du changement de page » 03-11-2010 22:37:00

Pierrot a écrit :

$("#contenucel1").append("Le contenu que tu veux")

a++

Bonjour,
et je dois le placer où ce code ??

#9 Javascript » Bloquer le menu lors du changement de page » 03-11-2010 22:37:00

quaresma
Réponses : 13

Bonjour à toutes et tous,

je suis en train de faire un site et je voudrais faire en sorte que mon menu de gauche reste bloqué sur la partie du menu sur laquelle j'ai cliqué lors du changement de page.

Voici mon js :

function afficheMenu(obj){
 
  var idMenu     = obj.id;
  var idSousMenu = 'sous' + idMenu;
  var sousMenu   = document.getElementById(idSousMenu);
 
  /*****************************************************/
  /** on cache tous les sous-menus pour n'afficher    **/
  /** que celui dont le menu correspondant est cliqué **/
  /** où 4 correspond au nombre de sous-menus         **/
  /*****************************************************/
  for(var i = 1; i <= 5; i++){
    if(document.getElementById('sousmenu' + i) && document.getElementById('sousmenu' + i) != sousMenu){
      document.getElementById('sousmenu' + i).style.display = "none";
    }
  }
 
  if(sousMenu){
    //alert(sousMenu.style.display);
    if(sousMenu.style.display == "block"){
      sousMenu.style.display = "none";
    }
    else{
      sousMenu.style.display = "block";
    }
  }
 
}

Le site en question se trouve ici : http://www.la-grange-sardieres.fr/site% … ontenu.php

Par exemple, lorsque je clique sur "théâtre", je voudrai faire en sorte qu'au changement de page, le menu reste déroulé sur la partie que j'ai cliqué, c'est-à-dire pour cet exemple le menu principal "écrits" avec les sous-menus déroulés.

Si besoin, voici également le code HTML de la page :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="index, follow" />
<meta name="keywords" content=" "/>
<meta name="description" content=" "/>
<title></title>
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   <link rel="stylesheet" href="css/copie_style_menu.css" type="text/css" />
     <link rel="stylesheet" href="css/contenu.css" type="text/css" />
   <script type="text/javascript" src="js/copie_functions.js"></script>

     <script type="text/javascript" src="js/functions_contenu.js"></script>
<style type="text/css">
<!--
body {
  margin-top: 0px;
}
-->
</style>

</head>
<body bgcolor="#333333">
<table width="1050" border="0" align="center" cellpadding="0" cellspacing="0" style="background: #000; height: 421px; min-height: 421px;">
<tr>
<td colspan="3" style="height: 50px; min-height: 50px; max-height: 50px;"></td>
</tr>
<tr>
  <td width="183" valign="top"><div id="menu">
<div class="menu" id="menu1" onclick="afficheMenu(this)"><a href="#"><img src="images/push1.gif" border="0" /></a></div><br>

<div id="sousmenu1" style="display:none"><br>
<div class="sousmenu"><a href="contenu.php?num=6&lib=théâtre">théâtre</a></div><br><div class="sousmenu"><a href="contenu.php?num=7&lib=enfance et jeunesse">enfance et jeunesse</a></div><br><div class="sousmenu"><a href="contenu.php?num=8&lib=poésie">poésie</a></div><br><div class="sousmenu"><a href="contenu.php?num=9&lib=traduction">traduction</a></div><br><div class="sousmenu"><a href="contenu.php?num=10&lib=inédits">inédits</a></div><br><div class="sousmenu"><a href="contenu.php?num=11&lib=autres publications">autres publications</a></div><br></div>
<div class="menu" id="menu2" onclick="afficheMenu(this)"><a href="#"><img src="images/push1.gif" border="0" /></a></div><br>
<div id="sousmenu2" style="display:none"><br>
<div class="sousmenu"><a href="contenu.php?num=12&lib=saison 2010-2011">saison 2010-2011</a></div><br><div class="sousmenu"><a href="contenu.php?num=13&lib=saison 2009-2010">saison 2009-2010</a></div><br><div class="sousmenu"><a href="contenu.php?num=14&lib=archives">archives</a></div><br></div>

<div class="menu" id="menu3" onclick="afficheMenu(this)"><a href="#"><img src="images/push1.gif" border="0" /></a></div><br>
<div id="sousmenu3" style="display:none"><br>
<div class="sousmenu"><a href="contenu.php?num=15&lib=lacoop">lacoop</a></div><br><div class="sousmenu"><a href="contenu.php?num=16&lib=projets pour la scène">projets pour la scène</a></div><br><div class="sousmenu"><a href="contenu.php?num=17&lib=enseignement/Ateliers">enseignement/Ateliers</a></div><br><div class="sousmenu"><a href="contenu.php?num=18&lib=radio">radio</a></div><br></div>
<div class="menu" id="menu4" onclick="afficheMenu(this)"><a href="#"><img src="images/push1.gif" border="0" /></a></div><br>
<div id="sousmenu4" style="display:none"><br>
<div class="sousmenu"><a href="contenu.php?num=19&lib=à l'affiche">à l'affiche</a></div><br><div class="sousmenu"><a href="contenu.php?num=20&lib=nouvelle publication">nouvelle publication</a></div><br><div class="sousmenu"><a href="contenu.php?num=21&lib=impromptus">impromptus</a></div><br></div>
<div class="menu" id="menu5" onclick="afficheMenu(this)"><a href="#"><img src="images/push1.gif" border="0" /></a></div><br>
<div id="sousmenu5" style="display:none"><br>

<div class="sousmenu"><a href="contenu.php?num=22&lib=presse">presse</a></div><br><div class="sousmenu"><a href="contenu.php?num=23&lib=liens">liens</a></div><br><div class="sousmenu"><a href="contenu.php?num=24&lib=contact">contact</a></div><br></div>
</div></td>
  <td width="800" valign="top" style="width: 665px;"><table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="47%" valign="top" bgcolor="#FFFFFF" class="titre_lien">
  <br>
      <br><a href="#" onclick="afficheDescURL(' Contient mon C.V., entre autres [moimeme.fr] ')" class="lien">nom_lien</a></td>
    <td width="2%"> </td>

    <td width="51%" bgcolor="#FFFFFF"><div id="textDiv"><div class="texte_lieu">lieu</div>
      <br />
      <div class="texte_titre">Titre</div>
      <br />
      <div class="texte_dateetnbrepage">dateetnbrepage</div>
      <div class="texte_editeur">editeur</div>
      <br />

      <div class="texte_contenu">texte</div><br />
    </div></td>
  </tr>
</table></td>
<td width="17" style="background: #000;"> </td>
</tr>
</table>

</body>
</html>

Pensez-vous que cela est réalisable ?
Je pense qu'il faut ajouter des paramètres dans mon js, mais je ne sais pas où exactement. (ce n'est que mon avis)

Merci beaucoup pour votre aide et bonne soirée.

#10 Forum Général PHP » Problème de requête » 30-10-2010 11:20:39

quaresma
Réponses : 3

Bonjour à toutes et tous,

J'ai deux tables menus et contenus :


CREATE TABLE menus (id_menu INT NOT NULL AUTO_INCREMENT, lib_menu VARCHAR (100) NOT NULL, id_parent INT, image_menu VARCHAR (100), url_page VARCHAR (100), ordre_menu INT, PRIMARY KEY (id_menu));

CREATE TABLE contenu (id_contenu INT NOT NULL AUTO_INCREMENT, categorie VARCHAR (100) NOT NULL, nom_lien VARCHAR (40), photo_contenu VARCHAR (40), lieu VARCHAR (40), titre VARCHAR (40), dateetnbrepage VARCHAR (20), editeur VARCHAR (40), texte TEXT, ordre_contenu INT, PRIMARY KEY (id_contenu));
 

Sur mon site, j'ai un menu à gauche qui correspond à la table menus, dont voici le code PHP/SQL :

<div id="menu">
<?php
require("identification/connexion_sql.php");
// on attaque le php ici
// dans un premier temps on recupere les menus de niveau 1 donc ceux qui ont l'id_parent egal a 0
$req1 = "SELECT id_menu, lib_menu FROM menus WHERE id_parent='0' ORDER BY ordre_menu" or die ("impossible d'effectuer la requête");
$rep1 = mysql_query($req1);
while($row1 = mysql_fetch_array($rep1)) {

// on affiche le menu de niveau 1
echo "<div class=\"menu\" id=\"menu".$row1['id_menu']."\" onclick=\"afficheMenu(this)\"><a href=\"#\">".$row1['lib_menu']."</a></div><br>\n";
// ensuite on fait une seconde requete pour chercher les sous menus de ce niveau, s'il y en a on les affiche, sinon on ne fait rien

$req2="SELECT id_menu, lib_menu FROM menus WHERE id_parent='".$row1['id_menu']."' ORDER BY ordre_menu"  or die ("impossible d'effectuer la requête");
$rep2=mysql_query($req2);
$nb2=mysql_num_rows($rep2);
if (isset($nb2) && $nb2>0) {

echo "<div id=\"sousmenu".$row1['id_menu']."\" style=\"display:none\"><br>\n";
while ($row2=mysql_fetch_array($rep2)) {
$num = $row2['id_menu'];
$lib = htmlentities($row2['lib_menu']);
print '<div class="sousmenu"><a href="contenu.php?num='.$num.'&lib='.$lib.'">'.$lib.'</a></div><br>';
}
echo "</div>\n";

}
}
?>
</div>

Lorsque je clique sur un un lien du sous-menu, je vais vers une page nommée contenu.php? pour laquelle je transmets des variables ($num et $lib)

Cette page contenu.php devrait afficher les noms des liens correspondant au sous-menu cliqué, mais j'ai un soucis dans la requête de cette page.

Voici le code PHP/SQL qui ne fonctionne pas. Je n'ai pas d'erreur, tout simplement lorsque je clique sur un lien du sous-menu le contenu correspondant ne s'affiche pas :

<?php
$ca = htmlentities($_GET['lib']);
$idm = $_GET['num'];
require("identification/connexion_sql.php");

$requete = "Select id_contenu, nom_lien, categorie FROM contenu, menus WHERE contenu.categorie = (SELECT lib_menu FROM menus WHERE menus.lib_menu='$ca') ORDER BY contenu.ordre_contenu";
$reponse = mysql_query($requete) or die ("impossible d'effectuer la requête");
while($affiche = mysql_fetch_array($reponse)) {
$liencontenu = htmlentities($affiche['nom_lien']);
$id_contenu = $affiche['id_contenu'];

print '<div id="lien" class="lien"><a href="fiche.php?id='.$id_contenu.'&nomlien='.$liencontenu.'" class="lien">'.$liencontenu.'</a></div>';

}
mysql_close();
?>

Pour mieux comprendre, voici la page où je fais les tests : Site

Merci beaucoup pour votre aide.

#11 Re : Forum Général PHP » menu en php/sql » 23-10-2010 19:34:35

Tant pis, peut-être que quelqu'un d'autre aura la gentillesse de m'aider...:(

#12 Re : Forum Général PHP » menu en php/sql » 23-10-2010 19:34:35

Jc a écrit :

@Quaresma :

Quaresma a écrit :

<td width="183" valign="top" style="width: 145px;"><?php include"menu/menu.php" ?></td>

<?php include("menu/menu.php"); ?>

serait mieux non?

++

Oui, mais cela ne résout aucun problème...:(

#13 Re : Forum Général PHP » menu en php/sql » 23-10-2010 19:34:35

Bonsoir,
j'ai fait pas mal de modifications.

Voici le code de la page "presentation.php" :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="index, follow" />
<meta name="keywords" content=" "/>
<meta name="description" content=" "/>
<title></title>
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   <link rel="stylesheet" href="css/style_menu.css" type="text/css" />
   <script type="text/javascript" src="js/functions.js"></script>
<style type="text/css">
<!--
body {
  margin-top: 0px;
}
-->
</style></head>
<body bgcolor="#333333">
  <table width="1050" border="0" align="center" cellpadding="0" cellspacing="0" style="background: #000; height: 421px; min-height: 421px;">
    <tr>
      <td colspan="3" style="height: 50px; min-height: 50px; max-height: 50px;"> </td>
    </tr>
    <tr>
      <td width="183" valign="top" style="width: 145px;"><?php include"menu/menu.php" ?></td>
      <td width="850" style="width: 682px; background: #fff;">contenu</td>
      <td width="17" style="background: #000;"> </td>
  </tr>
</table>

</body>
</html>

Voici le code du CSS :

#menu {
width: 150px;
background: #000;
margin: 0;
}
.menu_niv2 { display: none; }
.menu_niv1 a {
display: block;
background: #333;
color: #fff;
text-decoration: none;
text-align: center;
}
.menu_niv1 a:hover {
  display: block;
  background: #666;
  color: #fff;
  text-decoration: underline;
  text-align: center;
}
.menu_niv2 a {
  color: #333;
  background: #ccc;
  text-decoration: none;
  text-align: center;
  display: block;
}
.menu_niv2 a:hover {
  color: #333;
  background: #aaa;
  text-decoration: underline;
  text-align: center;
  display: block;
}

Voici le code du js :


function afficheMenu(menu) {
  // generation du nom du sous menu que l'on veut gerer (afficher / cacher)
  var sousMenu='sous' + menu;
  // on recupere son etat
  var etatSousMenu=document.getElementById(sousMenu).style.display;
  // on cree un array de tous les menus de niveau 1, donc ceux qui ont la classe 'menu_niv1'
  var listeNiv1=document.getElementsByClassName('menu_niv1');
  // on boucle sur ces elements
  for (var i=0; i<listeNiv1.length; i++) {
    // on recupere l'id du menu courant
    var idCourant=listeNiv1[i].id;
    // si l'id courant est le meme que le menu que l'on a clique alors on traite le sous menu
    // sinon on le cache et on passe au suivant
    if (idCourant==menu) {
        if (etatSousMenu=='block') {
          document.getElementById(sousMenu).style.display='none';
          } else {
             document.getElementById(sousMenu).style.display='block';
          }
        } else {
           // attention, si on cache, on doit cacher le sous menu du menu courant, il faut donc creer une nouvelle variable pour cacher celui-ci
           var sousMenuTemp='sous' + idCourant;
           document.getElementById(sousMenuTemp).style.display='none';
        }
    }
}
 

Et, enfin le code du menu :


<div id="menu">
<?php
  require("identification/connexion_sql.php");
  // on attaque le php ici
  // dans un premier temps on recupere les menus de niveau 1 donc ceux qui ont l'id_parent egal a 0
  $req1 = "SELECT id_menu, lib_menu FROM menus WHERE id_parent='0' ORDER BY ordre_menu" or die ("impossible d'effectuer la requête");
  $rep1 = mysql_query($req1);
  while($row1 = mysql_fetch_array($rep1)) {
     // on affiche le menu de niveau 1
     echo "<div class=\"menu_niv1\" id=\"menu".$row1['id_menu']."\" onclick=\"afficheMenu(this.id)\"><a href=\"#\">".$row1['lib_menu']."</a></div>\n";
    // ensuite on fait une seconde requete pour chercher les sous menus de ce niveau, s'il y en a on les affiche, sinon on ne fait rien
    $req2=("SELECT id_menu, lib_menu FROM menus WHERE id_parent='".$row1['id_menu'].
               "' ORDER BY ordre_menu");  // or die ("impossible d'effectuer la requête");
    $rep2=mysql_query($req2);
    $nb2=mysql_num_rows($rep2);
    if (isset($nb2) && $nb2>0) {
       echo "<div id=\"sousmenu".$row1['id_menu']."\" class=\"menu_niv2\">\n";
       while ($row2=mysql_fetch_array($rep2)) {
           echo "<a href=\"#\">".htmlentities($row2['lib_menu'])."</a>\n";
       }
       echo "</div>\n";
    }
}
?>
</div>
 

le premier problème est le décalage du menu par rapport à la zone blanche.
Normalement, le menu doit être à la même hauteur que la zone blanche, mais ce n'est pas le cas sad
Je ne comprends pas pourquoi il y a ce problème.

Autre problème, le menu ne fonctionne pas du tout sous IE.

Pensez-vous pouvoir m'aider ?

Merci beaucoup et bonne soirée

#14 Re : Forum Général PHP » menu en php/sql » 23-10-2010 19:34:35

moogli a écrit :

Cela ce fait lorsque tu realise la cesure entre les menus

Je sais, mais je fais plein de test et je n'obtient pas le résultat voulu.
Je suis vraiment perdu là...:(

#15 Re : Forum Général PHP » menu en php/sql » 23-10-2010 19:34:35

moogli a écrit :

tu ne ferme pas le div "sousmenuX" je pense que le soucis est la !
donc avant d'afficher le menu suivant il faut fermer le sousmenu précent !
</div>
                    <div class="sousmenu">
                    <a href="#">autres publications</a>
        </div>   <============== manque un </div> ici
    <div class="menu" id="menu2" onclick="afficheMenu(this)">
        <a href="#">scènes</a>

    </div>

Justement, j'essaie de résoudre ce problème, mais je n'arrive pas à formuler le code...:(

#16 Re : Forum Général PHP » menu en php/sql » 23-10-2010 19:34:35

j'ai fait une modification dans le code mais ce n'est pas encore cela :

<?php
require("identification/connexion_sql.php");
$db = mysql_connect($host_db,$login_db,$password_db) or die ("impossible de se connecter a la base".mysql_error());
mysql_select_db($name_db,$db) or die ("base inexistante".mysql_error());
$req = mysql_query("SELECT * FROM rubrique, ss_rubrique WHERE ss_rubrique.numrubrique = rubrique.numrubrique ORDER BY rubrique.numrubrique ASC, ss_rubrique.numssrubrique") or die ("impossible d'effectuer la requête");
$arrayFlag = array();
print'<div id="menu">';
while($shopone = mysql_fetch_array($req)){
$nomrubrique = stripslashes($shopone['nomrubrique']);
$nomssrubrique = stripslashes($shopone['nomssrubrique']);
$nomrubrique2 = utf8_encode($nomrubrique);
$nomssrubrique2 = utf8_encode($nomssrubrique);
if( !isset($arrayFlag[$shopone['numrubrique']])) // On vérifie que le champ n'a pas été déjà affiché
{

print'
  <div class="menu" id="menu'
.$shopone['numrubrique'].'" onclick="afficheMenu(this)">
    <a href="#">'
.$nomrubrique2.'</a>
  </div>
  <div id="sousmenu'
.$shopone['numrubrique'].'" style="display:none">';
 
$arrayFlag[$shopone['numrubrique']] = true;} // On signale qu'on a affiché cette catégorie au moins une fois

print'
          <div class="sousmenu">
          <a href="#">'
.$nomssrubrique2.'</a>
    </div>'
;  
 }
print'</div>';
 mysql_close();
?>

#17 Re : Forum Général PHP » menu en php/sql » 23-10-2010 19:34:35

J'ai fait des modifications, mais le résultat n'est pas encore terrible sad

Voici mon nouveau code :

<?php
require("identification/connexion_sql.php");
$db = mysql_connect($host_db,$login_db,$password_db) or die ("impossible de se connecter a la base".mysql_error());
mysql_select_db($name_db,$db) or die ("base inexistante".mysql_error());
$req = mysql_query("SELECT * FROM rubrique, ss_rubrique WHERE ss_rubrique.numrubrique = rubrique.numrubrique ORDER BY rubrique.numrubrique ASC, ss_rubrique.numssrubrique") or die ("impossible d'effectuer la requête");
$arrayFlag = array();
print'<div id="menu">';
while($shopone = mysql_fetch_array($req)){
$nomrubrique = stripslashes($shopone['nomrubrique']);
$nomssrubrique = stripslashes($shopone['nomssrubrique']);
$nomrubrique2 = utf8_encode($nomrubrique);
$nomssrubrique2 = utf8_encode($nomssrubrique);
if( !isset($arrayFlag[$shopone['numrubrique']])) // On vérifie que le champ n'a pas été déjà affiché
{

print'
  <div class="menu" id="menu'
.$shopone['numrubrique'].'" onclick="afficheMenu(this)">
    <a href="#">'
.$nomrubrique2.'</a>
  </div>'
;
 
$arrayFlag[$shopone['numrubrique']] = true;} // On signale qu'on a affiché cette catégorie au moins une fois

if( !isset($arrayFlag[$shopone['numrubrique']])) // On vérifie que le champ n'a pas été déjà affiché
{

print'<div id="sousmenu'.$shopone['numrubrique'].'" style="display:none">
          <div class="sousmenu">
          <a href="#">'
.$nomssrubrique2.'</a>
    </div>'
;  
 }else{
 print'<div class="sousmenu">
          <a href="#">'
.$nomssrubrique2.'</a>
    </div>'
;  
    }
 }
print'</div>';
 mysql_close();
?>

Puis le résultat :

http://www.la-grange-sardieres.fr/site% … tation.php

Merci

#18 Re : Forum Général PHP » menu en php/sql » 23-10-2010 19:34:35

quelqu'un pour m'éclairer s'il vous plait ?

#19 Re : Forum Général PHP » menu en php/sql » 23-10-2010 19:34:35

C'est ce que j'ai fait dans le code de mon menu non ??

#20 Forum Général PHP » menu en php/sql » 23-10-2010 19:34:35

quaresma
Réponses : 23

Bonjour a toutes et tous,
je voulais savoir si quelqu'un pouvait m'aider à faire un menu en PHP/SQL comme celui-ci :

http://css.developpez.com/galerie/demo/ … roulant2/#

En récupérant les titres "menu1","menu1",etc. à partir d'une SGBD SQL et les sous-menu également.

J'ai des notions en php/sql, il me faudrait juste un petit coup de pouce s'il vous plait.

Pour le moment j'ai ceci :



J'ai deux tables comme cela :

CREATE TABLE rubrique (numrubrique INT NOT NULL, nomrubrique VARCHAR (20) NOT NULL, numssrubrique INT NOT NULL, PRIMARY KEY (numrubrique));

CREATE TABLE ss_rubrique (numssrubrique INT NOT NULL AUTO_INCREMENT, nomssrubrique VARCHAR (40) NOT NULL, photossrubrique VARCHAR (40), numrubrique INT NOT NULL, PRIMARY KEY (numssrubrique));

Elles contiennent les données suivantes :

INSERT INTO rubrique (numrubrique, nomrubrique, numssrubrique) VALUES ("1", "écrits", "1"), ("2", "scènes", "2");

INSERT INTO ss_rubrique (numssrubrique, nomssrubrique, photossrubrique, numrubrique) VALUES ("1", "théâtre", "foto1.gif", "1"), ("2", "enfance et jeunesse", "foto2.gif", "2");

J'ai trois fichiers.

Un fichier appelé functions.js qui contient la fonction pour le menu :

function afficheMenu(obj){
   
    var idMenu     = obj.id;
    var idSousMenu = 'sous' + idMenu;
    var sousMenu   = document.getElementById(idSousMenu);
   
    /*****************************************************/
    /**    on cache tous les sous-menus pour n'afficher    **/
    /** que celui dont le menu correspondant est cliqué **/
    /** où 4 correspond au nombre de sous-menus         **/
    /*****************************************************/
    for(var i = 1; i <= 4; i++){
        if(document.getElementById('sousmenu' + i) && document.getElementById('sousmenu' + i) != sousMenu){
            document.getElementById('sousmenu' + i).style.display = "none";
        }
    }
   
    if(sousMenu){
        //alert(sousMenu.style.display);
        if(sousMenu.style.display == "block"){
            sousMenu.style.display = "none";
        }
        else{
            sousMenu.style.display = "block";
        }
    }
   
}

Un fichier nommé style.css qui contient les styles pour le menu :

*{
    margin:0;
    padding:0;
}
#menu{
    width:150px;
    margin:20px auto 0 auto;
}
.menu, .sousmenu{
    text-align:center;
}
.menu{
    height:18px;
    width:150px;
    padding:2px 0;
    background:#404040;
    color:#fff;
}
.sousmenu{
    height:18px;
    width:150px;
    padding:1px 0;
    background:#808080;
    color:#fff;
}
.menu a{
    display:block;
    width:100%;
    height:100%;
    color:#fff;
    font-family:arial,sans-serif;
    font-size:12px;
    font-weight:bold;
    text-decoration:none;
    background:#404040;
}
.sousmenu a{
    display:block;
    width:100%;
    height:100%;
    color:#123456;
    font-family:arial,sans-serif;
    font-size:12px;
    font-weight:bold;
    text-decoration:none;
}
.menu a:hover, .sousmenu a:hover, .menu a:active, .sousmenu a:active, .menu a:focus, .sousmenu a:focus{
    color:#654321;
}

La page sur laquelle j'appelle le menu dynamiquement ainsi que les fichiers "functions.js" et "style.css"  :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="index, follow" />
<meta name="keywords" content=" />
<meta name="description" content=" />
<title></title>
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     <link rel="stylesheet" href="menu/style.css" type="text/css" />
     <script type="text/javascript" src="menu/functions.js"></script>
</head>
<body>
<table width="900" height="421" border="0" align="center" bgcolor="#000000">
  <tr>
    <td width="22"> </td>
    <td width="145" valign="top"><br />
    <?php include"menu/menu.php" ?>; </td>
    <td width="682" valign="top"><br />

Puis, le fichier du menu :

<?php
require("identification/connexion_sql.php");
$db = mysql_connect($host_db,$login_db,$password_db) or die ("impossible de se connecter a la base".mysql_error());
mysql_select_db($name_db,$db) or die ("base inexistante".mysql_error());
$req = mysql_query("SELECT * FROM rubrique, ss_rubrique WHERE rubrique.numssrubrique = ss_rubrique.numssrubrique AND rubrique.numrubrique = ss_rubrique.numrubrique") or die ("impossible d'effectuer la requête");
$arrayFlag = array();
while($shopone = mysql_fetch_array($req)){
$nomrubrique = stripslashes($shopone['nomrubrique']);
$nomssrubrique = stripslashes($shopone['nomssrubrique']);
$nomrubrique2 = utf8_encode($nomrubrique);
$nomssrubrique2 = utf8_encode($nomssrubrique);
if( !isset($arrayFlag[$shopone['numrubrique']])) // On vérifie que le champ n'a pas été déjà affiché
{
print'
<div id="menu">
    <div class="menu" id="menu1" onclick="afficheMenu(this)">
        <a href="#">'
.$nomrubrique2.'</a>
    </div>'
;
$arrayFlag[$shopone['numrubrique']] = true;} // On signale qu'on a affiché cette catégorie au moins une fois

print'<div id="sousmenu1" style="display:none">
        <div class="sousmenu">
            <a href="#">'
.$nomssrubrique2.'</a>
        </div>
        </div>
        </div>'
;  
 }
 mysql_close();
?>

Pour l'instant, le résultat n'est pas terrible comme vous pourrez le constater :

[url]http://www.la-grange-sardieres.fr/site Fab/presentation.php[/url]

Je voudrai le même résultat que le menu pris en exemple, mais dans ce que j'ai fait il y a quelque chose qui ne va pas.


Merci beaucoup pour votre aide.

Edit : ajout le type de code pour la colorisation de la syntaxe (par exemple code=php)

#21 Re : MySQL, PostgreSQL, etc... » Requête pour afficher menu ? » 07-03-2010 11:53:17

Je n'ai pas une formation de dev, je suis responsable technique.

Mais en ce moment, je suis sur la boutique de notre agence smile

dur dur ^^
Je fais ce que je peux wink

#22 Re : MySQL, PostgreSQL, etc... » Requête pour afficher menu ? » 07-03-2010 11:53:17

Salut,

un GRAND GRAND MERCI, sans toi je n'y serai pas arrivé! Tout est pafait !

A une prochaine fois sûrement car la boutique n'est pas finie smile

Je te souhaite une bonne continuation et un bon dimanche wink

#23 Re : MySQL, PostgreSQL, etc... » Requête pour afficher menu ? » 07-03-2010 11:53:17

cc!

OK j'ai fait la modification et ca à l'air de fonctionner. MERCI BEAUCOUP.

Cependant, l'affichage n'est pas terrible lorsqu'il y a plusieurs sous-categories dans une catégorie principale.

Comme tu peux le constater : image menu


Voici mon nouveau code des fois que tu pourrais m'aider à améliorer le design wink

<?php
require("identification/connexion_sql.php");
$db = mysql_connect($host_db,$login_db,$password_db) or die ("impossible de se connecter a la base".mysql_error());
mysql_select_db($name_db,$db) or die ("base inexistante".mysql_error());
$req = mysql_query("SELECT * FROM groupe_article, s_groupe_article WHERE s_groupe_article.numgroupe = groupe_article.numgroupe ORDER BY groupe_article.numgroupe ASC") or die ("impossible d'effectuer la requête");

$arrayFlag = array();
while($shopone = mysql_fetch_array($req)){
$nomdugroupe = stripslashes($shopone['nomgroupe']);
$nomsousgroupe = stripslashes($shopone['nomssgroupe']);

if( !isset($arrayFlag[$shopone['numgroupe']])) // On vérifie que le champ n'a pas été déjà affiché
{
    print'<table width="100%" border="0" cellspacing="1" cellpadding="1">
      <tr>
        <th width="14%" scope="col"> </th>
        <th width="86%" scope="col"><a href="formation.php"><strong>
        <div align="left">'.$nomdugroupe.'</div></strong></a></th>
      </tr>';

$arrayFlag[$shopone['numgroupe']] = true;} // On signale qu'on a affiché cette catégorie au moins une fois
   
    print'<tr>
        <th width="14%" scope="col"> </th>
        <th width="86%" scope="col"><div align="left"><a href="maintenance.php" class="textessmenuleft">'.$nomsousgroupe.'</a></div></th>
      </tr>
    </table>';  
 }
mysql_close();
?>

MERKI

#24 Re : MySQL, PostgreSQL, etc... » Requête pour afficher menu ? » 07-03-2010 11:53:17

Hey!
j'ai effectué beaucoup de test mais sans grand succès j'ai toujours des erreurs...

Voici la dernière erreur que mon code affiche:

Warning: Cannot use a scalar value as an array in /homez.33/ifmicro/www/v2/boutique/index_boutique2.php on line 42
Portable
Warning: Cannot use a scalar value as an array in /homez.33/ifmicro/www/v2/boutique/index_boutique2.php on line 42
Ordinateur
Warning: Cannot use a scalar value as an array in /homez.33/ifmicro/www/v2/boutique/index_boutique2.php on line 42
Ordinateur
Warning: Cannot use a scalar value as an array in /homez.33/ifmicro/www/v2/boutique/index_boutique2.php on line 42
Ordinateur
Warning: Cannot use a scalar value as an array in /homez.33/ifmicro/www/v2/boutique/index_boutique2.php on line 42
Ordinateur
Warning: Cannot use a scalar value as an array in /homez.33/ifmicro/www/v2/boutique/index_boutique2.php on line 42
Disque Dur Externe
Warning: Cannot use a scalar value as an array in /homez.33/ifmicro/www/v2/boutique/index_boutique2.php on line 42
Disque Dur Externe

Mon code modifié est le suivant : (ligne 42 indiquée) mais il y a surement d'autre erreurs :\


<?php
require("identification/connexion_sql.php");
$db = mysql_connect($host_db,$login_db,$password_db) or die ("impossible de se connecter a la base".mysql_error());
mysql_select_db($name_db,$db) or die ("base inexistante".mysql_error());
$req = mysql_query("SELECT * FROM groupe_article, s_groupe_article WHERE s_groupe_article.numgroupe = groupe_article.numgroupe ORDER BY groupe_article.numgroupe ASC") or die ("impossible d'effectuer la requête");
$arrayFlag = $req;
while($shopone = mysql_fetch_array($req)){
$nomdugroupe = stripslashes($shopone['nomgroupe']);
$nomsousgroupe = stripslashes($shopone['nomssgroupe']);

if( !isset($arrayFlag[$shopone['numgroupe']])) // On vérifie que le champ n'a pas été déjà affiché
{
    echo $shopone['nomgroupe']; // On l'affiche
    $arrayFlag[$shopone['numgroupe']] = true; // <<<-------LIGNE 42--------------
  }
}


print'<table width="100%" border="0" cellspacing="1" cellpadding="1">
      <tr>
        <th width="14%" scope="col"> </th>
        <th width="86%" scope="col"><a href="formation.php"><strong>
        <div align="left">'.$nomdugroupe.'</div></strong></a></th>
      </tr>
      <tr>
        <th width="14%" scope="col"> </th>
        <th width="86%" scope="col"><div align="left"><a href="maintenance.php" class="textessmenuleft">'.$nomsousgroupe.'</a></div></th>
      </tr>
    </table>';
mysql_close();
?>

#25 Re : MySQL, PostgreSQL, etc... » Requête pour afficher menu ? » 07-03-2010 11:53:17

Merci pour te réponse.

Je viens juste de rentrer. Je vais faire des essais et je te tiens au courant si ca fonctionne ou pas wink

MERCI!

Pied de page des forums

Propulsé par FluxBB