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] UPDATE par rapport à plusieurs tables


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Points : 57
    Points
    57
    Par défaut [SQL] UPDATE par rapport à plusieurs tables
    Salut à tous,

    Voici mon souci.

    J'ai 3 tables qui se nomment:

    - vente: id_produit, titre, detail, photo, prix
    - client: id_client, nom, prenom, etc...
    - reservation: id, id_client, id_produit

    Pour mettre en situation, la personne rentre dans une page à l'aide de son login et pass, une fois sur cette page, elle a la possiblité de valider une réservation et de cliquer sur le bouton.

    Lors de l'envoi, je voudrais que les données de son id_client (session) et de l'id_produit s'inscrivent dans la table "réservation".

    Etant débutant en php, j'ai du mal à faire correspondre toutes les données de ces tables dans une seule, pouvez-vous m'aider?

    Merci d'avance!

  2. #2
    Membre averti
    Homme Profil pro
    Lead Dev Web
    Inscrit en
    Avril 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lead Dev Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2005
    Messages : 282
    Points : 390
    Points
    390
    Par défaut
    Il suffit de faire une requête insert....
    Dans ton formulaire de validation tu peux mettre 2 champs input de type hidden avec les valeurs dont tu a besoin...
    Ou alors les mettres en session.
    Et tu les récupères pour ta requêtes.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par yannux Voir le message
    Il suffit de faire une requête insert....
    Dans ton formulaire de validation tu peux mettre 2 champs input de type hidden avec les valeurs dont tu a besoin...
    Ou alors les mettres en session.
    Et tu les récupères pour ta requêtes.
    Oui, la balise INSERT fonctionne, j'ai déja effectué des requêtes avec, par contre dans celle-ci je dois appeler plusieurs tables logiquement? Comment cela se passe?

  4. #4
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Bonsoir,

    Procédons logiquement
    Et regardons ce que tu as :

    1/ La personne se logue, tu as donc mis en session son id_client
    2/ Tu as ton formulaire où la personne peut (visiblement) réserver un produit
    Ce formulaire doit contenir :
    - une liste de sélection avec les produit dedans (je pense que c'est comme çà que sont les choses), appelons cette liste 'produits'
    - un bouton de soumission (submit), appelons ce bouton 'reserver'
    - une action, pour le cas présent nous dirons que cet attribut est vide, ce qui veut dire que le formulaire va renvoyer vers la même page.

    Donc maintenant, le traitement !

    En haut de ton script (celui là même qui contient ton formulaire)

    Tu vas faire un test avec isset() sur $_POST['reserver'], histoire de voir si le formulaire a été envoyé, ensuite il va falloir faire tes INSERT... je la fais vite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
    if(isset($_POST['reserver'])) {
     
        $req = 'INSERT INTO reservation (id_client, id_produit) VALUES ('.$_SESSION['id_client'].', '.$_POST['produit'].')';
        mysql_query($res) or die(mysql_error());
    }
    ...
    Il manque surement des tests nécessaire au fonctionnement que tu désires mais c'est là ce que tu a exprimer

    N'hésises pas à faire des recherches sur le forum ou bien à consulter les FAQ, le site regorge de ressources très bien faites
    Bon courage pour la suite.

    NB : pose toi aussi cette question : Est-ce qu'un client peut réserver plusieurs fois le même produit ? Ca t'évitera peut être des bourdes.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Points : 57
    Points
    57
    Par défaut
    Désolé pour le retard au niveau de la réponse...

    J'ai donc essayé de mettre ça en place en ayant créé plusieurs id_client, plusieurs id_produit, le problème c'est que lorsque je suis sous ces différentes sessions, lors de la validation, dans ma table, les id ne correspondent pas, j'ai 1 comme valeur à chaque fois...

    Voici mon code:

    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
    /* Produits */
    $sql->DatabaseConnexion();
    $aff_ventedeco = $sql->query("SELECT * FROM "._TVENTEDECO_." ORDER by id_produit DESC LIMIT 0,1")or die (mysql_error());
    $sql->DatabaseClose();
     
    while($results = mysql_fetch_array($aff_ventedeco,MYSQL_ASSOC)) {      
    	$tpl->assign_block_vars('ventedeco', array(
    					'TITRE' => $results['titre'],
    					'DETAIL' => $results['detail'],
    					'PHOTO' => $results['photo'],
    					'PRIX' => $results['prix'],
    					));
    }
     
    /* Gestion de l'ajout de news */
    if(isset($_POST['res_quantite']) && !empty($_POST['res_quantite'])) {
     
    	$sql->DatabaseConnexion();
     
    	$ajout = $sql->query("INSERT INTO "._TRESERVATION_." VALUES(
    						'',
    						`id_client`='".$_SESSION["id_client"]."',
    						`id_produit`='".$_POST["id_produit"]."',
    						`quantite`='".$_POST["res_quantite"]."'
    						)") or die(mysql_error());
     
    	$sql->DatabaseClose();
    }

  6. #6
    Membre averti
    Homme Profil pro
    Lead Dev Web
    Inscrit en
    Avril 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lead Dev Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2005
    Messages : 282
    Points : 390
    Points
    390
    Par défaut
    Bah tu sélectionne tjrs la même ligne non ? ( LIMIT 0,1 )....

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par yannux Voir le message
    Bah tu sélectionne tjrs la même ligne non ? ( LIMIT 0,1 )....
    En faite je fait apparaitre le dernier ID entré, vu que j'affiche par ordre décroissant.

  8. #8
    Membre averti
    Homme Profil pro
    Lead Dev Web
    Inscrit en
    Avril 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lead Dev Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2005
    Messages : 282
    Points : 390
    Points
    390
    Par défaut
    J'ai un peu du mal à te suivre là...Désolé.
    Vérifie la valeur de tes champs avant l'insertion, et tout au long du processus.. tu verra surement d'où viens l'erreur..

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Points : 57
    Points
    57
    Par défaut
    Alors après avoir repris tout le code, j'ai fait quelques modifs.

    Voici mon code TPL:

    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
    <form id="reser_form" name="ajout_reser" enctype="multipart/form-data" method="post" action="" onsubmit="return reservation();">
     
    <select name="res_id_client" id="res_id_client">
              <option value="{ID_CLIENT}" selected="selected">{NOM} {PRENOM}</option>
    		</select>
     
    <select name="res_id_produit" id="res_id_produit">
              <!-- BEGIN produit -->
    		  <option value="{produit.ID_PRODUIT}" selected="selected">{produit.TITRE}</option>
    		  <!-- END produit -->
    		</select>
     
    <select name="res_quantite" size="1" id="res_quantite">
        <option value="" selected="selected">Choisir une quantit&eacute;</option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
      </select>
     
    <input type="submit" name="Submit" value="Envoyer" />
    </form>
    Mon code 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    /* Session */
    session_start();
     
    /* Produits */
    $sql->DatabaseConnexion();
    $aff_ventedeco = $sql->query("SELECT * FROM "._TVENTEDECO_." ORDER by id_produit DESC LIMIT 0,1")or die (mysql_error());
    $sql->DatabaseClose();
     
    while($results = mysql_fetch_array($aff_ventedeco,MYSQL_ASSOC)) {      
    	$tpl->assign_block_vars('produit', array(
    					'ID_PRODUIT' => $results['id_produit'],
    					'TITRE' => $results['titre'],
    					));
    }
     
    /* Affichage du client*/
    $sql->DatabaseConnexion();
    $clients= $sql->query("SELECT * FROM "._TCLIENTS_);
    while($results = mysql_fetch_array($clients,MYSQL_ASSOC)) {
    	$tpl->assign_vars(array(
    					'ID_CLIENT' => $_SESSION['id_client'],
    					'NOM' => $_SESSION['nom'],
    					'PRENOM' => $_SESSION['prenom'],
    					));
    }
    $sql->DatabaseClose();
     
    /* Gestion de la réservation */
     
    	$sql->DatabaseConnexion();
     
    	$ajout = $sql->query("INSERT INTO "._TRESERVATION_." VALUES(
    						'',
    						'".$_POST["res_id_client"]."',
    						'".$_POST["res_id_produit"]."',
    						'".$_POST["res_quantite"]."'
    						)") or die(mysql_error());
     
    	$sql->DatabaseClose();
    Lorsque je fais une réservation, mon id_produit et ma quantité son bien retranscrits dans ma base de données, par contre, mon id_client reste à 0...
    J'ai essayé de mettre $_SESSION["res_id_client"] mais ça me donne le même résultat.

    Je ne vois pas d'où vient le problème...

  10. #10
    Membre averti
    Homme Profil pro
    Lead Dev Web
    Inscrit en
    Avril 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lead Dev Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2005
    Messages : 282
    Points : 390
    Points
    390
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /* Affichage du client*/
    $sql->DatabaseConnexion();
    $clients= $sql->query("SELECT * FROM "._TCLIENTS_);
    while($results = mysql_fetch_array($clients,MYSQL_ASSOC)) {
    	$tpl->assign_vars(array(
    					'ID_CLIENT' => $_SESSION['id_client'],
    					'NOM' => $_SESSION['nom'],
    					'PRENOM' => $_SESSION['prenom'],
    					));
    }
    $sql->DatabaseClose();
    Perso je comprend pas pour quoi tu fais une requête sql, que tu boucle sur le résultat qu'elle renvois et que t'assigne des variables de sessions..... Ca me semble logique que t'obtienne toujours le même id client....

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Points : 57
    Points
    57
    Par défaut
    Ben je fais cette requête pour que sur la page du formulaire, dans le champ nom, prénom, il soit directement inscrit celui de la personne qui est connecté.

    Après, je n'ai pas une grande connaissance en php, le problème vient sans doute de ça, puisque malgré le fait que le nom et le prénom soit inscrit, ça me renvoi 0 dans ma bdd...

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/12/2007, 17h40
  2. [SQL] Requête complexe sur plusieurs tables
    Par BFH dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/09/2007, 16h21
  3. [SQL] Derniers enregistrement sur plusieurs tables
    Par bibom dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 28/07/2006, 23h22
  4. [SQL] Une requête dans plusieurs tables
    Par Anduriel dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/12/2005, 16h23
  5. [SQL Access] SELECT sur plusieurs Tables et Composer Champs
    Par Giuseppe dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 07/11/2005, 14h00

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