Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Site Web > PHP > Systèmes complets > Créer son forum de toutes pièces > Et plus > Et encore trois autres > La liste des membres > Lecture du tutoriel

La liste des membres

Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Chapitre précédent Sommaire Chapitre suivant

Avant de faire quoi que ce soit concernant les amis, il faut dresser un aspect communautaire à votre forum en installant une liste des membres.

Cette liste est vraiment simple à réaliser, il suffit en fait de faire une requête et d'afficher les résultats dans un tableau.

On va rapidement voir comment faire ça, tout d'abord il vous faut une nouvelle page que personnellement j'ai appelé memberlist.php, on commence un peu comme sur la page voirforum.php.

Code : PHP
 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
<?php
//Cette fonction doit être appelée avant tout code html
session_start();

//On donne ensuite un titre à la page, puis on appelle notre fichier debut.php
$titre = "Liste des membres";
include("includes/debut.php");
?>
<body>
<div id="banniere"></div>
<?php
//Maintenant, on se connecte à la base de données
include("includes/identifiants.php");
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);

//A partir d'ici, on va compter le nombre de members
//pour n'afficher que les 25 premiers
$requete1 = mysql_query("SELECT COUNT(*) AS nbr FROM forum_membres");
$data1 = mysql_fetch_assoc($requete1);

$total = $data1['nbr'] +1;
$MembreParPage = 25;
$NombreDePages = ceil($total / $MembreParPage);
?>
<div id="corps_forum">
<?php
echo'<a href ="./index.php">Index du forum</a> /
<a href="./memberlist.php">Liste des membres</a>';

if (isset($_SESSION['pseudo'])) // Si le membre est connecté
{
       
        //Voici les options
        echo'<p>Vous êtes connecté en tant que
        <a href="./voirprofil.php?m='.intval($_SESSION['id']).'&action=consulter">
        '.stripslashes(htmlspecialchars($_SESSION['pseudo'])).'</a><br />
        <a href="./voirprofil.php?action=modifier">Modifier mon profil</a><br />
        <a href="./messagesprives.php">Consulter mes messages privés</a><br />
        <a href ="./deconnexion.php">Se déconnecter</a><br /></p>';

}
// Sinon, on propose de se connecter ou de s'enregistrer
else
{
        echo'<p>Vous n êtes pas connecté <br />
        <a href="./connexion.php">Se connecter</a><br />
        <a href="./register.php">Pas encore inscrit ?</a><br /></p>';
}
//Nombre de pages

if (isset($_GET['page']))
{
$page = intval($_GET['page']);
}
else
{
$page = 1;
}
//On affiche les pages 1-2-3, etc.
echo 'Page : ';
for ($i = 1 ; $i <= $NombreDePages ; $i++)
{
    if ($i == $page) //On ne met pas de lien sur la page actuelle
    {
    echo $i;
    }
    else
    {
    echo '<p>
    <a href="memberlist.php?f='.$forum.'&amp;page='.$i.'">'.$i.'</a>
    </p>';
    }
}


$premier = ($page - 1) * $MembreParPage;

//Le titre de la page
echo '<h1>Liste des membres</h1><br /><br />';
?>


Là on a tout mis en place, arriver ici il faut pouvoir proposer au visiteur de classer les membres comme il le souhaite (par pseudo, age, date de naissance...). Pour le nombre de classement et leur nature c'est à vous de voir, pour ma part j'ai uniquement mis 4 propositions, le pseudo, la date d'inscription, la date de dernière connexion et le nombre de messages :) .

Ensuite il faut également faire en sorte qu'il puisse les classer par ordre croissant ou décroissant.

Pour faire ça, j'ai utilisé deux array qui vont permettre de convertir en texte compréhensible par n'importe qui le nom des champs de la table forum_membres correspondants.
Je m'explique ( :-° ), en fait on va demander au visiteur grâce à une liste déroulante de choisir par quoi il veut trier les membres. Seulement on ne peut pas lui proposer les noms des champs brut donc on passe par un tableau qui convertit tout ça.

Le mieux est encore de regarder le code ^^ .

Code : PHP
 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
<?
//Tri

$convert_order = array('membre_pseudo', 'membre_inscrit', 'membre_post', 'membre_derniere_visite'); 
$convert_tri = array('ASC', 'DESC');
//On récupère la valeur de s
if (isset ($_POST['s'])) $sort = $convert_order[$_POST['s']];
else $sort = $convert_order[0];
//On récupère la valeur de t
if (isset ($_POST['t'])) $tri = $convert_tri[$_POST['t']];
else $tri = $convert_tri[0];

?>
<form action="memberlist.php" method="post">
<p><label for="s">Trier par : </label>

<select name="s" id="s">
<option value="0" name="0">Pseudo</option>
<option value="1" name="1">Inscription</option>
<option value="2" name="2">Messages</option>
<option value="3" name="3">Dernière visite</option>
</select>

<select name="t" id="t">
<option value="0" name="0">Croissant</option>
<option value="1" name="1">Décroissant</option>
</select>
<input type="submit" value="Trier" /></p>
</form>
<?php
//Requête

$requete2 = mysql_query('SELECT membre_id, membre_pseudo, membre_inscrit, membre_post, membre_derniere_visite, online_id
FROM forum_membres
LEFT JOIN forum_whosonline ON online_id = membre_id
ORDER BY '.$sort.', online_id '.$tri.'
LIMIT ' . $premier . ', ' . $MembreParPage .'')
or die (mysql_error());

if (mysql_num_rows($requete2) > 0)
{
?>
       <table>
       <tr>
       <th class="pseudo"><strong>Pseudo</strong></th>             
       <th class="posts"><strong>Messages</strong></th>
       <th class="inscrit"><strong>Inscrit depuis le</strong></th>
       <th class="derniere_visite"><strong>Dernière visite</strong></th>                       
       <th><strong>Connecté</strong></th>             

       </tr>
       <?php
       //On lance la boucle
       
       while ($data2 = mysql_fetch_assoc($requete2))
       {
       echo '<tr><td>
       <a href="./voirprofil.php?m='.$data2['membre_id'].'&amp;action=consulter">
       '.stripslashes(htmlspecialchars($data2['membre_pseudo'])).'</a></td>
       <td>'.$data2['membre_post'].'</td>
       <td>'.date('d/m/Y',$data2['membre_inscrit']).'</td>
       <td>'.date('d/m/Y',$data2['membre_derniere_visite']).'</td>';
       if (empty($data2['online_id'])) echo '<td>non</td>'; 
       else echo '<td>oui</td>';
       echo '</tr>';
       }
       ?>
       </table>
       <?php
}
else //S'il n'y a pas de message
{
        echo'<p>Ce forum ne contient aucun membre actuellement</p>';
}
?>
</div>
</body></html>


Et le voilà le travail, vous avez à présent une liste de membres assez sommaire mais qui a le mérite de marcher :D .

J'aimerai tout de même revenir sur la requête, vous avez remarqué que je fais une jointure sur la table forum_whosonline. En fait je cherche à récupérer l'id du membre, si elle s'y trouve c'est que le membre est connecté, sinon c'est qu'il ne l'est pas et donc la valeur de $data2['online_id'] sera NULL.
On réutilisera cette méthode dans la suite et maintenant on va pouvoir passer à la page de gestion des amis sans plus tarder!

Chapitre précédent Sommaire Chapitre suivant

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 106 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0689s (0.0534s)