PHP - MAJ du menu suivant l'util connecté

Fermé
BiBloOo Messages postés 24 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 2 octobre 2015 - 12 févr. 2009 à 14:14
BiBloOo Messages postés 24 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 2 octobre 2015 - 13 févr. 2009 à 14:41
Bonjour à tous,

Je viens réclamé votre aide car je me casse les dents sur ce problème depuis hier non stop ...
Je souhaite avoir un menu dynamique je pourrais dire, suivant la personne connecté
Je vous explique ...

Quand j'ouvre mon site, j'ai que mon menu pour me connecter qui s'affiche. Une fois la saison du login et du mot de passe, je traite les informations pour savoir si j'ouvre une session ou non. Et si je l'ouvre, j'aimerais affiché mon menu administrateur ou utilisateur suivant le "niveau" de la personne qui vient de se connecter.
J'arrive parfaitement a afficher ces menu sur ma page connexion, donc dans le corps mais pas dans mon menu a gauche ...

Voici ma page connexion ==>
<?php
require("connectBDD.php");
//ouverture d'une session
session_start();
$login=$_POST["login"];
$mdp=$_POST["mdp"];
$libErr="";
if (isset($_REQUEST["valider"]) && (empty($login) || empty($mdp)))
{
    $libErr=" Le pseudo ou le mot de passe n'est pas renseigné";
}

if (isset($_REQUEST["valider"]) && empty($login)==false && empty($mdp)==false)
{
    // on vérifie la validité des informations dans la base
    $sql="SELECT numUtil FROM UTILISATEUR WHERE identifiant='".$login."' AND mdp='".$mdp."';";
    $query = mssql_query($sql) or die('Erreur sur la requête' );

    // aucun utilisateur avec le compte et le mot de passe saisis
    if(mssql_num_rows($query)==0)
    {
        $libErr="Le pseudo ou le mot de passe est erroné";
    }
    else
    {
        $ligne = mssql_fetch_array($query);
        $type = $ligne["numUtil"];
        $_SESSION['login'] = $_POST['login'];
        $_SESSION['mdp'] = $_POST['mdp'];
        // On recherche les informations de l'utilisateur
        $sql="SELECT niveau, numAdresseSite FROM UTILISATEUR WHERE identifiant='".$_SESSION['login']."' AND mdp='".$_SESSION['mdp']."'";
        $query = mssql_query($sql);
        if(mssql_num_rows($query) != 0)
        {
          $row = mssql_fetch_array($query);
          $_SESSION['niveau'] = $row['niveau'];
          $_SESSION['numAdSite'] = $row['numAdresseSite'];
        }
          $connexion="oui";
          // vers la page d'entrée du site
          if(session_start())
          {
            echo("Connexion réussie");
            //header ("Location:accueil.php");
          }
          else
          {
            echo("Connexion échoué");
            //header ("Location:connexion.php");
          }
    }
}
?>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title></title>
</head>
<body>
<link rel="stylesheet" type="text/css" href="design.css"/>

  <form name="connexion" action="" method="post">
          <table width="500" border="0" cellspacing="5" align="center">
              <tr>
                  <td>Identifiant</td>
                  <td><input type="text" name="login" size=20></td>
              </tr>
              <tr>
                  <td>Mot de passe</td>
                  <td><input type="password" name="mdp" size=20></td>
              </tr>
          </table>
          <table align=center border=0>
              <tr><br>
                  <td><input name="valider" type="submit"  value="Ok"></td>
              </tr>
          </table>
  </form>

<?php
echo $libErr;
?>
</body>
</html>

Rien de bien compliqué ...

Page accueil (qui contient les trois sous menu : connexion, admin, utilisateur) ==>
<?php
require("connectBDD.php");
start_session();
?>

<!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">

<head>
  <title></title>
</head>

<body>
<link rel="stylesheet" type="text/css" href="design.css"/>
<form name="monFormMenuGeneral" id="idFormMenuGeneral" method="GET" action="">
<div id="menu">
   <div class = "sous_menu_1">
      <ul>
          <li><a href="index.php?page=connexion">Connexion</a></li>
      </ul>
  </div>
  <?php
    if($_SESSION['niveau'] == '1')
    {
  ?>
  <div class = "sous_menu_2">
      <ul>
          <li><a href="index.php?page=ajoutSite">Ajouter site</a></li>
      </ul>
      <ul>
            <li><a href="index.php?page=modifierBatiment">Modifier batiment</a></li>
      </ul>
      <ul>
            <li><a href="index.php?page=formulaireSite">Supprimer batiment (ou son type)</a></li>
      </ul>
      <ul>
            <li><a href="index.php?page=ajoutCompteur">Ajouter compteur</a></li>
      </ul>
      <ul>
            <li><a href="index.php?page=supprimerCompteur">Supprimer compteur</a></li>
      </ul>
      <ul>
            <li><a href="index.php?page=ajoutType">Ajouter type</a></li>
      </ul>
      <ul>
            <li><a href="index.php?page=supprimerType">Supprimer type</a></li>
      </ul>
      <ul>
            <li><a href="index.php?page=ajoutTypeBat">Ajouter type a un site</a></li>
      </ul>
      <ul>
            <li><a href="index.php?page=ajoutCout">Ajouter cout</a></li>
      </ul>
      <ul>
            <li><a href="index.php?page=supModifCout">Modification/Supression cout</a></li>
      </ul>
  </div>
  <?php
    }
    if($_SESSION['niveau'] == '2')
    {
  ?>
  <div class = "sous_menu_3">
      <ul>
          <li><a href="index.php?page=factureView">Voir facture</a></li>
      </ul>
  </div>
  <?php
   }
   ?>
