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 :

Connexions - Deux tables


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Par défaut Connexions - Deux tables
    Bonsoir,

    Voilà ce que j'aimerais faire :

    Un formulaire de connexion mais assez différents des autres :

    - Connexion via 2 tables (fournisseur et client) cela peut-il se faire où il faut faire 2 bloc de connexion distinct sachant que le nom des champs sont les mêmes ?

    - Si ses identifiants de connexion (email et mdp) sont correcte alors une question secrète s'affiche (la question qu'il a choisis lors de l'inscription) avec la réponse secrète (qu'il a choisis lors de l'inscription).

    - Si la valeur de sa réponse = à la réponse qu'il a indiqué lors de son inscription alors SESSION créer et redirection vers une page en fonction de son rang (Client : client.php ou fournisseur : fournisseur.php).

    Table Client :
    id, email, password, question, rep, rang
    Table fournisseur :
    id, email, password, question, rep, rang.

    Vous allez me dire mais pourquoi avoir créer deux table, pour les distinguer mais aussi le fait que leurs champs sont différents.

    En prenant cette exemple :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?
    // LE CHANTIER
     
        $message='';
        if (empty($_POST['email']) || empty($_POST['password']) ) // Oublie d'un champ
        {
            $message = '<p>une erreur s\'est produite pendant votre identification.
    	Vous devez remplir tous les champs</p>
    	<p>Cliquez <a href="./connexion.php">ici</a> pour revenir</p>';
        }
        else //// on vérifie si le membre a bien son compte activé (si son rang vaut 1 ou est supérieur à 1) on check le mot de passe
        {
     
           $reponse = mysql_query("SELECT id, email, password, rang  FROM clients and fournisseur WHERE email = $_POST['email'] AND rang => 1") or die(mysql_error()); 
     while($data = mysql_fetch_array($reponse)) 
     
    	if ($data['password'] == md5($_POST['password'])) // Acces OK !
    	{
     
    // Affichage de la question 
     
    $message = 'Connexion reussie, mais avant de pouvoir accéder à notre espace, merci de répondre à votre question : '.$data['question'].' 
    <br><form action="connexion.php" method="post">
    		<br>Réponse : <input type="text" name="rep"/>
    <INPUT type="submit" value="Envoyer"></form>';  
     
    else // Acces pas OK !
    	{
    	    $message = '<p>Une erreur s\'est produite 
    	    pendant votre identification.<br /> Le mot de passe ou lemail
                entré n\'est pas correcte.</p><p>Cliquez <a href="./connexion.php">ici</a> 
    	    pour revenir à la page précédente
    	    <br /><br />Cliquez <a href="./index.php">ici</a> 
    	    pour revenir à la page d accueil</p>';
    	}
     
    if ($_POST['rep']) == $data['rep'])) // si la reponse donner correspond à celle qu'il a choisit lors de l'inscription alors on creer les sessions
        {
           $message = '<p>Bienvenue '.$data['email'].', 
    			vous êtes maintenant connecté!</p>
    			<p>Cliquez <a href="./index.php">ici</a> 
    			pour revenir à la page d accueil</p>';
     
    // Puis redirection en fonction du statut (comment ?)
     
        }
     
    else // erreur reponse !
    	{
    	    $message = '<p>La réponse que vous avez donné n'est pas correcte.</p>';
    	}
    }
    
        echo $message.'</div></body></html>';
    ?>

    Mon code est mal ingenter mais du coup avec tout ses if et ses else je sais pas comment procéder !
    merci

    On m'a parler des jointures,
    Je dois faire une requête de ce type ?

    SELECT email, password, id, rang, rep, question FROM Client, Fournisseur
    WHERE Client.email=Fournisseur.email, Client.password=Fournisseur.password, Client.id=Fournisseur.id, Client.rang=Fournisseur.rang, Client.rep=Fournisseur.rep, Client.question=Fournisseur.question

    merci

  2. #2
    Membre expérimenté Avatar de stephanegib2
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 152
    Par défaut
    Bonjour,

    Dans ton cas tu ne pourra pas faire de jointure, à part si il y a un lien entre la table client et fournisseur.
    Pour la syntaxe des jointures avec mysql : http://dev.mysql.com/doc/refman/5.0/fr/join.html

    sinon tu devra faire 2 requetes. une pour client et si il y a pas de resultat une pour fournisseur.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par stephanegib2 Voir le message
    tu devra faire 2 requetes. une pour client et si il y a pas de resultat une pour fournisseur.


    Une solution simple est aussi de demander dans le formulaire (avec des boutons radio) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vous êtes : O Client  O Fournisseur
    Et choisir la table en fonction du choix.

  4. #4
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Par défaut
    Citation Envoyé par jreaux62 Voir le message


    Une solution simple est aussi de demander dans le formulaire (avec des boutons radio) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vous êtes : O Client  O Fournisseur
    Et choisir la table en fonction du choix.
    Merci stephanegib,
    ok pour pas de jointure,

    jreaux => j'ai fais 2 requête, sachant que l'admin , rang 3, apparaitra soit dans la table client ou fournisseur inutile de recreer une 3ème table je pense...

    J'ai essayer de structurer sa, mais je pense que ce n'est pas bon !

    Voilà mon code, merci à vous

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    <code type="php"><?
    // LE CHANTIER
     
        $message='';
        if (empty($_POST['email']) || empty($_POST['password']) ) // Oublie d'un champ
        {
            $message = '<p>une erreur s\'est produite pendant votre identification.
    	Vous devez remplir tous les champs</p>
    	<p>Cliquez <a href="./connexion.php">ici</a> pour revenir</p>';
        }
        else //// on vérifie si le membre a bien son compte activé (si son rang vaut 1) on check le mot de passe
        {
     
           $req_clients = mysql_query("SELECT id, email, password, rang  FROM clients WHERE email = $_POST['email'] AND rang = 1") or die(mysql_error()); 
     while($data = mysql_fetch_array($req_clients)) 
     
     $req_fournisseur = mysql_query("SELECT id, email, password, rang  FROM fournisseur WHERE email = $_POST['email'] AND rang => 2") or die(mysql_error()); 
     
     while($data = mysql_fetch_array($req_fournisseur))
    while($data = mysql_fetch_array($req_clients))
     
    	if ($data['password'] == md5($_POST['password'])) // Acces OK !
    	{
     
    // Affichage de la question 
     
    $message = 'Connexion reussie, mais avant de pouvoir accéder à notre espace, merci de répondre à votre question : '.$data['question'].' 
    <br><form action="connexion.php" method="post">
    		<br>Réponse : <input type="text" name="rep"/>
    <INPUT type="submit" value="Envoyer"></form>';  
     
    else // Acces pas OK !
    	{
    	    $message = '<p>Une erreur s\'est produite 
    	    pendant votre identification.<br /> Le mot de passe ou lemail
                entré n\'est pas correcte.</p><p>Cliquez <a href="./connexion.php">ici</a> 
    	    pour revenir à la page précédente
    	    <br /><br />Cliquez <a href="./index.php">ici</a> 
    	    pour revenir à la page d accueil</p>';
    	}
     
    if ($_POST['rep']) == $data['rep'])) // si la reponse donner correspond à celle qu'il a choisit lors de l'inscription alors on creer les sessions
        {
     
        // Création des sessions
     
        $_SESSION['email'] = $data['email'];
    	    $_SESSION['level'] = $data['membre_rang'];
    	    $_SESSION['id'] = $data['membre_id'];
     
           $message = '<p>Bienvenue '.$data['email'].', 
    			vous êtes maintenant connecté!</p>
    			<p>Cliquez <a href="./index.php">ici</a> 
    			pour revenir à la page d accueil</p>';
     
     
    // Si la réponse est correcte, redirection en fonction du statut (comment ?)
     
    if ($data['rang'] == 1))
     {
    <meta http-equiv="refresh" content="3; URL=client.php">
        }
     
        if ($data['rang'] == 2))
     {
    <meta http-equiv="refresh" content="3; URL=fournisseur.php">
        }
     
        if ($data['rang'] == 3))
        {
    <meta http-equiv="refresh" content="3; URL=admin.php">
        }
     
    else // erreur reponse !
    	{
    	    $message = '<p>La réponse que vous avez donné n'est pas correcte.</p>';
    	}
    
        echo $message.'</div></body></html>';
    ?></code>
     
    Une requête client, une requête fournisseur ! 
     
    Sachant qu'il n'y aura pas de table admin, enfait un client peux avoir le rang 3 ou un fournisseur.
     
    J'ai essayer de dépapouiller sa, la structure n'est pas bonne je pense mais l'idée est là ! ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. oracle devloper connexion de deux tables
    Par souchraf dans le forum Oracle
    Réponses: 3
    Dernier message: 09/05/2006, 18h18
  2. comment lier deux tables?????
    Par baboune dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 16/03/2004, 14h45
  3. [Débutant] Union de deux tables
    Par nyarla01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/03/2004, 10h40
  4. 2 Count() sur deux tables en jointures gauches
    Par Alexandre T dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/09/2003, 16h53
  5. regrouper deux tables
    Par Shabata dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/05/2003, 15h02

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