Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 11/08/2011, 12h05   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2008
Messages : 54
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 54
Points : 11
Points : 11
Par défaut problème d'alimentation de 2 tables en même temps

Bonjour,

je suis sur la réalisation d'une billetterie interne qui permet juste la consultation des offres.

J'ai fait mes tables de manière suivante :
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
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
 
--
-- Base de données: `test`
--
 
-- --------------------------------------------------------
 
--
-- Structure de la table `activite`
--
 
CREATE TABLE `activite` (
  `idactivite` int(11) NOT NULL AUTO_INCREMENT,
  `nomactivite` varchar(250) NOT NULL,
  PRIMARY KEY (`idactivite`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
 
--
-- Contenu de la table `activite`
--
 
INSERT INTO `activite` VALUES(1, 'eurodisney');
INSERT INTO `activite` VALUES(2, 'parc asterix');
INSERT INTO `activite` VALUES(3, 'piscine');
INSERT INTO `activite` VALUES(4, 'tennis');
 
-- --------------------------------------------------------
 
--
-- Structure de la table `billet`
--
 
CREATE TABLE `billet` (
  `idbillet` int(11) NOT NULL AUTO_INCREMENT,
  `idactivite` int(11) NOT NULL,
  `idhotel` int(11) NOT NULL,
  `idvoyage` int(11) NOT NULL,
  `idoperateur` int(11) NOT NULL,
  `datedebut` date NOT NULL,
  `datefin` date NOT NULL,
  `description` blob NOT NULL,
  `prix` float NOT NULL,
  `reduction` float NOT NULL,
  PRIMARY KEY (`idbillet`),
  KEY `idactivite` (`idactivite`,`idhotel`,`idvoyage`,`idoperateur`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
 
--
-- Contenu de la table `billet`
--
 
 
-- --------------------------------------------------------
 
--
-- Structure de la table `hotel`
--
 
CREATE TABLE `hotel` (
  `idhotel` int(11) NOT NULL AUTO_INCREMENT,
  `nomhotel` varchar(250) NOT NULL,
  PRIMARY KEY (`idhotel`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
 
--
-- Contenu de la table `hotel`
--
 
 
-- --------------------------------------------------------
 
--
-- Structure de la table `operateur`
--
 
CREATE TABLE `operateur` (
  `idoperateur` int(11) NOT NULL AUTO_INCREMENT,
  `nomoperateur` varchar(250) NOT NULL,
  PRIMARY KEY (`idoperateur`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
 
--
-- Contenu de la table `operateur`
--
 
INSERT INTO `operateur` VALUES(1, 'jet tour');
INSERT INTO `operateur` VALUES(2, 'easy jet');
 
-- --------------------------------------------------------
 
--
-- Structure de la table `voyage`
--
 
CREATE TABLE `voyage` (
  `idvoyage` int(11) NOT NULL AUTO_INCREMENT,
  `nomvoyage` varchar(250) NOT NULL,
  PRIMARY KEY (`idvoyage`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
 
--
-- Contenu de la table `voyage`
--
INSERT INTO `activite` VALUES(1, 'egypte');
INSERT INTO `activite` VALUES(2, 'martinique');
le soucis est que lors d'un nouvelle enregistrement il me prend pas le nom de l'activité et me remplis pas mon table billet.

voici le 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
<?php
// on se connecte à notre base
$base = mysql_connect ('localhost', 'user', 'mdp');
mysql_select_db ('base', $base) ;
?>
<html>
<head>
<title>billet</title>
</head>
<body>
<?php
// on teste si les variables du formulaire sont bien déclarées
if (isset($_POST['nomactivite']) &&
isset($_POST['datedebut']) &&
isset($_POST['datefin']) &&
isset($_POST['description']) &&
isset($_POST['prix']) && 
isset($_POST['reduction'])) 
{
 
// on prépare la requête pour récupérer l'id de l'activite
$sql = 'SELECT idactivite FROM activite WHERE nomactivite = "'.$_POST['nomactivite'].'"';
 
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on récupère le résultat sous forme d'un tableau
$data = mysql_fetch_array($req);
// on libère l'espace mémoire alloué pour cette interrogation de la base
mysql_free_result ($req);
// on insère le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
$sql = 'INSERT INTO billet VALUES(""'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
// on insère le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on ferme la connexion à la base
mysql_close();
echo 'Nous venons d\'insérer une nouvelle activite : '.$_POST['nomactivite'];
}
else {
echo 'Les variables du formulaire ne sont pas déclarées';
}
?>
</body>
</html>
Merci par avance
schranz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 12h14   #2
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Bonjour,

si tu affiches

Code :
echo 'SELECT idactivite FROM activite WHERE nomactivite = "'.$_POST['nomactivite'].'"'; exit;
ça te renvoie quoi ?

Utilises les fonctions d'echappement dans tes requêtes

mysql_real_escape_string()

Code :
echo 'SELECT idactivite FROM activite WHERE nomactivite = "'.mysql_real_escape_string($_POST['nomactivite']).'"'; exit;
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 12h16   #3
Membre chevronné
 
Homme Taoufiq Ben
Développeur Web
Inscription : mai 2009
Messages : 460
Détails du profil
Informations personnelles :
Nom : Homme Taoufiq Ben
Âge : 25
Localisation : Maroc

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2009
Messages : 460
Points : 644
Points : 644
Essai d'enlever un double cote près de values
Code :
1
2
$sql = 'INSERT INTO billet VALUES("'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
m4riachi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 14h00   #4
Candidat au titre de Membre du Club
 
Inscription : octobre 2008
Messages : 54
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 54
Points : 11
Points : 11
Merci pour vos réponses effectivement c'était un double quote en trop .

Par contre , comment faire si je veux alimenter toute mes base depuis mon formulaire ? déjà est ce possible ?

mon idée serait que la personne dispose d'un formulaire unique pour l'enregistrement des données

Merci
schranz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 14h05   #5
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 773
Points : 2 332
Points : 2 332
Citation:
Envoyé par schranz Voir le message
Merci pour vos réponses effectivement c'était un double quote en trop .

Par contre , comment faire si je veux alimenter toute mes base depuis mon formulaire ? déjà est ce possible ?

mon idée serait que la personne dispose d'un formulaire unique pour l'enregistrement des données

Merci
Tu fais plusieurs insert.
__________________
- Avant toute chose : lire le mode d'emploi du forum et ses règles.
- avant de poster
- Je ne réponds pas aux questions techniques en MP.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 14h20   #6
Candidat au titre de Membre du Club
 
Inscription : octobre 2008
Messages : 54
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 54
Points : 11
Points : 11
comme ceci ?
Code :
1
2
3
4
5
6
7
8
9
10
 
$sql = 'INSERT INTO billet VALUES(""'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
 
 
$sql1 = 'INSERT INTO billet VALUES(""'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
 
$sql2 = 'INSERT INTO billet VALUES(""'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
schranz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 15h08   #7
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 773
Points : 2 332
Points : 2 332
Citation:
Envoyé par schranz Voir le message
comme ceci ?
Code :
1
2
3
4
5
6
7
8
9
10
 
$sql = 'INSERT INTO billet VALUES(""'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
 
 
$sql1 = 'INSERT INTO billet VALUES(""'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
 
$sql2 = 'INSERT INTO billet VALUES(""'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
Quel est l'intérêt d'insérer la même chose X fois ? J'ai mal compris ton besoin peut-être. Tu pourrais l'exprimer plus clairement en citant tes tables etc par exemple ?
__________________
- Avant toute chose : lire le mode d'emploi du forum et ses règles.
- avant de poster
- Je ne réponds pas aux questions techniques en MP.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 15h17   #8
Candidat au titre de Membre du Club
 
Inscription : octobre 2008
Messages : 54
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 54
Points : 11
Points : 11
En faite j'ai une table global appelé billet qui regroupe tout mes éléments
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
--
-- Structure de la table `billet`
--
 
CREATE TABLE `billet` (
  `idbillet` int(11) NOT NULL AUTO_INCREMENT,
  `idactivite` int(11) NOT NULL,
  `idhotel` int(11) NOT NULL,
  `idvoyage` int(11) NOT NULL,
  `idoperateur` int(11) NOT NULL,
  `datedebut` date NOT NULL,
  `datefin` date NOT NULL,
  `description` blob NOT NULL,
  `prix` float NOT NULL,
  `reduction` float NOT NULL,
  PRIMARY KEY (`idbillet`),
  KEY `idactivite` (`idactivite`,`idhotel`,`idvoyage`,`idoperateur`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
et 4 tables appelé activité, hôtel, opérateur et voyage . Ces 4 tables ont juste un idactivité et nomactivite.

j'aimerai en faite depuis un formulaire unique alimenter ces tables a chaque nouveau enregistrement

Sachant que par la suite je ferai une requête ajax pour que le visiteur puisse voir selon son choix les voyage proposé par l'opérateur .

Merci
schranz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 16h02   #9
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 773
Points : 2 332
Points : 2 332
Citation:
Envoyé par schranz Voir le message
En faite j'ai une table global appelé billet qui regroupe tout mes éléments
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
--
-- Structure de la table `billet`
--
 
CREATE TABLE `billet` (
  `idbillet` int(11) NOT NULL AUTO_INCREMENT,
  `idactivite` int(11) NOT NULL,
  `idhotel` int(11) NOT NULL,
  `idvoyage` int(11) NOT NULL,
  `idoperateur` int(11) NOT NULL,
  `datedebut` date NOT NULL,
  `datefin` date NOT NULL,
  `description` blob NOT NULL,
  `prix` float NOT NULL,
  `reduction` float NOT NULL,
  PRIMARY KEY (`idbillet`),
  KEY `idactivite` (`idactivite`,`idhotel`,`idvoyage`,`idoperateur`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
et 4 tables appelé activité, hôtel, opérateur et voyage . Ces 4 tables ont juste un idactivité et nomactivite.

j'aimerai en faite depuis un formulaire unique alimenter ces tables a chaque nouveau enregistrement

Sachant que par la suite je ferai une requête ajax pour que le visiteur puisse voir selon son choix les voyage proposé par l'opérateur .

Merci
Donc comme je le disais, tu fais 4 insert, un pour chaque table. Je comprends pas bien la difficulté
__________________
- Avant toute chose : lire le mode d'emploi du forum et ses règles.
- avant de poster
- Je ne réponds pas aux questions techniques en MP.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 16h39   #10
Candidat au titre de Membre du Club
 
Inscription : octobre 2008
Messages : 54
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 54
Points : 11
Points : 11
Hum en faite je me suis mal exprimé car je pense que je vois la finalité de mon produit.

pour te donner un exemple
on va dire que j'enregistre une activité appelé sport donc quand j'enregistre ma table activité va me créer un id et le nom sport ensuite le reste des informations va dans la table billet jusque la tout va bien

Mon but serait au final que donc la table billet arrive a récupérer les 4 id s'il y a 4 enregistrement car en faite l'idéal serait de faire 4 formulaire spécifique et par la suite pour l'affichage j'ai juste a recuperer dans une liste de lection le nom du sport et en ajax affichier le complément d'information

Peut etre que je me complique aussi la vie donc si tu vois une meilleur solution je t'écoute

Merci
schranz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 16h46   #11
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 773
Points : 2 332
Points : 2 332
Citation:
Envoyé par schranz Voir le message
Hum en faite je me suis mal exprimé car je pense que je vois la finalité de mon produit.

pour te donner un exemple
on va dire que j'enregistre une activité appelé sport donc quand j'enregistre ma table activité va me créer un id et le nom sport ensuite le reste des informations va dans la table billet jusque la tout va bien

Mon but serait au final que donc la table billet arrive a récupérer les 4 id s'il y a 4 enregistrement car en faite l'idéal serait de faire 4 formulaire spécifique et par la suite pour l'affichage j'ai juste a recuperer dans une liste de lection le nom du sport et en ajax affichier le complément d'information

Peut etre que je me complique aussi la vie donc si tu vois une meilleur solution je t'écoute

Merci
Nan j'ai beau essayé, j'arrive pas à comprendre
Tu veux pas mettre le code du formulaire ? Et nous faire un scénario test précis ?
Le but c'est quoi ? Qu'un utilisateur réserve un billet pour une activité ? Que toi tu ajoutes des nouvelles activités ?
__________________
- Avant toute chose : lire le mode d'emploi du forum et ses règles.
- avant de poster
- Je ne réponds pas aux questions techniques en MP.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 08h39   #12
Candidat au titre de Membre du Club
 
Inscription : octobre 2008
Messages : 54
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 54
Points : 11
Points : 11
Voici mes différents code ca sera plus simple alors

le premiere est le backoffice la ou j'ai mes 4 formulaire pour effectuer les enregistrements . Pour répondre à ta question c'est sur cette page que le service va remplir pour une activité par exemple Eurodisney du 01/08/2011 au 30/08/2011 parc de loisir prix 30euro 7% de réduction.

backoffice.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
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
 
<html>
  <head>
    <title>backoffice</title>
  </head>
<body>
<form name="insertion" action="traitement.php" method="POST">
<fieldset>activite</fieldset>
 
  <table border="0" align="center" cellspacing="2" cellpadding="2">
   <tr align="center">
      <td>nom activite</td>
      <td><input type="text" name="nomactivite"></td>
    </tr>
    <tr align="center">
      <td>date debut</td>
      <td><input type="text" name="datedebut"></td>
    </tr>
    <tr align="center">
      <td>date fin</td>
      <td><input type="text" name="datefin"></td>
    </tr>
    <tr align="center">
      <td>description</td>
      <td><input type="text" name="description"></td>
    </tr>
    <tr align="center">
      <td>prix</td>
      <td><input type="text" name="prix"></td>
    </tr>
   <tr align="center">
      <td>reduction</td>
      <td><input type="text" name="reduction"></td>
    </tr>
 
    <tr align="center">
      <td colspan="2"><input type="submit" value="insérer"></td>
    </tr>
  </table>
</form>
</form>
 
 
<form name="nomoperateur" method="POST">
<fieldset>hotel</fieldset>
  <table border="0" align="center" cellspacing="2" cellpadding="2">
   <tr align="center">
      <td>nom hotel</td>
      <td><input type="text" name="nomactivite"></td>
    </tr>
    <tr align="center">
      <td>date debut</td>
      <td><input type="text" name="datedebut"></td>
    </tr>
    <tr align="center">
      <td>date fin</td>
      <td><input type="text" name="datefin"></td>
    </tr>
    <tr align="center">
      <td>description</td>
      <td><input type="text" name="description"></td>
    </tr>
    <tr align="center">
      <td>prix</td>
      <td><input type="text" name="prix"></td>
    </tr>
   <tr align="center">
      <td>reduction</td>
      <td><input type="text" name="reduction"></td>
    </tr>
 
    <tr align="center">
      <td colspan="2"><input type="submit" value="insérer"></td>
    </tr>
  </table>
</form>
 
 
 
<form name="nomoperateur" method="POST">
<fieldset>voyage</fieldset>
  <table border="0" align="center" cellspacing="2" cellpadding="2">
   <tr align="center">
      <td>nom voyage</td>
      <td><input type="text" name="nomvoayge"></td>
    </tr>
    <tr align="center">
      <td>date debut</td>
      <td><input type="text" name="datedebut"></td>
    </tr>
    <tr align="center">
      <td>date fin</td>
      <td><input type="text" name="datefin"></td>
    </tr>
    <tr align="center">
      <td>description</td>
      <td><input type="text" name="description"></td>
    </tr>
    <tr align="center">
      <td>prix</td>
      <td><input type="text" name="prix"></td>
    </tr>
   <tr align="center">
      <td>reduction</td>
      <td><input type="text" name="reduction"></td>
    </tr>
 
    <tr align="center">
      <td colspan="2"><input type="submit" value="insérer"></td>
    </tr>
  </table>
</form>
 
 
 
 
 
<form name="nomoperateur" method="POST">
<fieldset>operateur</fieldset>
  <table border="0" align="center" cellspacing="2" cellpadding="2">
   <tr align="center">
      <td>nom operateur</td>
      <td><input type="text" name="nomoperateur"></td>
    </tr>
 
    <tr align="center">
      <td>date debut</td>
      <td><input type="text" name="datedebut"></td>
    </tr>
    <tr align="center">
      <td>date fin</td>
      <td><input type="text" name="datefin"></td>
    </tr>
    <tr align="center">
      <td>description</td>
      <td><input type="text" name="description"></td>
    </tr>
    <tr align="center">
      <td>prix</td>
      <td><input type="text" name="prix"></td>
    </tr>
   <tr align="center">
      <td>reduction</td>
      <td><input type="text" name="reduction"></td>
    </tr>
 
    <tr align="center">
      <td colspan="2"><input type="submit" value="insérer"></td>
    </tr>
  </table>
</form>
</body>
</html>
la page suivante est celle qui est chargé d'effectué la requête en récupérant donc le nom eurodisney ainsi que son id pour l'ajouter a la table billet

traitement.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
40
41
42
43
44
45
46
47
48
49
50
 
<?php
// on se connecte à notre base
$base = mysql_connect ('localhost', 'root', 'root');
mysql_select_db ('igesa', $base) ;
?>
<html>
<head>
 
</head>
<body>
<?php
// on teste si les variables du formulaire sont bien déclarées
if (isset($_POST['nomactivite']) &&
isset($_POST['datedebut']) &&
isset($_POST['datefin']) &&
isset($_POST['description']) &&
isset($_POST['prix']) && 
isset($_POST['reduction'])) 
{
 
// on prépare la requête pour récupérer le numero du propriétaire
$sql = 'SELECT idactivite FROM activite WHERE nomactivite = "'.$_POST['nomactivite'].'"';
 
 
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
 
// on récupère le résultat sous forme d'un tableau
$data = mysql_fetch_array($req);
 
// on libère l'espace mémoire alloué pour cette interrogation de la base
mysql_free_result ($req);
 
// on insère le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
$sql = 'INSERT INTO billet VALUES("'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
 
// on insère le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
 
// on ferme la connexion à la base
mysql_close();
}
else {
echo 'Les variables du formulaire ne sont pas déclarées';
}
?>
</body>
</html>
pour fini la page que verra l'utilisateur je cherche juste comment depuis un menu select affiche a la fois le nom de mon activite depuis la table activite ainsi que le reste des information de la table billet et faire ma requete ajax pour choisir en fonction du voyage le nom de l'opérateur.


billetterie.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
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
 
<?php
  //connection au serveur
  $cnx = mysql_connect( "localhost", "root", "root" ) ;
 
  //sélection de la base de données:
  $db  = mysql_select_db( "billetterie" ) ;
 ?>
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans titre</title>
</head>
 
<body>
 
<div style="left;">
  <p>activité
    <select>
 
<?php
$query="select * from activite ";
$result=mysql_query($query);
while($var=mysql_fetch_array($result)){
echo '<option value="'.$var["nomactivite"].'">'.$var["nomactivite"].'</option>';
}//fin while
?>
    </select>
  </p>
 
<p>date début : <input type="text" name="datedebut"/> </p> 
 
<p>date fin : <input type="text" name="datefin"/> </p>
 
<p>description : <br /><textarea ></textarea></p>
 
<p>prix : <input type="text" name="datefin"/> </p>
 
<p>reduction : <input type="text" name="datefin"/> </p>
 
</div>
 
 
 
<div style="left;">
  <p>hotel
    <select>
 
<?php
$query="select * from hotel ";
$result=mysql_query($query);
while($var=mysql_fetch_array($result)){
echo '<option value="'.$var["nomhotel"].'">'.$var["nomhotel"].'</option>';
}//fin while
?>
    </select>
  </p>
 
<p>date début : <input type="text" name="datedebut"/> </p> 
 
<p>date fin : <input type="text" name="datefin"/> </p>
 
<p>description : <br /><textarea ></textarea></p>
 
<p>prix : <input type="text" name="datefin"/> </p>
 
<p>reduction : <input type="text" name="datefin"/> </p>
 
</div>
 
<div style="left;">
  <p> nom voyage :   
<select>
<?php
$query="select * from voyage ";
$result=mysql_query($query);
while($var=mysql_fetch_array($result)){
echo '<option value="'.$var["nomvoyage"].'">'.$var["nomvoyage"].'</option>';
}//fin while
?>
    </select>
</p>
 
<p> nom operateur :     
 
 <select>
<?php
$query="select * from operateur ";
$result=mysql_query($query);
while($var=mysql_fetch_array($result)){
echo '<option value="'.$var["nomoperateur"].'">'.$var["nomoperateur"].'</option>';
}//fin while
?>
    </select>   
 
  </p>  
 
 
 
 
<p>date début : <input type="text" name="datedebut"/> </p> 
 
<p>date fin : <input type="text" name="datefin"/> </p>
 
<p>description : <br /><textarea ></textarea></p>
 
<p>prix : <input type="text" name="datefin"/> </p>
 
<p>reduction : <input type="text" name="datefin"/> </p>
 
</div>
</body>
</html>
je rajoute egalement le sql de ma table

table test
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
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
 
 
--
-- Base de données: `test`
--
 
-- --------------------------------------------------------
 
--
-- Structure de la table `activite`
--
 
CREATE TABLE `activite` (
  `idactivite` int(11) NOT NULL AUTO_INCREMENT,
  `nomactivite` varchar(250) NOT NULL,
  PRIMARY KEY (`idactivite`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
 
--
-- Contenu de la table `activite`
--
 
INSERT INTO `activite` VALUES(1, 'eurodisney');
INSERT INTO `activite` VALUES(2, 'parc asterix');
INSERT INTO `activite` VALUES(3, 'piscine');
INSERT INTO `activite` VALUES(4, 'tennis');
 
-- --------------------------------------------------------
 
--
-- Structure de la table `billet`
--
 
CREATE TABLE `billet` (
  `idbillet` int(11) NOT NULL AUTO_INCREMENT,
  `idactivite` int(11) NOT NULL,
  `idhotel` int(11) NOT NULL,
  `idvoyage` int(11) NOT NULL,
  `idoperateur` int(11) NOT NULL,
  `datedebut` date NOT NULL,
  `datefin` date NOT NULL,
  `description` blob NOT NULL,
  `prix` float NOT NULL,
  `reduction` float NOT NULL,
  PRIMARY KEY (`idbillet`),
  KEY `idactivite` (`idactivite`,`idhotel`,`idvoyage`,`idoperateur`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
 
--
-- Contenu de la table `billet`
--
 
 
-- --------------------------------------------------------
 
--
-- Structure de la table `hotel`
--
 
CREATE TABLE `hotel` (
  `idhotel` int(11) NOT NULL AUTO_INCREMENT,
  `nomhotel` varchar(250) NOT NULL,
  PRIMARY KEY (`idhotel`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
 
--
-- Contenu de la table `hotel`
--
 
 
-- --------------------------------------------------------
 
--
-- Structure de la table `operateur`
--
 
CREATE TABLE `operateur` (
  `idoperateur` int(11) NOT NULL AUTO_INCREMENT,
  `nomoperateur` varchar(250) NOT NULL,
  PRIMARY KEY (`idoperateur`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
 
--
-- Contenu de la table `operateur`
--
 
INSERT INTO `operateur` VALUES(1, 'jet tour');
INSERT INTO `operateur` VALUES(2, 'easy jet');
 
-- --------------------------------------------------------
 
--
-- Structure de la table `voyage`
--
 
CREATE TABLE `voyage` (
  `idvoyage` int(11) NOT NULL AUTO_INCREMENT,
  `nomvoyage` varchar(250) NOT NULL,
  PRIMARY KEY (`idvoyage`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
 
--
-- Contenu de la table `voyage`
--
INSERT INTO `activite` VALUES(1, 'egypte');
INSERT INTO `activite` VALUES(2, 'martinique');
En tous cas merci de ton aide
schranz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 10h37   #13
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 773
Points : 2 332
Points : 2 332
Déjà je préconiserai plusieurs choses pour améliorer ton code :

- sors le html du php, c'est pas beau :
Code :
echo '<option value="'.$var["nomactivite"].'">'.$var["nomactivite"].'</option>';
- tu n'as pas besoin de plusieurs requêtes pour sélectionner plusieurs données. Tu peux réunir toutes tes requêtes en une seule, en faisant des jointures.
- une fois ceci fait, il n'y a a priori pas de souci pour afficher ce que tu souhaites
__________________
- Avant toute chose : lire le mode d'emploi du forum et ses règles.
- avant de poster
- Je ne réponds pas aux questions techniques en MP.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 15h41   #14
Candidat au titre de Membre du Club
 
Inscription : octobre 2008
Messages : 54
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 54
Points : 11
Points : 11
Pour le code php l'idéal est de la placer avant de code en html c'est ca mais sur la même page ?

pour la requête peux tu juste m'aider à l'optimiser

Code :
1
2
 
$sql ='SELECT idactivite,nomactivite,idhotel,nomhotel,idvoyage,nomvoayge,idoperateur,nomoperateur FROM activite,hotel,voyage,operateur where nomactivite = "'.$_POST['nomactivite'].'" and nomhotel = "'.$_POST['nomhotel'].'" and nomoperateur = "'.$_POST['nomoperateur'].'" and nomvoyage = "'.$_POST['nomvoyage'].'" INNER JOIN billet ON activite = billet.activite and INNER JOIN billet ON hotel = billet.hotel and INNER JOIN billet ON voyage = billet.voyage and INNER JOIN billet ON operateur = billet.operateur';
merci
schranz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 15h59   #15
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Essaye ça :

Code :
1
2
3
4
5
6
7
$sql = 'SELECT a.idactivite,nomactivite,idhotel,nomhotel,v.idvoyage,v.nomvoyage,o.idoperateur,o.nomoperateur 
FROM activite AS a
INNER JOIN hotel AS h ON h.idactivite = a.idactivite
INNER JOIN billet AS b ON b.idactivite = a.idactivite
INNER JOIN operateur AS o ON idoperateur = b.idoperateur
INNER JOIN voyage AS v ON v.idvoyage = b.idvoyage
WHERE a.nomactivite = "'.$_POST['nomactivite'].'" AND h.nomhotel = "'.$_POST['nomhotel'].'" AND o.nomoperateur = "'.$_POST['nomoperateur'].'" AND v.nomvoyage = "'.$_POST['nomvoyage'].'"'
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 19h14   #16
Candidat au titre de Membre du Club
 
Inscription : octobre 2008
Messages : 54
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 54
Points : 11
Points : 11
merci syl2095 pour ton aide mais dans ta requete il n'y a que la table activite pris en compte et mon but serait d'intégrer mes 4 tables.(au passage je comprend mieux le tuto sql expliqué sur ce site

je joins ma mcd car autant tout reprendre depuis le début s'il le faut.

Merci pour la patience en tout cas
Images attachées
Type de fichier : png billeterie.png (46,5 Ko, 1 affichages)
schranz 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 10h56.


 
 
 
 
Partenaires

Hébergement Web