IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Changer de type de compte en fonction d'une liste déroulante.


Sujet :

Langage PHP

  1. #21
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Points : 1 458
    Points
    1 458
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Tu ne peux pas afficher ton $resultat comme ça, car dans ta requête tu récupère tous les champs de ta table, tu dois donc préciser quel champ afficher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $resultat['tonChamp'];
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  2. #22
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    pour afficher les détails de n'importe quel variable (même une instance d'une classe), tu peux utiliser la fonction http://php.net/var_dump

  3. #23
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2014
    Messages : 180
    Points : 58
    Points
    58
    Par défaut
    Salut,

    1 : quel est la structure de ta bdd ?
    2 : moi je ferais une table user et une table typeCompte avec IDType dans la table user (comme ça tu pourra ajouter des type de compte)
    3 : lorsque tu enregistre un user, dans ton formulaire tu fait un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php //tu récupère tous les type de compte
    $cnx = //connexion BDD;
    if(isset($_POST['submit'])){
        //TU TEST TOUS TES CHAMPS
        //TU INSERT LES INFOS DANS TA TABLE USERS
    }else {
       <form action ="" method="post">
               <!--IL Y AURA TOUS LES AUTRES CHAMPS DE TON FORMULAIRE -->
              <select name="client" id="client" size="1" class="form-control" required/><br/> 
                      <option selected value="-1">Veuillez indiquer un client...</option>
                      <?php
                              $reponse = $cnx->query('SELECT * FROM typecompte order by nomtype');
                              while ($donnees = $reponse->fetch())
                              {
                                      ?><option value="<?php echo $donnees['IDType']; ?>"> <?php echo $donnees['nomtype']; ?></option><?php
                              }?>
              </select>
              <input type="submit" name="submit"/>
       </form
    }
    4 : lorsqu'un user se connecte tu test les infos du compte ensuite tu récupère l'id du type de compte grâce a une requête user et lorsque tous est bon tu fait un $_SESSION['type'] = idtype
    5 : ensuite dans ton menu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     <?php if($_SESSION['type'] == 0){
    echo '<li><a>AFFICHE LE LIEN POUR COMPTE 0</a></li>';
    }
    if($_SESSION['type'] == 1){
    echo '<li><a>AFFICHE LE LIEN POUR COMPTE 1</a></li>';
    }
    etc... (je t'explique dans le principe mais attention par rapport à ton environnement de développement (framework php ou pas)

    J'espère avoir été clair ! (il y a peut être plus simple mais c'est ce que je fais et ça fonctionne )

  4. #24
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Je suis encore perdu sur ce problème là :

    J'ai ajouter un champ "role" dans ma base de données en VARCHAR.

    Voici mon code qui m'affiche mes différents menu en fonction d'une connexion ou non :

    https://wall.deblan.org/x1d15/php/1/

    Le code qui me permet de me connecter au site quand je rentre mes identifiants :

    https://wall.deblan.org/x1d14/php/1/Connexion

    L'inscription à la base de données des utilisateurs :

    https://wall.deblan.org/x1d13/php/1/...-l-utilisateur

    Je n'arrive pas à afficher l'alerte dans mon premier code ( https://wall.deblan.org/x1d10/php/1/ ) lorsque je me connecte avec un compte "organisateur".

    Ma base de données :

    http://www.noelshack.com/2015-08-1424084916-capture.png

    Je suis désespéré, c'est une des seules choses qui me reste à faire pour finir mon projet d'études lol ...

  5. #25
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Mon dieu je n'avais pas remarqué la deuxième page, je lis !

  6. #26
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2014
    Messages : 180
    Points : 58
    Points
    58
    Par défaut
    pourquoi il y a 2 $_SESSION['role'] dans ton if ???

    un if($_SESSION['role'] == 'organisateur ne suffi pas ? que met tu dans $_SESSION['role'] ? un id ou bien le nom du type de compte ?

  7. #27
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Désolé je l'avais corrigé mais j'ai copié l'ancienne version :

    https://wall.deblan.org/x1d15/php/1/

    J'ai fais ça.

  8. #28
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2014
    Messages : 180
    Points : 58
    Points
    58
    Par défaut
    je ne comprend pas ton raisonnement !!!!!

    tu fais un if(isset($_SESSION['pseudo']))
    et après tu pose une condition if($_SESSION['pseudo'] && $_SESSION['role'] == "organisateur") ??????????????
    FAIT JUSTE UN SIMPLE if($_SESSION['role'] == "organisateur")

    encore une foi, que met tu dans $_SESSION['role'] ?

  9. #29
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Le fait de faire : if($_SESSION['pseudo'] && $_SESSION['role'] == "organisateur") ne prend pas en compte le pseudo de l'utilisateur + son type ?

    $role = utf8_decode($_POST['role']); ça ...

  10. #30
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2014
    Messages : 180
    Points : 58
    Points
    58
    Par défaut
    tu dis if(isset($_SESSION['pseudo']))

    Donc là tu test si tu as un utilisateur de connecté, cette variable de session, tu l'a déclaré lors du traitement de ton formulaire de connexion ! on est d'accord ???

    Ce que je ne comprends pas, pourquoi tu récupère le type de compte via le formulaire, tu as un champs? de quel formulaire tu le récupère ?
    ensuite tu test le type de compte juste avec le if(isset($_SESSION['role'] == "organisateur"))!

  11. #31
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Ok je crois avoir compris ta question, effectivement je récupère le pseudo de mon formulaire qui lui l'inscris dans la base de données.
    J'ai voulu relier le champ "role" à organisateur ou coureur mais il est vrai que je n'ai pas, dans mon formulaire, un champ "role" mais un champs "Types de comptes" qui comprends une liste déroulante avec "coureur" et "organisateur".

  12. #32
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2014
    Messages : 180
    Points : 58
    Points
    58
    Par défaut
    Je pense que tu mélange tout !!!

    combien de formulaire as-tu ? (normalement un form pour inscription de l'user là où tu dois indiquer le type de compte et un autre form de connexion de l'user avec juste un champ login et mdp)

    dans ton premier formulaire, tu dois récupérer les infos du formulaire et les mettre en bases de donnée donc dans ta table user tu va avoir tous les infos que tu as remplis dans ton formulaire, y compris l'id du type de compte (si tu as fait comme je t'ai expliqué au début)

    dans ton deuxième formulaires tu vérifie si le login correspond a un user ensuite si tu en trouve un, tu va vérifier les mots de passes si ceux-ci sont bon, tu va ouvrir les variable de session et c'est là que tu dois récupérer l'idtypedecompte qui se trouve dans la table user. donc ton $_SESSION['role'] = a l'idtype récupéré de ta table user (tu as due faire une requête pour chercher ton utilisateur via le form de connexion genre SELECT * FROM users WHERE login = $_post['login'])
    ensuite une foi que tu as fait ça, tu pourra travailler avec ta variable de session.

    Honnêtement, je t'ai tous mis, si tu ne comprends pas ça, j'ai peur qu'il faut que tu revoie tous html, php, et principe logique (si, alors si, sinon + boucle)!

  13. #33
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Effectivement, j'ai deux formulaire, un pour l'inscription et un pour la connexion (un autre pour modifier ses informations mais il n'est pas nécessaire de le préciser).

    Mon formulaire d'inscription :

    http://www.noelshack.com/2015-08-1424091820-capture.png

    Son code : https://wall.deblan.org/x1d17/html/1/

    Mon formulaire de connexion :

    http://www.noelshack.com/2015-08-142...8-capture2.png

    Son code : https://wall.deblan.org/x1d18/html/1/

    La vérification de la connexion de l'utilisateur :

    https://wall.deblan.org/x1d19/php/1/

    Ici, oui je vérifie si le pseudo et mot de passe sot concorde ou existent dans la base de données.

  14. #34
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Points : 1 458
    Points
    1 458
    Billets dans le blog
    1
    Par défaut
    Tu peux enregistrer dans tes variables de session le rôle de la personne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    f ($resultat)
    	{
    		$_SESSION['pseudo'] = $pseudo;
                    $_SESSION['role'] = $resultat['role'];
    		header('Location: index.php');
    	}
    	else
    	{	    
    		echo '<center><p id="mauvais">Mauvais identifiant ou mot de passe !</center></p><br>';
    	}
    Et ensuite sur ton menu ou autre tu fais un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($_SESSION['role'] == "coureur")
    {
       //tu affiche le lien
    }
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  15. #35
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2014
    Messages : 180
    Points : 58
    Points
    58
    Par défaut
    ok donc dans ton code de traitement de connexion ajoute $_SESSION['role'] = $resultat['Role'] //champs issus de ta table inscription ok ?

    ensuite il n'y a pas le code de traitement du formulaire d'inscription ni la structure de la table mais au vue du code, tu dois avoir dans ta table une colonne Role ->varchar(20) ensuite dans ton traitement de l'inscription le champs Role de ta bdd = $_POST['compte'];

    Voilà je pense que tu dois pouvoir faire quelques choses avec tous ça, je ne peux pas faire plus !!!

  16. #36
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Merci pour vos explications, j'ai réussi à avancer :

    http://www.noelshack.com/2015-08-142...ucture-bdd.png

    J'ai remplacé la colonne "Type de compte" par "role".

    Dans mon formulaire le champ select s'appelle "Type de compte" et dans ma BDD il se nomme "role" donc :

    http://www.noelshack.com/2015-07-142...sans-titre.png

    J'ai compris qu'il fallait que je vérifie son rôle après que l'utilisateur se soit connecté :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?php
    if(isset($_POST['submit2']))
    {
    	include "connexionBD.php";
     
    	// Variables temporaires stockant le pseudo et le mot de passe.
        $pseudo = utf8_decode($_POST['pseudo']);
    	$mdp = sha1($_POST['mdp']);
     
    	// Vérification des identifiants si ils existent
    	$req = 'SELECT id FROM `bdd`.`inscription` WHERE pseudo = ? AND mdp =?';
     
        // Exécution de la requête comme pour l'inscription.
        $prepa = mysqli_prepare($connexion, $req);						//Préparation de la requète.
        mysqli_stmt_bind_param($prepa ,'ss', $pseudo, $mdp);	//Lie les variables à la requête précédement inscrite.
        $prepa->execute();												//Execution de la requete.
        $resultat = mysqli_stmt_fetch($prepa);							//Retourne le résultat de la requête.
     
    	if ($resultat)
    	{
    		$_SESSION['pseudo'] = $pseudo;
    		$_SESSION['role'] = $resultat['role'];
    		header('Location: index.php');
    	}
    	else
    	{	    
    		echo '<center><p id="mauvais">Mauvais identifiant ou mot de passe !</center></p><br>';
    	}
    }
    ?>



    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?php
    //Si l'utilisateur est connecté
    @session_start();
    if (isset($_SESSION['pseudo']))
    {
    	if($_SESSION['role'] == "organisateur")
    	{
    	   echo "<script>alert(\"Menu Organisateur\")</script>"; 
    	}
     
    	if($_SESSION['role'] == "coureur")
    	{
    		echo '<div id="cssmenu2">
    		<ul>
    		<li><a href="index.php"><span>Accueil</span></a></li>
    		<li><a href="compte.php"><span>Mon Compte</span></a></li>
    		<li><a href="rechercher.php"><span>Rechercher</span></a></li>
    		<li><a href="participer.php"><span>Participer</span></a></li>
    		<li><a href="contact.php"><span>Contact</span></a></li>
    		<li><a href="deconnexion.php"><span>Déconnexion</span></a></li>
    		</ul>
    		</div>';
    	}
    }
    	//Si l'utilisateur n'est pas connecté (un visiteur)
    	else
    	{
    		echo '<div id="cssmenu">
    		<ul>
    		   <li><a href="index.php"><span>Accueil</span></a></li>
    		   <li><a href="inscription.php"><span>Inscription</span></a></li>
    		   <li><a href="connexion.php"><span>Se connecter</span></a></li>
    		   <li><a href="contact.php"><span>Contact</span></a></li>
    		</ul>
    		</div>';
    	}
    ?>

    Le problème est que, lorsque je me connecte, aucun menu ne s'affiche, le menu est là seulement en mode "visiteur".

  17. #37
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2014
    Messages : 180
    Points : 58
    Points
    58
    Par défaut
    tu peut donner le code du traitement du formulaire d'inscription stp j'aimerais vérifier un truc

  18. #38
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Inscription à la base de données :

    https://wall.deblan.org/x1d22/php/1/...ase-de-donnees

    Le formulaire d'inscription :

    https://wall.deblan.org/x1d23/html/1/

    Le formulaire de connexion :

    https://wall.deblan.org/x1d24/html/1/

  19. #39
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2014
    Messages : 180
    Points : 58
    Points
    58
    Par défaut
    tu as été voir dans ta base de donnée ?
    sinon avant de tester le type de compte, fait un var_dump($_SESSION['role']); et dit moi ce qu'il se passe

  20. #40
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Je place la ligne de code : "var_dump($_SESSION['role']);" où ^^' ?

    Je vois "null"

    Et un Undefined index:

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/09/2013, 09h25
  2. changer de couleur en fonction d'une liste déroulante
    Par CyrilD dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/03/2010, 09h02
  3. mise à jour de champs en fonction d'une liste déroulante
    Par kifouillou dans le forum Général JavaScript
    Réponses: 29
    Dernier message: 09/04/2008, 16h37
  4. Réponses: 2
    Dernier message: 29/06/2007, 11h20
  5. Comment rappeler une fonction dans une liste déroulante
    Par strogos dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/05/2005, 23h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo