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 > Messagerie privée à plusieurs participants > Le système > Les deux dernières pages > Lecture du tutoriel

Les deux dernières pages

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)
Avatar
Auteur : NL
Visualisations : 1 382

Plus d'informations Plus d'informations
Cette partie vous donnera le code minimum pour ajouter un membre à la liste des participants d'un MP, et la page pour supprimer un MP. Ces pages sont des petits plus que je vous fournis, parce qu'elles ne sont vraiment pas compliquées à coder.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire

Ajouter un participant à une conversation

Comme toujours, une petite vérification.

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?php
 
if(!empty($_GET['id_mp']))
   $id_mp = intval($_GET['id_mp']);
if(!isset($id_mp)) // Si on a pas d'id
   die('Vous n\'avez pas choisi de MP');
 
$sql = 'SELECT mps.mp_id, mp_titre, (SELECT COUNT(*) FROM mp_messages mpm WHERE mpm.mp_id = mps.mp_id) AS nb_messages
        FROM mp_sujets mps
        WHERE mps.mp_id = '.$id_mp;
$requete = mysql_query($sql) or die(mysql_error());
if(!($infos_mp = mysql_fetch_assoc($requete))
   die('Le MP n\'existe pas.');
 
?>


Pour plus de facilité, je pars du principe que tout le monde peut ajouter un membre à la liste des participants.


Avant d'afficher le formulaire pour sélectionner un pseudo, il faut voir si le nombre de participants dans la conversation n'est pas supérieur à celui de la configuration. Pour ça, on va récupérer la liste des participants - pour pouvoir vérifier ensuite si le membre que l'on va ajouter n'est pas déjà dans la liste -, les mettre dans un array et compter le nombre d'entrées.

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?php
 
$sql = 'SELECT mpp.membre_id, membre_pseudo, mpp_supprimer
        FROM mp_participants mpp
        LEFT JOIN membres m ON m.membre_id = mpp.membre_id
        WHERE mp_id = '.$id_mp.'
        ORDER BY membre_pseudo ASC';
$requete = mysql_query($sql) or die(mysql_error());
 
$liste_participants = array();
while($row = mysql_fetch_assoc($requete))
{
   $liste_participants[$row['membre_id']] = $row;
}
mysql_free_result($requete);
 
if(count($liste_participants) == $config['nb_participants_par_mp'])
   die('Vous ne pouvez pas ajouter de membres');
 
?>


Ceci étant fait, on peut préparer notre page. Si on a proposé un membre, on insère, sinon on affiche le formulaire :

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
 
if(isset($_POST['envoyer']) AND trim($_POST['pseudo']) AND !empty($_POST['pseudo']))
{
   // Insertion
}
 
else
{
 
?>
 
<form method="post" action="ajouter_membre.php">
   <fieldset>
      <label for="pseudo">Pseudo</label>
      <input type="text" name="pseudo" id="pseudo" tabindex="1" /><br /><br />
      <input type="submit" name="envoyer" value="Envoyer" tabindex="2" />
   </fieldset>
</form>
 
<?php } ?>


Et maintenant, on va insérer.
C'est simple, on a que deux vérifications à faire : si le membre existe et peut avoir une nouvelle conversation, et si le membre n'est pas déjà dans la liste des participants.

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?php
 
if(isset($_POST['envoyer']) AND trim($_POST['pseudo']) AND !empty($_POST['pseudo']))
{
   $sql = 'SELECT m.membre_id FROM membres m WHERE m.membre_pseudo = "'.mysql_real_escape_string($HTTP_POST_VARS['pseudo']).'" AND (SELECT COUNT(*) FROM mp_participants WHERE mp_participants.membre_id = m.membre_id) < '.$config['nb_max_mp'];
   $requete = mysql_query($sql) or die(mysql_error());
   
   if($row = mysql_fetch_assoc($requete) AND !array_key_exists($row['membre_id'], $liste_participants)) // Si le membre existe et s'il n'est pas dans les clés du tableau
   {
      $sql = 'INSERT INTO mp_participants (mp_id, membre_id) VALUES ('.$id_mp.', '.$row['membre_id'].')';
      mysql_query($sql) or die(mysql_error());
   }
}
 
?>


Et voilà. Très très rapide comme je vous l'avais dit.

Supprimer un MP

Il ne faut pas oublier de faire les vérifications habituelles. Mais, cette fois-ci, on récupère aussi le nombre de participants et le nombre de participants qui ont supprimé la conversation.

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?php
 
if(!empty($_GET['id_mp']))
   $id_mp = intval($_GET['id_mp']);
if(!isset($id_mp)) // Si on a pas d'id
   die('Vous n\'avez pas choisi de MP');
 
$sql = 'SELECT mps.mp_id, mp_titre, (SELECT COUNT(*) FROM mp_messages mpm WHERE mpm.mp_id = mps.mp_id) AS nb_messages, (SELECT COUNT(*) FROM mp_participants mpp WHERE mpp.mp_id = mps.mp_id AND mpp.mpp_supprimer = 1) AS nb_supprimer, (SELECT COUNT(*) FROM mp_participants mpp2 WHERE mpp2.mp_id = mps.mp_id) AS nb_participants
        FROM mp_sujets mps
        WHERE mps.mp_id = '.$id_mp;
$requete = mysql_query($sql) or die(mysql_error());
if(!($infos_mp = mysql_fetch_assoc($requete))
   die('Le MP n\'existe pas.');
 
?>


Pour supprimer, c'est très facile, mais il y a une nouvelle condition. Si le nombre de personnes qui ont supprimé la conversation + 1 (le membre actuel) est égal au nombre total de participants, on supprime toutes les informations de toutes les tables. Sinon, on fait juste un UPDATE.

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
<?php
 
if($infos_mp['nb_participants'] == ($infos_mp['nb_supprimer'] + 1))
{
   $sql = 'DELETE t1, t2, t3, t4 
      FROM mp_participants AS t1
      LEFT JOIN mp_sujets AS t2 ON t2.mp_id = t1.mp_id
      LEFT JOIN mp_messages AS t3 ON t3.mp_id = t1.mp_id
      WHERE t1.mp_id = '.$id_mp;
   mysql_query($sql) or die(mysql_error());
}
 
else
{
   $sql = 'UPDATE mp_participants SET mpp_supprimer = 1 WHERE membre_id = '.$id_membre;
   mysql_query($sql) or die(mysql_error());
}
 
?>


Pour le DELETE, on peut utiliser les jointures pour joindre toutes les tables et supprimer toutes les données dont le WHERE est vérifié.

Pour le DELETE sur plusieurs tables, on peut le faire de cette façon :
DELETE t1, t2 FROM t1, t2 WHERE ...

Dans ce cas-là, seules les lignes correspondantes dans les tables t1 et t2 sont supprimées.


N'hésitez pas à lire la doc pour bien comprendre.

Et voilà, c'est fini. :) Finalement c'était plutôt simple. :D
Chapitre précédent Sommaire
Retour en haut Retour en haut


Créé : le 08/09/2007 à 08:04:36
Modifié : le 22/08/2008 à 15:52:18
Avancement : 100%
Licence : Copie non autorisée

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 438 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0452s (0.0235s)