8711 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Actuellement en train de développer la partie admin d'un site pour m'exercer, je vous demande de l'aide puisque je bloque.

Voici l'interface de ma page :

http://www.hostingpics.net/viewer.php?id=150398428338Sanstitre.png

Sur celle-ci j'affiche les noms des événements présents dans ma base de données, et plus précisément dans la table "evenement". Et je souhaite maintenant afficher le nom des tournées auxquelles appartiennent ces événements. Cependant, les id des tournées sont présents dans ma table "evenement". Il existe une relation entre les tables "tournées" et "evenement".
Pour être plus précis, voici mes tables et le schéma relationnel de ma bdd :

http://www.hostingpics.net/viewer.php?id=332345Sanstitre.png

http://www.hostingpics.net/viewer.php?id=757940Sanstitre.png

http://www.hostingpics.net/viewer.php?id=358283Sanstitre.png

Et voici mon code actuel :

<table class="tableautournee">
            <thead>
                <tr>
                    <th>Nom de l'événement</th>
                    <th>Nom de la tournée</th>
                    <th>Modifier l'événement</th>
                    <th>Supprimer l'événement</th>
                </tr>
            </thead>
            <tbody>
                <?php
                    try
                    {
                        $bdd = new PDO('mysql:host=localhost;dbname=medrano2017;charset=utf8', 'root', '');
                        $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                    }
                    catch(Exception $e)
                    {
                        die('Erreur : '.$e->getMessage());
                    }
                    $reponse = $bdd->query('SELECT * FROM evenement');

                    while ($donnees = $reponse->fetch())
                    {
                        //var_dump( $donnees );
                    ?>
                <tr>
                    <td><?php echo ''.$donnees['ville_event'].'';?></td>
                    <td></td>
                    <td><a href="../ModifEvent/index.php?id=<?php echo $donnees['id_event'] ?>"><i class="fa fa-cog" aria-hidden="true"></i></a></td>
                    <td><a href="../SupprEvent/index.php?id=<?php echo $donnees['id_event'] ?>"><i class="fa fa-trash" aria-hidden="true"></i></a></td>
                </tr>  
                <?php
                    }
                    $reponse->closeCursor();
                ?>
            </tbody>
        </table>


Je ne sais pas du tout comment faire, c'est pourquoi je suis ici.
Mer beaucoup d'avance à tous ceux qui pourront m'aider !
Modifié par I--Zop--I (31 Mar 2017 - 14:28)
salut,

utilise une jointure pour avoir l'info de la tournée


SELECT * FROM evenement
join tournee using(id_tournee)


tu auras ainsi, pour chaque ligne de la table evenement, les données liées.

Pour plus d'info sur les jointures en SQL : http://sqlpro.developpez.com/cours/sqlaz/jointures/

ps : si tu n'as pas besoin de toutes les colonnes nomment simplement celle que tu utilises dans le select (à la place de l'étoile).

@+
Modifié par moogliBZH (31 Mar 2017 - 14:55)
Meilleure solution
Bonjour,

Tu peux essayer une truc comme ça :
SELECT ville_event.evenement, nom_tournee.tournee FROM evenement, tournee WHERE id_tournee.tournee=id_tournee.evenement


L'idée est de récupérer le nom de ta tournée quand il y a une correspondance dans tes identifiants.
Modifié par gandalfblanc (31 Mar 2017 - 14:59)
@Zelena : qu'est ce qui est bizarre ?

c'est la forme normalisée d'une jointure pour peu que l'on ai le même nom dans les tables.

http://sqlpro.developpez.com/cours/sqlaz/jointures/#LIII-A ou http://sqlpro.developpez.com/cours/sqlaz/jointures/#LV-A pour les récapitulatif.

using(id_tournee)
correspond à
on evenement.id_tournee = tournee .id_tournee


la syntaxe avec using est plus concise, rapide à lire et à comprendre Smiley biggrin

elle n'est malheureusement pas la première a être enseigné vu que les FK sont souvent renommées (drôle d'idée Smiley cligne ).


@+
Modifié par moogliBZH (31 Mar 2017 - 16:01)
@moogliBZH :
J'ignorais cette syntaxe, c'est pour cela qu'elle me semblait bizarre. Smiley sweatdrop

Il est vrai qu'elle est moins pesante qu'avec la clause ON... pour peu que les colonnes aient les mêmes noms. Intéressant...

Merci.

Smiley smile