menu differant tout dépendant du niveau de l'user

Eléphant du PHP | 69 Messages

07 nov. 2007, 14:23

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();
?>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 nov. 2007, 14:30

En effet génant :lol:

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"); 

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 69 Messages

07 nov. 2007, 14:36

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();
?>

Eléphant du PHP | 445 Messages

07 nov. 2007, 15:25

$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.

ViPHP
AB
ViPHP | 5818 Messages

07 nov. 2007, 15:35

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");

}

Eléphant du PHP | 445 Messages

07 nov. 2007, 15:40

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é ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 nov. 2007, 15:47

Tout a été dit... hormis
en touka je lespere
:afraid:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 69 Messages

07 nov. 2007, 17:09

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
Modifié en dernier par Poinball le 07 nov. 2007, 17:18, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 nov. 2007, 17:16

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 :?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 69 Messages

07 nov. 2007, 17:27

ou que le lintegre :( jsuis toute mélanger la

Eléphant du PHP | 445 Messages

07 nov. 2007, 17:32

$utilisateur = "SELECT niveau FROM utilisateurs WHERE id =".$_SESSION['id'];  
A condition que tu es bien mis id dans la session.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 nov. 2007, 17:34

tu devrais regarder CECI avant de poursuivre.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 69 Messages

07 nov. 2007, 23:48

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..

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

08 nov. 2007, 00:00

C'est quoi ça ? :boire4:

Tu nous parlais de menu et maintenant de factures ?
(c'est nous qui allons t'en faire une de facture pour service rendu :lol: )

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 69 Messages

08 nov. 2007, 00:31

ahh jsuis dsl !! jme suis tromper de section la !! :P:P:P