Souci, gestion catégorie de plusieurs utilisateurs

Guyomeparis
Invité n'ayant pas de compte PHPfrance

05 déc. 2007, 19:14

bonjour (re),

J'ai déjà posté il y a quelques jours, et le problème ne n'était pas un, ce qui fait que la communauté n'a pas eu besoin de m'aider ou d'être éclairé.

En fait j'ai commencé le php il y a très peu de temps et j'avoue que je galère et que je passe mes journées à chercher des trucs par moi même probablement très simples !

Là, le souci que j'ai (et une fois réglé, je ferai un tutoriel pour le forum et pour me le rappeler ensuite) est que je n'arrive pas à donner à certains utilisateurs une page donnée. J'ai trouvé certaines choses sur les forums, mais je n'arrive pas à le mettre en place. En fait ça m'affiche toujours le même lien quelque soit la catégorie d'utilisateur.

Ma base de donnée contient :
pseudo
motdepasse
nom
prenom
categorie

Voici mon code de connexion (si ce n'est pas propre merci de me le dire) :
session_start();
$hote= 'xxx';
$user = 'xxx';
$passe ='xxx';
$base= 'xxx';
$connexion = mysql_connect($hote, $user,$passe );
mysql_select_db($base,$connexion);
/* on regarde si le formulaire est bon */
/** pour voir si le champ pseudo est vide **/
if (isset($_POST) && empty($_POST['pseudo']) && !empty($_POST['motdepasse'])) {
$message = '<p>Vous avez oublié d\'indiquer votre <i>Pseudo</i></p>';
include('identification.txt'); 
}
/** pour voir si le champ mot de passe est vide**/
if (isset($_POST) && !empty($_POST['pseudo']) && empty($_POST['motdepasse'])) {
$message = '<p>Vous avez oublié d\'indiquer votre <i>Mot de passe</i></p>';
include('identification.txt'); 
}
/** pour voir si les champs pseudo et mot de passe sont vides **/
if(isset($_POST) && empty($_POST['pseudo']) && empty($_POST['motdepasse'])) {
$message = '<p>Merci de rentrer votre <i>pseudo</i> et votre <i>mot de passe</i></p>';
include('identification.txt'); 
}
/** Si les deux sont remplis alors : **/
if(isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['motdepasse'])) {
/** on xtrait les doinnées **/
extract($_POST);
 /** on va chercher les données  pour le pseudo entrée **/ 
  $sql = "SELECT * FROM identification WHERE pseudo='$pseudo'";
 $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
/** on  récupère les entrées comme il faut  **/
  $data = mysql_fetch_assoc($req);
/** on compare ce qu'on a entré et le vrai mot de passe **/
  if($data['motdepasse'] != $motdepasse) {
    $message = '<p>Les informations rentrées ne sont pas correctes</p>';
    include('identification.txt'); 
  }
   else {
    $_SESSION['pseudo'] = $pseudo;
$nom = $data['nom'];
$prenom = $data['prenom'];
$categorie = $data['categorie'];
/* on affiche le nom et le prénom */
echo 'Bonjour ', $prenom, '&nbsp;', $nom;
/* on crée la fonction du lien supplémentaire dans le menu. J'ai trouvé ça sur un forum mais c'est là que ça ne marche pas */
switch ($categorie){
		case "admin":
			$lienhorizontal = '<a href="http://www.prepa-isp.fr/testns/categorie1">espace réservé</a>';
		
		case "eleve":
			$lienhorizontal = '<a href="http://www.prepa-isp.fr/testns/categorie2">espace réservé</a>';
	}
}
}
?>
voilà ma partie du code php. Pour ce qui est de la partie html, tout fonctionne bien, quand je ne mets pas de choix, le lien s'affiche bien comme il faut et est fonctionnel.

En espérant avoir été assez clair.

Merci d'avance.
Guyomeparis

ViPHP
ViPHP | 1996 Messages

05 déc. 2007, 23:36

As tu qqchose dans $data["categorie"] ?
$categorie = $data['categorie']; 
?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