</div>
</form>
</body>
</html>


Mais y'a rien qui ne s'actualise ...
Ai je oublié un code pour que cela s'actualise ??

Je vous met ma page index au cas ou cela viendrait de la ...
<body>
<link rel="stylesheet" type="text/css" href="design.css"/>
<div id="conteneur">
    <div id="menu">
      <?php
      require ("accueil.php");
      ?>
    </div>
    <div id="corps">
      <?php
      //if(session_start() != true)
      //{
       // require("connexion.php");
      //}
      //else
      //{
        require($_GET['page'].'.php');
      //}
      ?>
    </div>
</div>
</body>
</html>


Un peu de bidouillage la aussi je dois avoué ^^
Beaucoup de code, mais c'est pour mieux visualisé !
Merci d'avance a ceux qui me répondrons ...
Et je suis sure que l'un d'entre vous trouvera cette solution surement toute bête
A voir également:

11 réponses

BiBloOo Messages postés 24 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 2 octobre 2015
12 févr. 2009 à 15:27
Personne pour m'aider ?! ....
0
974_Vin's_974 Messages postés 547 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 19 février 2009 102
13 févr. 2009 à 05:54
Je peux voir ton code CSS de l'id "menu"

Tu dois normalement avoir deux menu diférents, un pour les utilisateur, et un pour l'admin..

Il vaut mieux faire les menus sur tes paes diférentes
0
BiBloOo Messages postés 24 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 2 octobre 2015
13 févr. 2009 à 10:20
J'ai bien plusieurs sous menu ...

#menu
{
   float: left; /* Le menu flottera à gauche */
   width: 120px; /* Très important : donner une taille au menu */
}

.sous_menu_1
{
   background-color: #5FCBC1;
   background-image: url("images/bordure.jpg");
   background-repeat: repeat-x repeat-y;
   border: 2px solid black;
   width: 230px;
   height: 50px;
   padding: 0px;
   padding-top: 20px;
   margin-bottom: 20px; /* Pour éviter que les éléments du menu ne soient trop collés */
}

.sous_menu_2
{
   background-color: #5FCBC1;
   background-image: url("images/bordure.jpg");
   background-repeat: repeat-x repeat-y;
   border: 2px solid black;
   width: 230px;
   height: 310px;
   padding: 0px;
   padding-top: 20px;
   margin-bottom: 20px; /* Pour éviter que les éléments du menu ne soient trop collés */
}

.sous_menu_3
{
   background-color: #5FCBC1;
   background-image: url("images/bordure.jpg");
   background-repeat: repeat-x repeat-y;
   border: 2px solid black;
   width: 230px;
   height: 50px;
   padding: 0px;
   padding-top: 20px;
}


PS : le sous menu 1 étant celui qui affiche juste "connexion"

Mais si je veux l'afficher dans le corps, ma condition marche très bien, sauf que ce n'est pas ce que je veux ... (j'ai testé ca dans la page connexion, aprés que l'utilisateur se soit logué)

Et j'ai essayé de faire mes menus sur des pages différentes, et appelé les pages par des includes, mais ca me met des erreur sur l'include qui ne passe pas ... j'y comprend vraiment rien ...
0
974_Vin's_974 Messages postés 547 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 19 février 2009 102
13 févr. 2009 à 11:55
Non justement c'est la meilleure idée ..

En faite tu fait des pages diférentes, apelé "menu_utilisateur.php", "menu_admin.php" et puis ensuite tu vérifie si la persone est connecté étant admin ou pas, et selon la réponse tu fais un include du menu kil te faut ..

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BiBloOo Messages postés 24 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 2 octobre 2015
13 févr. 2009 à 12:16
J'ai encore essayé a l'instant, ca me fait des bugs ...

Et en fait le fait que mon menu ne s'afficher pas, c'est que mes require me créer des erreurs car j'avais des DOCTYPE et session_start dans chaque page alors que index les avait deja ...

Maintenant ca s'affiche parfaitement bien, enfin ...
Une fois la connexion faite, je dois actualisé ma page pour que le menu arrive et pareil pour la deconnexion, le menu ne disparait qu'après actualisation ...

