Bonjour,
Je vais essayer d'être claire et me faire comprendre :-)
Pour une centrale de mobilité, je dois créer un site internet permettant aux internautes de retrouver tous les moyens de transports alternatifs aux transports en commun dans leur commune.
J'ai donc une table "communes", une table "catégorie" (pour le type de transport) et une table "service" avec tous le descriptif du service.
Sur ma page d'accueil, j'ai un formulaire demandant aux gens de sélectionner leur commune et le type de transports souhaité (personne à mobilité réduite, taxi, ...).
Après avoir sélectionné les deux informations, on affiche tous les services relatifs au type de transport et à la commune souhaitée :
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 <h3>2. Rechercher une solution de mobilité alternative dans ma commune :</h3> <form action="communes.php" method="POST"> <?php // communes $reponse = $bdd->query("SELECT * FROM communes ORDER BY commune ASC;"); ?> <select value="id_communes" name="id_communes" type="text" class="form-control"> <?php while ($donnees = $reponse->fetch()) { echo '<option value="'.$donnees['id'].'">'.$donnees['commune'].'</option>'; } $reponse->closeCursor(); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); ?> ?> </select><br> <h3>3. De quel type de transport adapté avez-vous besoin ? </h3> <?php // categories $reponse = $bdd->query("SELECT * FROM categories ORDER BY id;"); ?> <select value="id_categories" name="id_categories" type="text" class="form-control"> <?php while ($donnees = $reponse->fetch()) { echo '<option value="'.$donnees['id'].'">'.$donnees['categorie'].'</option>'; ?> <?php } $reponse->closeCursor(); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); ?> </select> <br> <input type="submit" value="Rechercher" class="btnrouge"/> </form>
Tout ceci fonctionne, mon problème, le voici : les services de transport peuvent se retrouver dans plusieurs communes et plusieurs catégories. Je pense qu'on ne peut pas mettre plusieurs valeurs dans un champ, je ne peux donc pas mettre dans "id_communes", 1,3,5 pour faire le lien avec la table commune et c'est là que je cale.
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 <?php // 1- requête $sql = "SELECT S.*, C.*, T.* FROM services S INNER JOIN communes C ON S.id_communes = C.id INNER JOIN categories T ON S.id_categories = T.id WHERE S.id_communes = :id_communes AND S.id_categories = :id_categories "; // 2- Préparation de la requête $reponse = $bdd->prepare( $sql ); // 3- Exécution, avec passage des paramètres externes $reponse->execute(array( ':id_communes' => $_POST["id_communes"], ':id_categories' => $_POST["id_categories"] )); while ($donnees = $reponse->fetch()) {?> <div class="col-lg-12"> <div class="pricing-box-alt"> <div class="pricing-heading"> <div class="col-lg-4"> <img src="img/logos/<?php echo nl2br($donnees['logo']);?>" style="width : 160px;"/> </div> <div class="col-lg-8"> <h4 class=""><?php echo ($donnees['nom']);?></h4> <p><?php echo nl2br($donnees['motif_de_transport']);?><br> <p class="beneficiaires"><strong>Bénéficiaires : </strong><?php echo nl2br($donnees['beneficiaires']);?></p><br><br> </div> <div class="pricing-action"> <a href="service.php?idservice=<?php echo $donnees['idservice']; ?>" class="btnrouge"><i class="icon-bolt"></i> Plus d'informations sur ce service</a> </div></div> </div> </div> <?php } $reponse->closeCursor(); ?>
Voici comment mes tables sont formées:
communes : id, commune
categories : id, catégorie
services : idservice (primary key), id_communes, id_categories, nom, type_de_service, etc.
Pouvez-vous m'aider ? Je suis sûr que ça ne doit pas être compliqué mais je ne sais pas par où commencer.
Merci
Partager