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 :

En session jointure de deux tables en php pdo et requête préparée [PHP 5.5]


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut En session jointure de deux tables en php pdo et requête préparée
    Bonjour
    Je me décide à demander de l'aide car ça va faire quelques jours que je tourne en rond.
    J'ai fait un site avec des pages en session qui marchent bien.
    Chaque page session affiche le nom du connecté de la table usersessentiel.
    J'ai rajouté une page membre pour afficher en plus toutes les infos du compte du connecté de la table utilisateurs .
    Là j'ai un souci je n'arrive pas à faire marcher la jointure des tables.
    J'ai donc deux tables :
    pour la connexion : usersessentiel avec id - login - email - mot_de_passe - date_inscription
    pour les infos du connecté : utilisateurs avec id - login_user - prenom-user - nom-user - adress_user - etc...

    Et je souhaite donc afficher cette page avec toujours le nom du connecté et en plus ses infos personnelles.
    Mais cela ne marche pas car j'ai ce message d'erreur:
    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax
    to use near '.login_user' at line 1' in C:\wamp\www\CMF\BDCMF\adhCpteEssentiel.php on line 12
    J'ai tout tourné dans tous les sens mais je n'arrive plus à y voir clair.
    Merci d'avance pour votre aide et votre éclaircissement, voilà mon code concerné:

    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
    <?php
    session_start();
    if (!isset($_SESSION['id'])) {
        header('Location: essentiel.php');
        exit;
    } else {
        require('shared.php');//codes connexion à la base il marche sur toutes mes pages
     
    $stmt = $bdd->prepare('SELECT * FROM usersessentiel ,utilisateurs INNER JOIN  usersessentiel.id = utilisateurs.login_user');
    $stmt->bindParam('id', $_SESSION['id'], PDO::PARAM_INT);
    $stmt->bindParam(':login_user', $login_user, PDO::PARAM_INT);
    $stmt->execute();
    $user = $stmt->fetch();	
     
    }
    ?>
     
    <!DOCTYPE HTML>
    <head>
    <meta charset="utf-8"/>
    <title>Espace membre - Abonnement Essentiel CMF</title>	
    <link href="css/adhCpteEssentiel.css" rel="stylesheet"/>			
    </head>
     
    <body>
    <nav>					
    <div id="extra">
    <ul>  
    <li id="login"><a  href="#" title="Bienvenue..."><?php echo htmlspecialchars($user['login'], ENT_NOQUOTES) ?></a>
    <ul id="triade">
    <li class="above"><a href="abnmtEssentiel.php" title="Visualisez vos données personnelles">Retour Base</a></li>
    <li class="above" ><a href="deconnexion.php" title="Déconnectez vous de la base">Deconnexion</a></li>									
    </ul>
    </li>
    <li><a id="btnAccueil" href="index.php" title="Page d'accueil">Accueil</a></li>
    <li><a id="btnEngl" href="accueilEngl.php" title="Soon the english version...">English</a></li>
    </ul>
    </div> <!--Fin extra -->							
    </nav><!--Fin barre navigation avec le nom du connecté -->
     
    <article>
    <p class="intro"><span id="mentions">VOTRE COMPTE</span></p>
    <p class="paragraph">
    <span class="gras2">Votre identifiant :</span> <span class="firstLetter"><?php echo htmlspecialchars($user['login'], ENT_NOQUOTES) ?></span><br/><br/>
    <span class="gras2">Votre adresse émail : </span><?php echo $user['email'] ?><br/><br/>					
    <span class="gras2">Votre date de souscription : </span> 
    <?php setlocale (LC_TIME, 'fr_FR.utf8','fra');echo 'le '.strftime('%d %B %Y', strtotime($user['date_inscription'])).'. ';?>
     
    <?php
    $datePerso = $user['date_inscription'];
    $anciennedate = "$datePerso";
    $datedujour = date("d-m-Y");
    $jmoins = ((strtotime($datedujour)) - strtotime($anciennedate));
    $jmoins = round($jmoins / (60*60*24)); 
    echo "C'était il y a $jmoins jours ...<br/>";
    //affiche "La différence entre les 2 dates est de 120 jours"
    ?>
    </p>
     
    <p class="intro"><span id="mentions">VOS INFORMATIONS COMPLÉMENTAIRES</span></p>					
    <p class="paragraph">
    <span id="infosCompte">Si aucune information n'est encore enregistrée sur votre compte, veuillez en premier lieu remplir <a href="formInfosAdhEssentiel.php">le formulaire</a> .</span> Merci !<br/><br/>
     
    <span class="gras2">Votre nom :</span> <span class="firstLetter"><?php echo $user['prenom_user'] ?></span> <span class="firstLetter"><?php echo $user['nom_user'] ?></span><br/><br/>
    <span class="gras2">Votre adresse :</span> <span class="firstLetter"><?php echo $user['adress_user'] ?></span><br/><br/>
    <span class="gras2">Le code postal :</span> <?php echo $user['code_postal_user'] ?><br/><br/>
    <span class="gras2">Votre lieu de résidence :</span> <span class="firstLetter"><?php echo $user['ville_user'] ?></span><br/><br/>
    <span class="gras2">Votre abonnement actuel :</span> <span class="firstLetter"><?php echo $user['abnmt_user'] ?></span> - <?php echo $user['formule_user'] ?> mois<br/><br/>
    <span class="gras2">Votre âge :</span> <?php echo $user['age_user'] ?> ans<br/><br/>
    <span class="gras2">Votre profession :</span> <span class="firstLetter"><?php echo $user['work_user'] ?></span><br/><br/> -->
    </p>
    </article>
    </body>
    </html>

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Essayer plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * FROM usersessentiel 
    INNER JOIN  utilisateurs 
    ON usersessentiel.id = utilisateurs.login_user
    à la place de cette syntaxe erronée ...
    SELECT * FROM usersessentiel ,utilisateurs INNER JOIN usersessentiel.id = utilisateurs.login_user
    [EDIT] Voir aussi ce lien pour les jointures http://sqlpro.developpez.com/cours/sqlaz/jointures/
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Merci pour la réponse
    Malheureusement cela ne marche pas.
    Le connecté n'apparaît même plus et les infos restent vides...
    Merci encore

  4. #4
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Après ceci
    $stmt->bindParam('id', $_SESSION['id'], PDO:ARAM_INT);
    ne me parait pas juste ?

    Je ne pratique pas assez php pour cela mais
    j'aurais fait par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    $stmt = $bdd->prepare('SELECT * FROM ... usersessentiel.id = utilisateurs.login_user and usersessentiel.id = :id');
    $stmt->bindParam(':id', $_SESSION['id'], PDO::PARAM_INT);
    ...
    Au moins que l'on voit à qui va servir le $_SESSION['id'] par rapport à la requête si relation il y a
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  5. #5
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Merci
    Je vais essayer et depuis tous mes déboires j'ai biel l'impression que cela vient du bindParam lié au login_user.
    je vous tiens au courant

  6. #6
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Merci de m'avoir mise sur la voie
    Cela n'a pas marché mais cela m'a inspiré pour faire d'autres essais et voilà ça marche avec ce code où en face id j'associe login en réponse à login_user associé à :id.
    En tous cas merci beaucoup je vais clore le sujet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $stmt = $bdd->prepare('SELECT * FROM usersessentiel INNER JOIN  utilisateurs ON usersessentiel.id AND usersessentiel.login = utilisateurs.login_user AND usersessentiel.id = :id');
    $stmt->bindParam('id', $_SESSION['id'], PDO::PARAM_INT);
    $stmt->bindParam(':id', $_SESSION['id'], PDO::PARAM_INT);
    $stmt->execute();
    $user = $stmt->fetch();

  7. #7
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Parfait !
    merci pour ton retour ...
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/05/2007, 18h03
  2. jointure de deux tables de deux bases de données!
    Par JauB dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 04/01/2006, 11h05
  3. [MySQL] Jointure entre deux tables
    Par Flushovsky dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/10/2005, 18h55
  4. PROBLEME DE JOINTURE ENTRE DEUX TABLE
    Par DarkMax dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/01/2005, 15h11
  5. Jointure entre deux tables et résultat
    Par Asdorve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/06/2004, 14h50

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