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 :

Afficher des groupements [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 13
    Par défaut Afficher des groupements
    Bonjour,

    Je suis en terminale STG GSI, et nous devons faire un projet pour l'oral du bac.
    Dans mon projet, je suis censé faire un site internet relié a une base de données pour une association mettant en commun des personnes louant des gites et ceux qui en recherche.

    Mon projet est quasiment terminé, mais j'ai un problème concernant une partie de mon code PHP.

    Je dois donc afficher les gites disponibles avec toutes leurs informations par villages (tout est dans la BDD) et je dois afficher cela dans des tableaux.

    Voila la requête que l'on m'a donné:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT GITE.RueGite, GITE.NbPlaces, GITE.NbChambres, GITE.Surface, PROPRIO.*, GROUP_CONCAT(SAISON.LibSaison) AS LibSaison, UNITE.LibUnite, GROUP_CONCAT(COUTER.Prix) AS Prix, GROUP_CONCAT(COUTER.CdUnite) AS CdUnite, GROUP_CONCAT(COUTER.CdSaison) AS CdSaison
    FROM GITE
    JOIN PROPRIO ON PROPRIO.CdProprio = GITE.CdProprio
    JOIN COUTER ON GITE.NoGite = COUTER.NoGite
    JOIN UNITE ON UNITE.CdUnite = COUTER.CdUnite
    JOIN SAISON ON COUTER.CdSaison = SAISON.CdSaison
    WHERE VilleGite = "Tuchan"
    GROUP BY GITE.NoGite
    Cette requête marche parfaitement, mais je dois également afficher les réservations de chaque gite, je pensais rajouter les liens vers la Table RESERVATION, et faire des GROUP_CONCAT comme pour les prix mais cela ne marche pas ...

    Voila le code PHP qui me permet d'afficher cette requete :

    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
    $requete_gite_tuchan="SELECT GITE.*, PROPRIO.*, GROUP_CONCAT(SAISON.LibSaison) AS LibSaison, GROUP_CONCAT(UNITE.LibUnite) AS LibUnite, GROUP_CONCAT(COUTER.Prix) AS Prix, GROUP_CONCAT(COUTER.CdUnite) AS CdUnite, GROUP_CONCAT(COUTER.CdSaison) AS CdSaison
    					FROM GITE, PROPRIO, COUTER, UNITE, SAISON
    					WHERE PROPRIO.CdProprio = GITE.CdProprio AND GITE.NoGite = COUTER.NoGite AND UNITE.CdUnite = COUTER.CdUnite AND COUTER.CdSaison = SAISON.CdSaison AND GITE.VilleGite = 'Tuchan' GROUP BY GITE.NoGite";
    					$resultat_gite_tuchan=mysql_query($requete_gite_tuchan);
    <?php
    				  	while($gite_tuchan=mysql_fetch_array($resultat_gite_tuchan))
    	{ 
    		echo "<p>Description du Gite</p><table><tr><th> Numero du gite </th><th> Adresse du gite </th><th> Nombre de chambres </th><th> Nombre de places </th><th> Surface </th><th> Jardin </th></tr><tr><td>".$gite_tuchan['NoGite']."</td>";
     		echo "<td>".$gite_tuchan['RueGite']."</td>";
    		echo "<td>".$gite_tuchan['NbPlaces']."</td>";
    	        echo "<td>".$gite_tuchan['NbChambres']."</td>";
    		echo "<td>".$gite_tuchan['Surface']."m<sup>2</sup></td>"; 
    		echo "<td>".$gite_tuchan['Jardin']."</td></tr></table>";
     
    		echo "<p>Proprietaire du Gite</p><table> <tr><th> Nom </th><th> Rue </th><th> CP </th><th> Ville </th><th> Telephone </th><th> Mel </th></tr> <tr><td>".$gite_tuchan['NomProprio']."</td>";
    		echo "<td>".$gite_tuchan['RueProprio']."</td>";
    		echo "<td>".$gite_tuchan['CPProprio']."</td>";
    		echo "<td>".$gite_tuchan['VilleProprio']."</td>";
    		echo "<td>".$gite_tuchan['TelProprio']."</td>";
    		echo "<td>".$gite_tuchan['MelProprio']."</td></tr></table>";
     
    		echo "<p>Prix du Gite</p><table><tr><th>Saison</th><th>Unité</th><th>Prix</th></tr><tr>";	
    		echo "<td>".$gite_tuchan['LibSaison']."</td>";
    		echo "<td>".$gite_tuchan['LibUnite']."</td>";	
    		echo "<td>".$prix_gite_tuchan." €</td></tr></table><br /><hr />";
    }
    ?>

    Voila ma table :

    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
    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
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    -- 
    -- Structure de la table 'COUTER'
    -- 
     
    CREATE TABLE 'COUTER' (
      'NoGite' smallint(6) NOT NULL,
      'CdSaison' varchar(1) NOT NULL,
      'CdUnite' varchar(1) NOT NULL,
      'Prix' decimal(19,2) default NULL,
      PRIMARY KEY  ('NoGite','CdSaison','CdUnite'),
      KEY 'CdSaison' ('CdSaison'),
      KEY 'CdUnite' ('CdUnite')
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
     
    -- 
    -- Contenu de la table 'COUTER'
    -- 
     
    INSERT INTO 'COUTER' VALUES (1, '1', 'S', '250.00');
    INSERT INTO 'COUTER' VALUES (1, '2', 'S', '350.00');
    INSERT INTO 'COUTER' VALUES (1, '3', 'S', '250.00');
    INSERT INTO 'COUTER' VALUES (1, '4', 'S', '200.00');
    INSERT INTO 'COUTER' VALUES (2, '1', 'S', '200.00');
    INSERT INTO 'COUTER' VALUES (2, '2', 'S', '300.00');
    INSERT INTO 'COUTER' VALUES (2, '3', 'S', '200.00');
    INSERT INTO 'COUTER' VALUES (3, '1', 'S', '200.00');
    INSERT INTO 'COUTER' VALUES (3, '2', 'S', '300.00');
    INSERT INTO 'COUTER' VALUES (4, '1', 'S', '200.00');
    INSERT INTO 'COUTER' VALUES (4, '2', 'S', '300.00');
    INSERT INTO 'COUTER' VALUES (5, '1', 'S', '300.00');
    INSERT INTO 'COUTER' VALUES (5, '2', 'S', '400.00');
    INSERT INTO 'COUTER' VALUES (6, '2', 'S', '300.00');
    INSERT INTO 'COUTER' VALUES (7, '2', 'S', '320.00');
    INSERT INTO 'COUTER' VALUES (8, '1', 'S', '220.00');
    INSERT INTO 'COUTER' VALUES (8, '2', 'S', '350.00');
    INSERT INTO 'COUTER' VALUES (9, '1', 'S', '200.00');
    INSERT INTO 'COUTER' VALUES (9, '2', 'S', '300.00');
    INSERT INTO 'COUTER' VALUES (10, '1', 'S', '250.00');
    INSERT INTO 'COUTER' VALUES (10, '2', 'S', '350.00');
    INSERT INTO 'COUTER' VALUES (10, '3', 'S', '250.00');
    INSERT INTO 'COUTER' VALUES (11, '1', 'S', '250.00');
    INSERT INTO 'COUTER' VALUES (11, '2', 'S', '300.00');
    INSERT INTO 'COUTER' VALUES (12, '2', 'S', '300.00');
    INSERT INTO 'COUTER' VALUES (13, '1', 'S', '250.00');
    INSERT INTO 'COUTER' VALUES (13, '1', 'W', '100.00');
    INSERT INTO 'COUTER' VALUES (13, '2', 'S', '350.00');
    INSERT INTO 'COUTER' VALUES (13, '3', 'S', '250.00');
    INSERT INTO 'COUTER' VALUES (13, '3', 'W', '100.00');
    INSERT INTO 'COUTER' VALUES (14, '2', 'S', '400.00');
    INSERT INTO 'COUTER' VALUES (15, '2', 'S', '330.00');
    INSERT INTO 'COUTER' VALUES (15, '3', 'S', '270.00');
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table 'GITE'
    -- 
     
    CREATE TABLE 'GITE' (
      'NoGite' smallint(6) NOT NULL,
      'RueGite' varchar(50) default NULL,
      'CPGite' varchar(5) default NULL,
      'VilleGite' varchar(30) default NULL,
      'NbPlaces' smallint(6) default NULL,
      'NbChambres' smallint(6) default NULL,
      'Surface' smallint(6) default NULL,
      'Jardin' varchar(3) default NULL,
      'CdProprio' varchar(8) default NULL,
      PRIMARY KEY  ('NoGite'),
      KEY 'CdProprio' ('CdProprio')
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
     
    -- 
    -- Contenu de la table 'GITE'
    -- 
     
    INSERT INTO 'GITE' VALUES (1, '15 chemin du Torgan', '11350', 'Padern', 5, 2, 90, 'Oui', '012');
    INSERT INTO 'GITE' VALUES (2, '7 rue du Confluent', '11350', 'Padern', 4, 2, 70, 'Oui', '009');
    INSERT INTO 'GITE' VALUES (3, '8 passage des Jardins', '11350', 'Padern', 4, 2, 65, 'Oui', '008');
    INSERT INTO 'GITE' VALUES (4, '4 rue du Verdouble', '11350', 'Padern', 4, 2, 60, 'Oui', '008');
    INSERT INTO 'GITE' VALUES (5, '12 rue Sainte Cécile', '11350', 'Padern', 6, 3, 90, 'Oui', '010');
    INSERT INTO 'GITE' VALUES (6, '10 route de Padern', '11350', 'Cucugnan', 4, 2, 60, 'Oui', '003');
    INSERT INTO 'GITE' VALUES (7, '7 rue des Artisans', '11350', 'Tuchan', 5, 2, 70, 'Oui', '001');
    INSERT INTO 'GITE' VALUES (8, '15 route de la Fontaine Vieille', '11350', 'Cucugnan', 5, 2, 75, 'Oui', '002');
    INSERT INTO 'GITE' VALUES (9, '9 rue des Remparts', '11350', 'Cucugnan', 4, 2, 60, 'Oui', '011');
    INSERT INTO 'GITE' VALUES (10, '11 rue de Saint Roch', '11350', 'Padern', 5, 2, 70, 'Oui', '004');
    INSERT INTO 'GITE' VALUES (11, '18 rue du Pont', '11350', 'Tuchan', 5, 2, 75, 'Oui', '005');
    INSERT INTO 'GITE' VALUES (12, '6 chemin de la pinède', '11350', 'Padern', 5, 2, 70, 'Oui', '007');
    INSERT INTO 'GITE' VALUES (13, '8 rue du Château', '11350', 'Padern', 5, 2, 75, 'Oui', '013');
    INSERT INTO 'GITE' VALUES (14, '44 rue San Bitou', '11350', 'Padern', 6, 3, 100, 'Oui', '006');
    INSERT INTO 'GITE' VALUES (15, '24 rue du Moulin', '11350', 'Cucugnan', 5, 2, 75, 'Oui', '014');
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table 'PROPRIO'
    -- 
     
    CREATE TABLE 'PROPRIO' (
      'CdProprio' varchar(8) NOT NULL,
      'NomProprio' varchar(30) default NULL,
      'RueProprio' varchar(50) default NULL,
      'CPProprio' varchar(5) default NULL,
      'VilleProprio' varchar(30) default NULL,
      'TelProprio' varchar(20) default NULL,
      'MelProprio' varchar(30) default NULL,
      'mot_de_passe' varchar(20) default NULL,
      PRIMARY KEY  ('CdProprio')
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
     
    -- 
    -- Contenu de la table 'PROPRIO'
    -- 
     
    INSERT INTO 'PROPRIO' VALUES ('001', 'Asch', '7 rue des Artisans', '11350', 'Tuchan', '04 68 45 41 17', 'herbert.asch@wanadoo.fr', 'gdv');
    INSERT INTO 'PROPRIO' VALUES ('002', 'Bertoumieux', '15 route de la Fontaine Vieille', '11350', 'Cucugnan', '04 68 45 03 47', 'bertoumieux@wanadoo.fr', 'gdv');
    INSERT INTO 'PROPRIO' VALUES ('003', 'Caussade', '10 route de Padern', '11350', 'Cucugnan', '04 68 45 03 59', 'jean.caussade@free.fr', 'gdv');
    INSERT INTO 'PROPRIO' VALUES ('004', 'Ivanov', '11 rue de Saint Roch', '11350', 'Padern', '04 68 45 41 52', 'todor.ivanov@free.fr', 'gdv');
    INSERT INTO 'PROPRIO' VALUES ('005', 'Legrand', '18 rue du Pont', '11350', 'Tuchan', '04 68 45 41 24', 'albert.legrand@laposte.net', 'gdv');
    INSERT INTO 'PROPRIO' VALUES ('006', 'Mulcahy', '44 rue San Bitou', '11350', 'Padern', '04 68 45 41 72', 'seamus.mulcahy@free.fr', 'gdv');
    INSERT INTO 'PROPRIO' VALUES ('007', 'Martinez', '14 chemin de Malpas', '11350', 'Cucugnan', '04 68 45 03 56', 'jean.martinez@free.fr', 'gdv');
    INSERT INTO 'PROPRIO' VALUES ('008', 'Marty', '8 passage des Jardins', '11350', 'Padern', '04 68 45 41 44', 'gilles.marty@wanadoo.fr', 'gdv');
    INSERT INTO 'PROPRIO' VALUES ('009', 'McTavish', '7 rue du Confluent', '11350', 'Padern', '04 68 45 40 74', 'mctavish@wanadoo.fr', 'gdv');
    INSERT INTO 'PROPRIO' VALUES ('010', 'Pujol', '12 rue Sainte Cécile', '11350', 'Padern', '04 68 45 41 54', 'andre.pujol@laposte.net', 'gdv');
    INSERT INTO 'PROPRIO' VALUES ('011', 'Romero', '9 rue des Remparts', '11350', 'Cucugnan', '04 68 45 03 25', 'gilles.romero@free.fr', 'gdv');
    INSERT INTO 'PROPRIO' VALUES ('012', 'Richardson', '15 chemin du Torgan', '11350', 'Padern', '04 68 45 41 18', 'richardson@free.fr', 'gdv');
    INSERT INTO 'PROPRIO' VALUES ('013', 'Sol', '8 rue du Château', '11350', 'Padern', '04 68 45 41 66', 'jean.sol@wanadoo.fr', 'gdv');
    INSERT INTO 'PROPRIO' VALUES ('014', 'Vivies', '24 rue du Moulin', '11350', 'Cucugnan', '04 68 45 03 12', 'bernard.vivies@laposte.net', 'gdv');
    INSERT INTO 'PROPRIO' VALUES ('test', 'test', 'test', 'test', 'test', 'test', 'test', 'test');
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table 'RESERVATION'
    -- 
     
    CREATE TABLE 'RESERVATION' (
      'NoRes' int(11) NOT NULL auto_increment,
      'DateResDeb' date default NULL,
      'DateResFin' date default NULL,
      'NoGite' smallint(6) default NULL,
      PRIMARY KEY  ('NoRes'),
      KEY 'NoGite' ('NoGite')
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=31 ;
     
    -- 
    -- Contenu de la table 'RESERVATION'
    -- 
     
    INSERT INTO 'RESERVATION' VALUES (1, '2008-06-02', '2008-06-16', 1);
    INSERT INTO 'RESERVATION' VALUES (2, '2008-06-02', '2008-06-09', 2);
    INSERT INTO 'RESERVATION' VALUES (3, '2008-06-02', '2008-06-16', 3);
    INSERT INTO 'RESERVATION' VALUES (4, '2008-06-02', '2008-06-09', 6);
    INSERT INTO 'RESERVATION' VALUES (5, '2008-06-02', '2008-06-09', 7);
    INSERT INTO 'RESERVATION' VALUES (6, '2008-06-02', '2008-06-16', 8);
    INSERT INTO 'RESERVATION' VALUES (7, '2008-06-02', '2008-06-09', 9);
    INSERT INTO 'RESERVATION' VALUES (8, '2008-06-02', '2008-06-09', 10);
    INSERT INTO 'RESERVATION' VALUES (9, '2008-06-02', '2008-06-09', 14);
    INSERT INTO 'RESERVATION' VALUES (10, '2008-06-02', '2008-06-09', 15);
    INSERT INTO 'RESERVATION' VALUES (11, '2008-06-09', '2008-06-16', 2);
    INSERT INTO 'RESERVATION' VALUES (12, '2008-06-09', '2008-06-16', 7);
    INSERT INTO 'RESERVATION' VALUES (13, '2008-06-09', '2008-06-16', 9);
    INSERT INTO 'RESERVATION' VALUES (14, '2008-06-09', '2008-06-16', 10);
    INSERT INTO 'RESERVATION' VALUES (15, '2008-06-09', '2008-06-16', 13);
    INSERT INTO 'RESERVATION' VALUES (16, '2008-06-09', '2008-06-16', 15);
    INSERT INTO 'RESERVATION' VALUES (17, '2008-06-16', '2008-06-23', 1);
    INSERT INTO 'RESERVATION' VALUES (18, '2008-06-16', '2008-06-30', 2);
    INSERT INTO 'RESERVATION' VALUES (19, '2008-06-16', '2008-06-23', 6);
    INSERT INTO 'RESERVATION' VALUES (20, '2008-06-16', '2008-06-23', 7);
    INSERT INTO 'RESERVATION' VALUES (21, '2008-06-16', '2008-06-30', 9);
    INSERT INTO 'RESERVATION' VALUES (22, '2008-06-16', '2008-06-30', 10);
    INSERT INTO 'RESERVATION' VALUES (23, '2008-06-16', '2008-06-23', 13);
    INSERT INTO 'RESERVATION' VALUES (24, '2008-06-16', '2008-06-23', 15);
    INSERT INTO 'RESERVATION' VALUES (25, '2008-06-23', '2008-07-06', 1);
    INSERT INTO 'RESERVATION' VALUES (26, '2008-06-23', '2008-07-06', 3);
    INSERT INTO 'RESERVATION' VALUES (27, '2008-06-23', '2008-07-13', 7);
    INSERT INTO 'RESERVATION' VALUES (28, '2008-06-23', '2008-07-06', 8);
    INSERT INTO 'RESERVATION' VALUES (29, '2008-06-23', '2008-06-30', 14);
    INSERT INTO 'RESERVATION' VALUES (30, '2008-06-23', '2008-06-30', 15);
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table 'SAISON'
    -- 
     
    CREATE TABLE 'SAISON' (
      'CdSaison' varchar(1) NOT NULL,
      'LibSaison' varchar(10) default NULL,
      PRIMARY KEY  ('CdSaison')
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
     
    -- 
    -- Contenu de la table 'SAISON'
    -- 
     
    INSERT INTO 'SAISON' VALUES ('1', 'Printemps');
    INSERT INTO 'SAISON' VALUES ('2', 'Eté');
    INSERT INTO 'SAISON' VALUES ('3', 'Automne');
    INSERT INTO 'SAISON' VALUES ('4', 'Hiver');
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table 'UNITE'
    -- 
     
    CREATE TABLE 'UNITE' (
      'CdUnite' varchar(1) NOT NULL,
      'LibUnite' varchar(20) default NULL,
      PRIMARY KEY  ('CdUnite')
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
     
    -- 
    -- Contenu de la table 'UNITE'
    -- 
     
    INSERT INTO 'UNITE' VALUES ('S', 'Par semaine');
    INSERT INTO 'UNITE' VALUES ('W', 'Week-end');
     
    -- 
    -- Contraintes pour les tables exportées
    -- 
     
    -- 
    -- Contraintes pour la table 'COUTER'
    -- 
    ALTER TABLE 'COUTER'
      ADD CONSTRAINT 'couter_ibfk_1' FOREIGN KEY ('NoGite') REFERENCES 'gite' ('NoGite') ON DELETE CASCADE ON UPDATE CASCADE,
      ADD CONSTRAINT 'couter_ibfk_2' FOREIGN KEY ('CdSaison') REFERENCES 'saison' ('CdSaison') ON DELETE CASCADE ON UPDATE CASCADE,
      ADD CONSTRAINT 'couter_ibfk_3' FOREIGN KEY ('CdUnite') REFERENCES 'unite' ('CdUnite') ON DELETE CASCADE ON UPDATE CASCADE;
     
    -- 
    -- Contraintes pour la table 'GITE'
    -- 
    ALTER TABLE 'GITE'
      ADD CONSTRAINT 'gite_ibfk_1' FOREIGN KEY ('CdProprio') REFERENCES 'proprio' ('CdProprio') ON DELETE CASCADE ON UPDATE CASCADE;
     
    -- 
    -- Contraintes pour la table 'RESERVATION'
    -- 
    ALTER TABLE 'RESERVATION'
      ADD CONSTRAINT 'reservation_ibfk_1' FOREIGN KEY ('NoGite') REFERENCES 'gite' ('NoGite') ON DELETE CASCADE ON UPDATE CASCADE;
    J'ai également du mal a comprendre comment faire un explode sur les GROUP_CONCAT ...

    Si quelqu'un a une idée, il ne me manque plus que cette petite chose pour finir mon projet pour mon oral

    Si vous avez besoin d'autres informations n'hésitez pas

    Bonne journée !

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Ca donne l'impression que tu essayes de faire simple en ayant une seule requête mais c'est contre-productif parce que du coup ta requête est trop complexe et ce qu'elle renvoie est un fourre-tout.
    Il serait plus clair d'alléger la requête principale et d'ajouter des requêtes simples à l'intérieur de la boucle, requêtes qui iraient chercher des informations précises par gite en prenant l'ID du gite comme paramètre, surtout quand il y a plusieurs lignes de résultat par gite, c.a.d au moins les tarifs et les réservations.
    Au passage note que group_concat() est une fonction non standard qui n'est pas très conforme à la logique de base du SQL.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 13
    Par défaut
    C'est ce que j'avais fait au début, j'avais plusieurs requêtes qui allait chercher telle ou telle information, mais un internaute m'a dit que ce serait plus simple avec une requete globale.

    Pour les Group_concat, c'est également quelqu'un qui m'a proposé cette idée, je trouvais que sa me donnais ce que je voulais, mais j'ai effectivement l'impression que c'est un fourre tout :S

    Voila une image de ce que doit me donner la requete :



    Et ainsi de suite m'afficher tous les gites...

    Sauf que la je dois rajouter les réservations, et dans le tableau pour les prix le group_concat m'affichait tout dans une cellule, donc je voulais faire un explode pour mettre les données dans différentes lignes mais je n'y arrive pas :S

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Si tu fais une jointure avec la table reservation dans ta requête principale et qu'il n'y a aucune réservation pour le gite, alors ce gite ne sortira pas du tout dans le résultat. A priori je pense que ce n'est pas ce que tu veux. Si tu le fais dans une requête séparée par contre tu n'auras pas ce problème. C'est donc aussi un argument contre la grosse requête qui renvoie tout.

    Tu es un contexte scolaire, ce qui importe aux profs c'est de voir que tu as compris les bonnes pratiques, et là avec cette requête qui présente tout dans la même ligne, je ne suis pas sûr que tes profs ne vont pas froncer les sourcils.

    Compare à ton schéma: tu as bien séparé les données, tu n'as pas tout mis dans la même table ou forçé des listes de données dans une seule colonne. Il n'y a pas de raison que tu fasses autrement pour les requêtes.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 13
    Par défaut
    Oui je suis dans un contexte scolaire, et je vais revenir aux simples requêtes comme j'avais fait avant.
    Malheureusement comme je l'avais fait avec de simples requêtes, je n'arrivais pas à tout faire afficher dans mon While...

    Je vais retrouver le code que j'avais tapé en PHP, les requêtes que j'avais saisie et le problème que cela m'affichait, si tu peux m'éclairer

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 13
    Par défaut
    Voila le code que j'avais saisi :

    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
    <?php
    $requete_description_gite_tuchan = "SELECT * FROM GITE WHERE VilleGite='Tuchan'";
    $resultat_description_gite_tuchan = mysql_query($requete_description_gite_tuchan);
     
    $requete_proprietaire_gite_tuchan = "SELECT PROPRIO.* FROM PROPRIO, GITE WHERE PROPRIO.CdProprio=GITE.CdProprio AND 	VilleGite='Tuchan' ORDER BY NoGite ASC ";
    $resultat_proprietaire_gite_tuchan = mysql_query($requete_proprietaire_gite_tuchan);
     
    $requete_prix_gite_tuchan = "SELECT COUTER.*,SAISON.LibSaison, UNITE.LibUnite FROM COUTER, GITE, UNITE, SAISON WHERE 	GITE.NoGite=COUTER.NoGite AND COUTER.CdSaison=SAISON.CdSaison AND UNITE.CdUnite=COUTER.CdUnite AND GITE.VilleGite='Tuchan' GROUP BY GITE.NoGite";
    $resultat_prix_gite_tuchan = mysql_query($requete_prix_gite_tuchan);
     
    $requete_reservation_gite_tuchan = "SELECT RESERVATION.* FROM RESERVATION, GITE WHERE RESERVATION.NoGite = GITE.NoGite AND GITE.VilleGite= 'Tuchan' GROUP BY GITE.NoGite ";
    $resultat_reservation_gite_tuchan = mysql_query($requete_reservation_gite_tuchan);
     
     
    while($description_gite_tuchan=mysql_fetch_array($resultat_description_gite_tuchan) and $proprietaire_gite_tuchan = mysql_fetch_array($resultat_proprietaire_gite_tuchan))
    	{ 
    		echo "<p>Description du Gite</p><table><tr><th> Numero du gite </th><th> Adresse du gite </th><th> Nombre de chambres </th><th> Nombre de places </th><th> Surface </th><th> Jardin </th></tr><tr><td>".$description_gite_tuchan['NoGite']."</td>";
     		echo "<td>".$description_gite_tuchan['RueGite']."</td>";
    		echo "<td>".$description_gite_tuchan['NbPlaces']."</td>";
    		echo "<td>".$description_gite_tuchan['NbChambres']."</td>";
    		echo "<td>".$description_gite_tuchan['Surface']."m<sup>2</sup></td>"; 
    		echo "<td>".$description_gite_tuchan['Jardin']."</td></tr></table>";
     
    		echo "<p>Proprietaire du Gite</p><table> <tr><th> Nom </th><th> Rue </th><th> CP </th><th> Ville </th><th> Telephone </th><th> Mel </th></tr> <tr><td>".$proprietaire_gite_tuchan['NomProprio']."</td>";
    		echo "<td>".$proprietaire_gite_tuchan['RueProprio']."</td>";
    		echo "<td>".$proprietaire_gite_tuchan['CPProprio']."</td>";
    		echo "<td>".$proprietaire_gite_tuchan['VilleProprio']."</td>";
    		echo "<td>".$proprietaire_gite_tuchan['TelProprio']."</td>";
    		echo "<td>".$proprietaire_gite_tuchan['MelProprio']."</td></tr></table>";
     
    		echo "<p>Prix du Gite</p><table><tr><th>Saison</th><th>Unit&eacute;</th><th>Prix</th></tr><tr>";	
     
    		while ($prix_gite_tuchan = mysql_fetch_array($resultat_prix_gite_tuchan))
    			{
    				echo "<td>".$prix_gite_tuchan['LibSaison']."</td>";
    				echo "<td>".$prix_gite_tuchan['LibUnite']."</td>";	
    				echo "<td>".$prix_gite_tuchan['Prix']." &euro;</td></tr>";
    			}
    		echo "</table><br />";
     
    		echo "<p>Reservation du Gite</p><table><tr><th>Numero de reservation</th><th>Debut</th><th>Fin</th></tr><tr>";	
     
    		while ($reservation_gite_tuchan = mysql_fetch_array($resultat_reservation_gite_tuchan))
    			{
    			        echo "<td>".$reservation_gite_tuchan['NoRes']."</td>";
    				echo "<td>".$reservation_gite_tuchan['DateResDeb']."</td>";	
    				echo "<td>".$reservation_gite_tuchan['DateResFin']."</td></tr></table>";
    			}
    		echo "</table><br /><hr />";
    	}
     
    ?>

    Cette instruction marche mais ne m'affiche les résultats que pour un gite ... Pour les prix et les réservations des autres gites il ne me renvoie que des tableaux vides...


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

Discussions similaires

  1. Afficher des images sous directX
    Par cyberlewis dans le forum DirectX
    Réponses: 17
    Dernier message: 12/07/2004, 12h07
  2. Réponses: 4
    Dernier message: 31/05/2004, 12h26
  3. [débutant] filtrer un fichier pour afficher des infos
    Par Valichou dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 21/04/2004, 11h44
  4. Réponses: 3
    Dernier message: 11/03/2004, 16h11
  5. [TP][MULTI-PROBLEME]Comment afficher des images pcx
    Par mikoeur dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 24/10/2002, 13h57

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