06 déc. 2007, 00:52

Il te manque les "break" pour les "case" du "switch" (v'la le langage d'informaticien :boire4: )
Regarde la doc.

Le switch est parcouru en entier et ne garde que la dernière info donc le dernier lien qui écrase $lienhorizontal

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

ViPHP
AB
ViPHP | 5818 Messages

06 déc. 2007, 03:02

bonjour (re),
...
En fait j'ai commencé le php il y a très peu de temps et j'avoue que je galère et que je passe mes journées à chercher des trucs par moi même probablement très simples !
...
Aarf faut être courageux pour lire ton code. Y'a un truc tout simple qui te permettrait de gagner du temps : c'est d'aérer ton code. Sautes une ligne ou deux de temps en temps, ou plus souvent, et indentes ton code, les fautes seront plus facile à trouver et le code plus facile à entretenir.

Tu commentes bien ton code, il ne te reste plus qu'un petit effort de mise en page et oup's les fautes disparaîtront par elles mêmes :wink:

En rajoutant les break comme le disait Truc :
session_start();

$hote= 'xxx';
$user = 'xxx';
$passe ='xxx';
$base= 'xxx';
$connexion = mysql_connect($hote, $user,$passe );
mysql_select_db($base,$connexion);


// on regarde si le formulaire est bon pour voir si le champ pseudo est vide

if (isset($_POST) && empty($_POST['pseudo']) && !empty($_POST['motdepasse'])) {

        $message = '<p>Vous avez oublié d\'indiquer votre <i>Pseudo</i></p>';
        include('identification.txt'); 
}


// pour voir si le champ mot de passe est vide

if (isset($_POST) && !empty($_POST['pseudo']) && empty($_POST['motdepasse'])) {

        $message = '<p>Vous avez oublié d\'indiquer votre <i>Mot de passe</i></p>';
        include('identification.txt'); 
}


// pour voir si les champs pseudo et mot de passe sont vides

if(isset($_POST) && empty($_POST['pseudo']) && empty($_POST['motdepasse'])) {

        $message = '<p>Merci de rentrer votre <i>pseudo</i> et votre <i>mot de passe</i></p>';
        include('identification.txt'); 
}


// Si les deux sont remplis alors : 

if(isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['motdepasse'])) {

        // on extrait les données
        extract($_POST);


       // on va chercher les données  pour le pseudo entrée
        $sql = "SELECT * FROM identification WHERE pseudo='$pseudo'";

        $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());


       // on  récupère les entrées comme il faut
        $data = mysql_fetch_assoc($req);


       // on compare ce qu'on a entré et le vrai mot de passe
        if($data['motdepasse'] != $motdepasse) {

                $message = '<p>Les informations rentrées ne sont pas correctes</p>';
                include('identification.txt'); 

                }
                else 
               {

                $_SESSION['pseudo'] = $pseudo;
                $nom = $data['nom'];
                $prenom = $data['prenom'];
                $categorie = $data['categorie'];

                // on affiche le nom et le prénom
                 echo 'Bonjour ', $prenom, '&nbsp;', $nom;

               /* on crée la fonction du lien supplémentaire dans le menu. J'ai trouvé ça sur un forum mais c'est là que ça ne marche pas */
                 switch ($categorie) {

                            case "admin": $lienhorizontal = '<a href="http://www.prepa-isp.fr/testns/categorie1">espace réservé</a>';break;
        
                            case "eleve": $lienhorizontal = '<a href="http://www.prepa-isp.fr/testns/categorie2">espace réservé</a>';break;
                           }

                }
}
?>

Petit nouveau ! | 9 Messages

06 déc. 2007, 09:55

Merci beaucoup.

J'ai lu tout ça et ferait attention à mon code maintenant !

Propre et détaillé ! j'essaierai !

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

06 déc. 2007, 14:01

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)

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

Petit nouveau ! | 9 Messages

06 déc. 2007, 18:15

Je viens de m'enregistrer, merci !