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 :

[SQL] Récupération de données et Insert dans une table


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de heteroclite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Par défaut [SQL] Récupération de données et Insert dans une table
    Bonjour,

    Voilà mon problème de débutant !
    J'ai une base de données mysql avec 2 tables :

    Ma table t_users a la structure:
    id (auto incre)
    nom
    prenom
    adresse
    etc....


    ma table t_demande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    id_demande` INT( 255 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `id_users` INT( 255 ) NOT NULL ,
    `evenement` VARCHAR( 255 ) NOT NULL ,
    `date` DATE NOT NULL
    J'ai crée un espace membre avec acces par login/password qui créer un session...etc ....ça marche bien .
    Par contre une fois dans l'espace membres j'aimerais que les utilisateurs puissent faire de la saisie dans la "table demandes" mais j'aimerais recuperer l'id (table users) de l'utilisateur en cours pour savoir qui effectue la demande, et donc le stocker dans le champs "id-users" de la table demande. Comme ça je pourrais faire le lien entre la table users et demande. (et bien maitriser qui effectue les demandes)

    donc je vais faire un formulaire + un script style:

    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
     if(isset($_POST['evenement'])) $evenement=$_POST['evenement'];
    else $evenement="";
     
    if(isset($_.....autres champs
     
     
    // connexion à la base
    $db = mysql_connect('******', '******', '*******') or die('Erreur de connexion '.mysql_error());
    // sélection de la base 
     
    mysql_select_db('*******',$db) or die('Erreur de selection '.mysql_error()); 
     
    // on écrit la requête sql 
    $sql = "INSERT INTO t_demande(id_demande .........)
    VALUES('' '$id_demande, .......etc )"; 
     
    // on insère les informations du formulaire dans la table 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
     
    // on affiche le résultat pour le visiteur 
    echo 'Vos infos on été ajoutées.'; 
     
    mysql_close(); // on ferme la connexion 
    } 
    ?>
    Mais la question qui se pose est:

    comment récupérer l'id_user de la personne connectée et le stocker dans la table demande ? Il faut avoir mis l'ID users en session ? Comment ? et comment le stocker ensuite dans la table demande ?

    merci d'avance pour votre aide !


    pour info ci dessous mon script de verif login et création de session:

    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
     <<<<<<<<<<<<<<<<<<<<<<<script verif du login et création de session>>>>>>
    <?php 
    session_start(); 
    $identifiant_inscriptionOK = false; 
    ?>
    <html>
    <!-- Date de création: 19/06/2006 -->
    <head>
    <title></title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <meta name="author" content="Usager non enregistré">
    <meta name="generator" content="WebExpert 5">
    </head>
    <body>
    <?php
    // connexion à la base
    $db = mysql_connect('localhost', '******', '******') or die('Erreur de connexion '.mysql_error());
     
    // sélection de la base 
    mysql_select_db('*******',$db) or die('Erreur de selection '.mysql_error());
     
    // On n'effectue les traitement qu'à la condition que 
    // les informations aient été effectivement postées
    if ( isset($_POST) && (!empty($_POST['identifiant_inscription'])) && (!empty($_POST['mot_de_passe_inscription'])) ) {
     
    extract($_POST); // je vous renvoie à la doc de cette fonction
     
    // On va chercher le mot de passe afférent à ce identifiant_inscription
    $sql = $sql = "SELECT mot_de_passe_inscription FROM t_users WHERE identifiant_inscription = '".addslashes($identifiant_inscription)."'";
     
    $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
     
    // On vérifie que l'utilisateur existe bien
    if (mysql_num_rows($req) > 0) {
    $data = mysql_fetch_assoc($req);
     
    // On vérifie que son mot de passe est correct
    if ($mot_de_passe_inscription == $data['mot_de_passe_inscription']) {
    $identifiant_inscriptionOK = true;
    }
    }
    }
     
    // Si le identifiant_inscription a été validé on met les données en sessions
    if ($identifiant_inscriptionOK) {
    $_SESSION['identifiant_inscription'] = $data['identifiant_inscription'];
    $_SESSION['mot_de_passe_inscription'] = $data['mot_de_passe_inscription'];
     
     
    }
    else {
    echo 'Une erreur est survenue, veuillez réessayer !'; 
    }
    ?>

  2. #2
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2006
    Messages : 60
    Par défaut
    Salut, je modifirais ta requetes SQL sur le login comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     // On va chercher le mot de passe afférent à ce identifiant_inscription
    $sql = "SELECT * FROM t_users WHERE identifiant_inscription = '".addslashes($identifiant_inscription)."' AND mot_de_passe_inscription = '".addslashes($mot_de_passe_inscription)."'";
     
    $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
     
    // Si l'utilisateur existe ...
    if (mysql_num_rows($req) > 0) {
       $data = mysql_fetch_assoc($req);
       $_SESSION['user_id'] = $data['user_id']; //en supposant que t'as un champs user_id dans ta table d'utilisateur
       $_SESSION['identifiant_inscription'] = $data['identifiant_inscription'];
       $_SESSION['mot_de_passe_inscription'] = $data['mot_de_passe_inscription'];
    }
    ensuite, pour insérer le ID dans ta table t_demande, tu fais comme suit:

    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
     if(isset($_.....autres champs
     
     
    // connexion à la base
    $db = mysql_connect('******', '******', '*******') or die('Erreur de connexion '.mysql_error());
    // sélection de la base
     
    mysql_select_db('*******',$db) or die('Erreur de selection '.mysql_error());
     
    // on écrit la requête sql
    $sql = "INSERT INTO t_demande SET user_id='".$_SESSION["user_id"]."', id_demande='valeur', ....";
     
    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
    // on affiche le résultat pour le visiteur
    echo 'Vos infos on été ajoutées.';
     
    mysql_close(); // on ferme la connexion
    }
    ?>
    Et voilà !

  3. #3
    Membre confirmé Avatar de heteroclite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Par défaut
    merci beaucoup pour ton aide !
    je viens de mettre en pratique et j'ai encore un problème ...je crois que la session ne conserve pas l'id_users ...

    je te mets mes deux scripts:
    - le premier qui vérifie le login/password ..;puis enregistre les variables de session (normalement...)
    - le deuxième qui normalement doit enregistrer les données dans la table demande

    je ne vois pas ou est le problème ?

    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
     >>>>>>>>veriflogin.php>>>>>>>>>>>>>>>>>
    <?php 
    session_start(); 
    $identifiant_inscriptionOK = false; 
    ?>
    <html>
    <!-- Date de création: 19/06/2006 -->
    <head>
    <title></title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <meta name="author" content="Usager non enregistré">
    <meta name="generator" content="WebExpert 5">
    </head>
    <body>
    <?php
    // connexion à la base
    $db = mysql_connect('localhost', '*******', 'u******')  or die('Erreur de connexion '.mysql_error());
     
    // sélection de la base  
        mysql_select_db(*******,$db)  or die('Erreur de selection '.mysql_error());
     
    // On n'effectue les traitement qu'à la condition que 
    // les informations aient été effectivement postées
    if ( isset($_POST) && (!empty($_POST['identifiant_inscription'])) && (!empty($_POST['mot_de_passe_inscription'])) ) {
     
      extract($_POST);  // je vous renvoie à la doc de cette fonction
     
    // On va chercher le mot de passe afférent à ce identifiant_inscription
    $sql = "SELECT * FROM t_users WHERE identifiant_inscription = '".addslashes($identifiant_inscription)."' AND mot_de_passe_inscription = '".addslashes($mot_de_passe_inscription)."'";
     
    $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
     
     
     
     
      // On va chercher le mot de passe afférent à cet identifiant_inscription
      $sql = $sql = "SELECT mot_de_passe_inscription FROM t_users WHERE identifiant_inscription = '".addslashes($identifiant_inscription)."'";
     
      $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
     
      // On vérifie que l'utilisateur existe bien
      if (mysql_num_rows($req) > 0) {
         $data = mysql_fetch_assoc($req);
     
        // On vérifie que son mot de passe est correct
        if ($mot_de_passe_inscription == $data['mot_de_passe_inscription']) {
          $identifiant_inscriptionOK = true;
        }
      }
    }
     
    // Si l'utilisateur existe ...
    if (mysql_num_rows($req) > 0) {
    $data = mysql_fetch_assoc($req);
    $_SESSION['user_id'] = $data['user_id']; //en supposant que t'as un champs user_id dans ta table d'utilisateur
    $_SESSION['identifiant_inscription'] = $data['identifiant_inscription'];
    $_SESSION['mot_de_passe_inscription'] = $data['mot_de_passe_inscription'];
     
     
    }
    else {
      echo 'Une erreur est survenue, veuillez réessayer !'; 
    }
    ?>
    <a href="http://www.">Entrez dans l'espace membre</a>
    </body>
    </html>

    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
     >>>>>>>>>>>>>>>>demande.php>>>>>>>>>>>>>>>>>>>>>>>><
    <?php 
    // On commence par récupérer les champs 
    if(isset($_POST['evenement']))      $evenement=$_POST['evenement'];
    else      $evenement="";
     
    if(isset($_POST['date']))      $date=$_POST['date'];
    else      $date="";
     
    if(isset($_POST['commentaire']))      $commentaire=$_POST['commentaire'];
    else      $commentaire="";
     
     
        { 
           // connexion à la base
    $db = mysql_connect('localhost', '***', '*****')  or die('Erreur de connexion '.mysql_error());
    // sélection de la base  
     
        mysql_select_db(*******,$db)  or die('Erreur de selection '.mysql_error()); 
     
        // on écrit la requête sql
    $sql = "INSERT INTO t_demandes SET id_users='".$_SESSION["id_users"]."', evenement='$evenement', date='$date' , commentaire='$commentaire'";
     
     
        // on insère les informations du formulaire dans la table 
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
     
        // on affiche le résultat pour le visiteur 
        echo 'votre demande a été enregistrée !.'; 
    include('http://www.);
        }  
    ?>

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    merci d'avance pour votre aide....

  4. #4
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $_SESSION['user_id'] = $data['user_id'];
    echo $_SESSION['user_id'] // pour vérifier si ta variable session contient bien une valeur
    Il semblerait que user_id soit un champ de la table t_demande. Existe-t-il également dans t_users?

    Le plus simple serait de nous donner la structure de tes deux tables pour que l'on puisse vérifier tes requêtes.

  5. #5
    Membre confirmé Avatar de heteroclite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Par défaut
    Bonjour,

    je m'etais effectivement trompé sur le nom de champs ....mais en remplaçant user_id par id ça ne marche toujours pas , j'ai l'impression qu'il ne veut pas mettre le champs "ID" de ma table t_users en sesion.
    Ci dessous la structure de mes tables comme demandé.

    merci d'avance !


    >>>>>>>tables users= t_users>>>>>>>>>>>>

    id int(11) No auto_increment
    identifiant_inscription varchar(30) latin1_swedish_ci No
    mot_de_passe_inscription varchar(10) latin1_swedish_ci No
    email varchar(30) latin1_swedish_ci No
    civilite varchar(10) latin1_swedish_ci No
    prenom varchar(20) latin1_swedish_ci No
    nom varchar(30) latin1_swedish_ci No
    date_naissance varchar(10) latin1_swedish_ci No
    origine varchar(50) latin1_swedish_ci No
    ville varchar(40) latin1_swedish_ci No
    region varchar(40) latin1_swedish_ci No
    site_web varchar(60) latin1_swedish_ci No
    centres_interets varchar(150) latin1_swedish_ci No
    categorie_professionnelle varchar(40) latin1_swedish_ci No
    domaine_activite varchar(30) latin1_swedish_ci No
    entreprise_profession varchar(30) latin1_swedish_ci No
    entreprise varchar(20) latin1_swedish_ci No
    entreprise_site_web varchar(100) latin1_swedish_ci No
    entreprise_activite varchar(30) latin1_swedish_ci No
    newsletter

    >>>>>>>>>>table demande= t_demandes
    id_demande int(255) No auto_increment
    id_users int(255) No 0
    evenement varchar(255) latin1_swedish_ci No
    date text latin1_swedish_ci No
    hab_alim varchar(255) latin1_swedish_ci No
    commentaire

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ok l'erreur est la suivante


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id,identifiant_inscription, mot_de_passe_inscription FROM t_users 
    
    WHERE identifiant_inscription = '".addslashes($identifiant_inscription)."'";
    si tu ne sélectionnes pas id dans ta 2ème requête sql, data['id'] sera forcément vide. c'est la raison pour laquelle ta variable session est vide.
    idem pour identifiant_inscription.

    N'oublie pas égalment de faire un echo $_SESSION['..']; pour voir le contenu
    de tes variables session

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/05/2008, 09h53
  2. Récupération de données de formulaire dans une fenetre fille
    Par xave dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 03/01/2008, 16h22
  3. Réponses: 2
    Dernier message: 05/10/2007, 23h49
  4. [ODBC] Récupération d'une donnée pour insertion dans une autre table
    Par rom950 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/03/2006, 17h13
  5. insertion dans une table en pl/sql
    Par jejam dans le forum PL/SQL
    Réponses: 9
    Dernier message: 24/08/2005, 18h06

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