N'aurais tu pas une solution ?!
0
974_Vin's_974 Messages postés 547 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 19 février 2009 102
13 févr. 2009 à 12:20
Ben difficile a comprendre .. Ca marche ou pas ???? Qu'est ce ki marche pas ?? montre moi le code ..

0
BiBloOo Messages postés 24 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 2 octobre 2015
13 févr. 2009 à 12:34
Le code est au dessus, je n'ai rien changé ... A part enlevé les doctype et les session start sur mes pages appelé dans le corps car c'est deja présent dans l'index, et du coup j'appelé deux fois doctype et session start. tu comprend ??

Sinon comme je l'ai dis au dessus, ca marche mais après rafraichissement de la page. Donc ok ca s'affiche, mais l'utilisateur se connecte et son menu ne s'affiche que s'il a la bonne idée de cliqué quelque part pour actualisé la page, donc c'est pas vraiment opérationnel quoi ...
0
974_Vin's_974 Messages postés 547 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 19 février 2009 102
13 févr. 2009 à 12:49
Bon en faite tu doi faire un truc kom ca ...

En faite une foi kil est connecté tu vérifie si il est admin ou agent ..
Par exemple si il est admin tu prend une variable tu laffecte à un, et si il est agent tu l'affecte à 2

Ensuite Tu fais la vérification kom ca, si la variable est égale à 1 alors tu fais (DANS LE DIV ID MENU)
include("menu_admin.php"); kom je tavé dit, ou si la variable vaut deux tu fais include de menu_utilisateur.php

Mais dans les page que tu fais des include, tu ne remet pas le session start ni le doctype, tu mets juste par exmple (je prend ma page a moi hein )
<div class="menu_titre">
<p class="texte">Menu</p>
</div>


<p class="menu_compte">
<a class="sans_trait" href="ajoutinter.php" >Ajouter une intervention</a> <!-- bouton permettant d'ajouter une intervention -->
</br><a class="sans_trait" href="consultmesinter.php" >Consulter mes interventions </a> <!-- bouton permettant de consulter ses interventions -->

</p>


C tout .. Dans une page le session start ne doit apparaitre kune fois...

Tu le met tout en haut et un poin c tou, pareil pr le doctype !!!!!


0
974_Vin's_974 Messages postés 547 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 19 février 2009 102
13 févr. 2009 à 12:50
Bon en faite tu doi faire un truc kom ca ...

En faite une foi kil est connecté tu vérifie si il est admin ou agent ..
Par exemple si il est admin tu prend une variable tu laffecte à un, et si il est agent tu l'affecte à 2

Ensuite Tu fais la vérification kom ca, si la variable est égale à 1 alors tu fais (DANS LE DIV ID MENU)
include("menu_admin.php"); kom je tavé dit, ou si la variable vaut deux tu fais include de menu_utilisateur.php

Mais dans les page que tu fais des include, tu ne remet pas le session start ni le doctype, tu mets juste par exmple (je prend ma page a moi hein )
<div class="menu_titre">
<p class="texte">Menu</p>
</div>


<p class="menu_compte">
<a class="sans_trait" href="ajoutinter.php" >Ajouter une intervention</a> <!-- bouton permettant d'ajouter une intervention -->
</br><a class="sans_trait" href="consultmesinter.php" >Consulter mes interventions </a> <!-- bouton permettant de consulter ses interventions -->

</p>


C tout .. Dans une page le session start ne doit apparaitre kune fois...

Tu le met tout en haut et un poin c tou, pareil pr le doctype !!!!!


0
BiBloOo Messages postés 24 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 2 octobre 2015
13 févr. 2009 à 14:15
C'est deja ce que j'ai fais ...
J'ai testé de deux manières :
- Une page avec tout les menus, et les test dedans
- Une page par menu et les tests dans la page index

Ca marche ok, mais le menu ne s'affiche qu'après actualisation ... Chose complètement chiante, surtout que l'utilisateur n'est pas censé le deviné ...

Je pensais a affiché une pop up qui confirmerais la connection, et au clic du bouton de la pop up, ca actualiseré la page ...
Y'a peut etre un autre truc tout bete a faire, mais je ne sais pas du tout ... Et de toute facon, la pop up c'est qu'une idée, car je ne vois pas non plus comment faire ...

Peut etre un truc du genre ... ==>
<script language='JavaScript'>alert('connexion réussie')</script>
mais avec un argument en plus, mais je ne sais vraiment ...
0
BiBloOo Messages postés 24 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 2 octobre 2015
13 févr. 2009 à 14:41
J'ai trouvéééééééééé

print('<script>alert("Connexion réussie");</script>');
?>
<script>window.location='index.php?page=accueil';</script>
<?php

Ca me ramene sur ma page d'accueil toute bidon qui dit bienvenue lol, mais du coup ca rafraichit mon site et le menu s'affiche !!!
0