Bonjour,
Je fais actuellement un forum et j'ai besoin de faire une jointure pour récupérer le pseudo de l'auteur de la création du topic et le pseudo de l'auteur du dernier post ! Je sais faire des jointures très basic mais là rien à faire, je ne sais même pas quelle jointure choisir.
Voici un aperçu d'un salon de mon forum :
Je veux remplacer l'id membre 3 par le pseudo (username).
voici les tables de mon forum + la table users pour les membres.
Code sql : 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 -- -- Structure de la table `forum_groupes` -- CREATE TABLE IF NOT EXISTS `forum_groupes` ( `idgrp` tinyint(2) NOT NULL AUTO_INCREMENT, `titre` varchar(55) NOT NULL, `ordre` tinyint(2) NOT NULL, PRIMARY KEY (`idgrp`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Structure de la table `forum_messages` -- CREATE TABLE IF NOT EXISTS `forum_messages` ( `idmsg` smallint(5) NOT NULL AUTO_INCREMENT, `idsujet` smallint(5) NOT NULL, `message` text NOT NULL, `idmbr` int(10) NOT NULL, `dateheure` datetime NOT NULL, PRIMARY KEY (`idmsg`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Structure de la table `forum_salons` -- CREATE TABLE IF NOT EXISTS `forum_salons` ( `idsalon` tinyint(2) NOT NULL AUTO_INCREMENT, `titre` varchar(55) NOT NULL, `description` varchar(255) NOT NULL, `idgrp` tinyint(2) NOT NULL, `ordre` tinyint(2) NOT NULL, `etat` tinyint(1) NOT NULL, PRIMARY KEY (`idsalon`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Structure de la table `forum_sujets` -- CREATE TABLE IF NOT EXISTS `forum_sujets` ( `idsujet` smallint(5) NOT NULL AUTO_INCREMENT, `sujet` varchar(60) NOT NULL, `idsalon` smallint(5) NOT NULL, `idmbr` int(10) NOT NULL, `idmbr_dernier` int(10) NOT NULL, `derniermsg` datetime NOT NULL, `etat` tinyint(1) NOT NULL, PRIMARY KEY (`idsujet`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Structure de la table `users` -- CREATE TABLE IF NOT EXISTS `users` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `username` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, `password` varchar(60) NOT NULL, `remember_token` varchar(255) DEFAULT NULL, `confirmation_token` varchar(255) DEFAULT NULL, `confirmed_at` datetime DEFAULT NULL, `reset_token` varchar(255) DEFAULT NULL, `reset_at` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
Maintenant voici le code de la page qui affiche les sujets (topics).
d'autre part, si vous avez des suggestions sur mon code etc, je prends !
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 <?php require '../../inc/functions.php'; require_once '../../inc/db.php'; $idsalon = (int) $_GET['idsalon']; require '../../inc/header.php'; ?> <h1>Forum</h1> <?php // Si le visiteur est connecté alors je lui propose un bouton pour créer un nouveau sujet (topic). if(session_status() == PHP_SESSION_NONE){ session_start(); } if(!isset($_SESSION['auth'])){ echo "<p>Vous n'êtes pas connecté</p>"; }else{ echo "<p><a class='btn btn-primary' href='nouveau.php?idsalon=$idsalon' role='button'>Nouveau</a></p>"; } ?> <?php $reponse = $pdo->prepare('SELECT idsujet, sujet, idmbr, idmbr_dernier, derniermsg, etat FROM forum_sujets WHERE idsalon = ? AND etat != 0 ORDER BY etat, derniermsg'); $reponse->execute(array($idsalon)); if ($reponse->rowCount()>0) { ?> <table class="table table-striped"> <tr> <td></td> <td>Sujet</td> <td>Rép.</td> <td>Dernier message</td> </tr> <?php while ($donnees = $reponse->fetch()) { switch ($donnees->etat) { case 1 : $etat = "<img class=\"media-object\" src=\"../../ornements/forum/topic_read.gif\" alt=\"Actif\">"; break; case 2 : $etat = "<img class=\"media-object\" src=\"../../ornements/forum/topic_read_locked.gif\" alt=\"Vérouillé\">"; break; } ?> <tr> <td><?php echo $etat; ?></td> <td><a href="sujet.php?idsujet=<?php echo $donnees->idsujet; ?>"><?php echo $donnees->sujet; ?></a> <small>par <?php echo $donnees->idmbr; ?></small></td> <td>0</td> <td><?php echo $donnees->derniermsg; ?> <small>par <?php echo $donnees->idmbr_dernier; ?></small></td> </tr> <?php } ?> </table> <?php } else // S'il n'y a pas de message { echo'<p>Ce forum ne contient aucun sujet actuellement</p>'; } $reponse->CloseCursor(); ?> <?php require '../../inc/footer.php'; ?>
merci à vous.
Partager