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

PHP & Base de données Discussion :

Comment lier deux tables sql


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 228
    Par défaut Comment lier deux tables sql
    Bonjour a tous.

    Tout dabbord veuillez savoir que je suis un vrai grand débutant en php/mysql.

    Voici mon soucis:

    Sur mon site j'ai un espace membre il y a donc une table "membre" dans ma bdd.

    Voici ci dessous ma table membre:
    ID
    mail
    login
    pass
    compte_activ
    clef_activation


    Lorsqu'une personne est connectée avec ses identifiant j'aimerai qu'elle puisse remplir sa fiche perso (Fiche qui est affichée sur le Front de mon site).

    Pour cela je voudrait faire une table Fiche dans ma BDD et lier ma table membre avec ma table fiche.
    Genre un ID de membre pour Une entrée de la table "fiche" dans ma BDD.

    Mon problème est que je ne sais absolument pas comment faire et les tutos que j'ai pu trouver sur la liaison des tables sont trop vague pour moi.

    En espérant trouver de l'aide parmi vous merci par avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Par défaut
    Bonjour,

    il faut au préalable créer une table fiches :
    ID
    ref_membres
    nom
    prenom
    adresse
    ...

    Ensuite, lorsque un client se connecte, je suppose que tu requetes du genres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from membres where login='$_POST["login"] and pass='$_POST["pass"]';
    et bien il faudra faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from membres LEFT JOIN fiches ON fiches.ID = membres.ID where login='$_POST["login"] and pass='$_POST["pass"]';
    Après, il faut que tu récupères le tout
    et bien tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $voir["nom"]." ".$voir["prenom"];
    J'ai été un peu vite.
    Si tu as des difficultés, poses toujours tes questions

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Par défaut
    J'ai été trop vite.
    Ta deuxième requete, c'est ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from membres LEFT JOIN fiches ON fiches.ref_membres = membres.ID where login='$_POST["login"] and pass='$_POST["pass"]';

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 228
    Par défaut
    Je dois remplacer ma requête de base lors de la connexion par la ligne que tu vient de me mettre?

    Ou je doit utiliser cette ligne lorsque j'appele des données (sur ma page fiche.php par exemple)?

    Merci de ton coup de main en tout cas

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Par défaut
    En fait, tu peux la mettre ou tu veux en fait.
    Cette requete te permet de récupérer les infos de la table fiches par l'intermédiaire de l'id de l'utilisateur

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Par défaut
    autant bien démarrer on test pas le login et pass avec une requete surtout si les requetes sont pas sécurisées mais tu verra cela plutard.

    1. on recupère le compte via le login
    2. on test le pass (crypté normalement)
    3. on va chercher ce qu'on a besoin dans les autres tables


    traitement du login: login.php
    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
     
    <?php
    if(isset($_POST['login']) && isset($_POST['pass'])){
    	$login = $_POST['login'];
    	$pass = $_POST['pass'];
    	// requete de connexion
    	$query = 'select * from membres where login=\''.$login.'\' LIMIT 1;';
    	// ton code pour faire la requete retournant $user
    	// on test que le login retourne une ligne
    	if(is_null($user)){
    		// on test le pass
    		if($user['pass'] == $pass){
    			// login ok
    			// on demarre une session
    			session_start();
    			// on stock les données en session
    			$_SESSION['user'] = $user;
    			// redirection a faire par exemple fiche.php
    		} else {
    			echo 'login ou pass non valide!';
    		}
    	} else {
    		echo 'login ou pass non valide!';
    	}
    } else {
    	echo 'login ou pass vide';
    }
    traitement de la fiche: fiche.php
    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
    session_start();
    // on test si le user existe en session
    if(isset($_SESSION['user'])){
    	$user = $_SESSION['user'];
    	// requete pour une fiche
    	// volontairement j'ai présenté la requete ainsi je trouve cela plus lisible, attention à l'espace en debut de ligne
    	// la jointure ne sert pas à grand chose saul qu'on recupère tous des 2 tables en 1 coup
    	$query = ' SELECT fiches.*, membres.*';
    	$query.= ' FROM fiches';
    	$query.= ' LEFT JOIN membres ';
    	$query.= ' ON membres.ID = fiches.membre_id';
    	$query.= ' WHERE fiches.membre_id=\''.$user['ID'].'\';';
    	// ton code pour faire la requete retournant $fiche
    	//ton traitement sur $fiche
     
    } else {
    	echo 'vous devez vous connecté!';
    }
    c'est juste pour donnée l'idée j'ai fait ca à l'arrache

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Citation Envoyé par anthony89 Voir le message
    J'ai été trop vite.
    Ta deuxième requete, c'est ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from membres LEFT JOIN fiches ON fiches.ref_membres = membres.ID where login='$_POST["login"] and pass='$_POST["pass"]';
    on n'écrit jamais ça.
    quand on utilise mysql_ et mysqli_ il faut echapper les données externes inserées dans les requêtes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "select * from membres JOIN fiches ON fiches.ref_membres = membres.ID where login='" . mysql_real_escape_string($_POST["login"]) . "' AND  pass='" . mysql_real_escape_string($_POST["pass"]) . "'";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Par défaut
    le mieux est d'utiliser PDO et les requêtes préparées

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/01/2013, 17h02
  2. sql pour lier deux tables
    Par carmen256 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/08/2010, 22h14
  3. Comment lier deux tables (0-1;1-1) ?
    Par tsing dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 22/02/2005, 13h36
  4. lier deux tables a partir dun calcul!!
    Par marie10 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/04/2004, 09h44
  5. comment lier deux tables?????
    Par baboune dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 16/03/2004, 14h45

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