Page 1 sur 1
menu differant tout dépendant du niveau de l'user
Posté : 07 nov. 2007, 14:23
par Poinball
Bonjour , j'ai codé un petit script pour permettre d'afficher un menu différant tout dépendant quelle niveau est l'utilisateurs de mon site web. Il y a 2 niveau 1-admin 2-user
Le probleme est que quand jouvre une session avec un compte
user il a le menu d'admin !!!
<?
$hc = mysql_connect("localhost","*****","*****") or die ("impossible de connecter le serveur de données"); // Pour se connecter à la base de donnée
$db = mysql_select_db("design_facture") or die ("impossible de connecter la base de données. <br/>".mysql_errno()." : ".mysql_error()."");
$utilisateur = "SELECT * FROM utilisateurs order by id asc";
$resultat = mysql_query($utilisateur); // résultat
if($rows=mysql_fetch_array($resultat)) {
$niveau = $rows['niveau'];
if ( $niveau == "admin" ) {
include("menu-admin.php");
}
else {
include("menu-user.php");
}
}
mysql_close();
?>
Posté : 07 nov. 2007, 14:30
par Truc
En effet génant
1er test simple... afficher le contenu de
$niveau
Un peu d'optimisation :
Dans la requête évite le * inutile d'avoir tout le contenu et préfère à la place "niveau" (nom du champ a récupérer)
$possibles = array("admin","user");
if(in_array($niveau,$possibles))
include("menu-".$niveau.".php");
Posté : 07 nov. 2007, 14:36
par Poinball
oki .. alors voici mon nouveau code...
il y a une erreur (le menu affiche pas

).. surment que tu vas me la détecter assé rapidement.. en touka je lespere
<?
$hc = mysql_connect("localhost","*****","*****") or die ("impossible de connecter le serveur de données"); // Pour se connecter à la base de donnée
$db = mysql_select_db("design_facture") or die ("impossible de connecter la base de données. <br/>".mysql_errno()." : ".mysql_error().""); // Pour dire le nom de la base de donnée
$utilisateur = "SELECT niveau FROM utilisateurs order by id asc"; // Ligne pour la sélection dans la bdd (asc) ou (desc) = sens up ou down
$resultat = mysql_query($utilisateur); // résultat
$possibles = array("admin","user");
if(in_array($niveau,$possibles))
include("menu-".$niveau.".php");
mysql_close();
?>
Posté : 07 nov. 2007, 15:25
par h0_noMan
$utilisateur = "SELECT niveau FROM utilisateurs order by id asc";
Tu n'as pas de conditions, donc tu va te retrouver avec toute la liste des utilisateurs.
Et vu que tu ne choisi que l'utilisateur avec le plus faible ID (donc normalemement celui inscrit en 1er)
qui est la plupart du temps ADMIN.
Je penses que tu devrais mettre les login/password dans ta requete afin de n'avoir qu'une seule ligne en retour.
Posté : 07 nov. 2007, 15:35
par AB
Développement du message de
h0_noMan
Y'a quelque chose que je ne comprend pas. Si tu veux afficher une page en fonction de l'utilisateur il faudrait qu'il s'authentifie, non?
Il te faudrait donc un formulaire qui renvoie au moins une variable post et ta requête devrait ressembler à
$user = get_magic_quotes_gpc()? stripslashes($_POST['user']) : $_POST['user'];
$utilisateur = "SELECT niveau FROM utilisateurs WHERE user =". mysql_real_escape_string($user);
$ressource = mysql_query($utilisateur);
$resultat = mysql_fetch_assoc($ressource);
if($resultat['niveau'] == 'admin')
include("menu-admin.php");
}
else {
include("menu-user.php");
}
Posté : 07 nov. 2007, 15:40
par h0_noMan
Comment marche ton systeme d'authentification ?
Vers quelle page est pointé l'action de ton formulaire de login ?
Utilises tu les $_SESSION[] (ou les cookies) pour garder ton utilisateur connecté ?
Posté : 07 nov. 2007, 15:47
par Truc
Tout a été dit... hormis
en touka je lespere

Posté : 07 nov. 2007, 17:09
par Poinball
Pour le garder connecter jutilise les $_SESSION['login'] ....
voisi mon nouveau code qui ne fonctionne pas encore correctement ..
<?
$hc = mysql_connect("localhost","*****","*****") or die ("impossible de connecter le serveur de données"); // Pour se connecter à la base de donnée
$db = mysql_select_db("design_facture") or die ("impossible de connecter la base de données. <br/>".mysql_errno()." : ".mysql_error().""); // Pour dire le nom de la base de donnée
$login = get_magic_quotes_gpc()? stripslashes($_POST['login']) : $_POST['login'];
$utilisateur = "SELECT niveau FROM utilisateurs WHERE login =". mysql_real_escape_string($login);
$ressource = mysql_query($utilisateur);
$resultat = mysql_fetch_assoc($ressource);
if($resultat['niveau'] == 'admin') {
include("menu-admin.php");
}
else {
include("menu-user.php");
}
mysql_close();
?>
Une erreur saffiche a la place du menu quand je me log ..
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /hdd2/design/public_html/facture/facture.php on line 79
Posté : 07 nov. 2007, 17:16
par Truc
Donc tu dois ajouter l'id du user dans la requête :
"... WHERE id = ".$_SESSION['id'];
Ne pas oublier mysql_fetch_array() que tu as supprimé dans ta proposition

Posté : 07 nov. 2007, 17:27
par Poinball
ou que le lintegre

jsuis toute mélanger la
Posté : 07 nov. 2007, 17:32
par h0_noMan
$utilisateur = "SELECT niveau FROM utilisateurs WHERE id =".$_SESSION['id'];
A condition que tu es bien mis
id dans la session.
Posté : 07 nov. 2007, 17:34
par Truc
tu devrais regarder
CECI avant de poursuivre.
Posté : 07 nov. 2007, 23:48
par Poinball
Rebonjour !!
j'ai trouver le code idéal pour faire ce que je recherche
$reponse = mysql_query('SELECT count(t1.id) as facture,t1.login FROM factures as t1,utilisateurs as t2 WHERE t1.login=t2.login GROUP BY t2.login');
Mais je ne sais pas comment Extraire mon nombre de facture par membre..
Posté : 08 nov. 2007, 00:00
par Truc
C'est quoi ça ?
Tu nous parlais de menu et maintenant de factures ?
(c'est nous qui allons t'en faire une de facture pour service rendu
)
Posté : 08 nov. 2007, 00:31
par Poinball
ahh jsuis dsl !! jme suis tromper de section la !!

:P:P