Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/09/2007, 15h14   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 57
Points : 11
Points : 11
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!
Vinuto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 16h11   #2
Membre éclairé
 
Homme Yann
Développeur Web
Inscription : avril 2005
Messages : 280
Détails du profil
Informations personnelles :
Nom : Homme Yann
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 280
Points : 366
Points : 366
Envoyer un message via MSN à yannux
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.
yannux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 19h49   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 57
Points : 11
Points : 11
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?
Vinuto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 20h17   #4
Membre éclairé
 
Avatar de Huntress
 
Inscription : août 2004
Messages : 454
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 454
Points : 339
Points : 339
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 :
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.
__________________

Règle n°1 du forum francophone : Parler le français...
Pas de question technique par MP, le forum est fait pour çà, merci.
Huntress est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 10h24   #5
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 57
Points : 11
Points : 11
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 :
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();
}
Vinuto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2007, 11h59   #6
Membre éclairé
 
Homme Yann
Développeur Web
Inscription : avril 2005
Messages : 280
Détails du profil
Informations personnelles :
Nom : Homme Yann
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 280
Points : 366
Points : 366
Envoyer un message via MSN à yannux
Bah tu sélectionne tjrs la même ligne non ? ( LIMIT 0,1 )....
yannux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2007, 14h17   #7
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 57
Points : 11
Points : 11
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.
Vinuto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2007, 14h24   #8
Membre éclairé
 
Homme Yann
Développeur Web
Inscription : avril 2005
Messages : 280
Détails du profil
Informations personnelles :
Nom : Homme Yann
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 280
Points : 366
Points : 366
Envoyer un message via MSN à yannux
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..
yannux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2007, 10h17   #9
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 57
Points : 11
Points : 11
Alors après avoir repris tout le code, j'ai fait quelques modifs.

Voici mon code TPL:

Code :
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 :
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...
Vinuto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 10h04   #10
Membre éclairé
 
Homme Yann
Développeur Web
Inscription : avril 2005
Messages : 280
Détails du profil
Informations personnelles :
Nom : Homme Yann
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 280
Points : 366
Points : 366
Envoyer un message via MSN à yannux
Citation:
Code :
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....
yannux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 10h26   #11
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 57
Points : 11
Points : 11
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...
Vinuto est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h02.


 
 
 
 
Partenaires

Hébergement Web