Compter le nombre de messages
jobouille
Messages postés
286
Date d'inscription
Statut
Membre
Dernière intervention
-
jobouille Messages postés 286 Date d'inscription Statut Membre Dernière intervention -
jobouille Messages postés 286 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous !
Sur mon site j'ai créer un système de message privé.
Voici le code qui affiche le ou les messages que l'on reçoit :
La variable $allmsg avec le while permet d'afficher TOUS les messages de la table message_prive.
Avec le if qui suit, j'affiche que les messages où le destinataire est égal au pseudo du compte.
Je doute que ce soit la meilleure façon mais ça fonctionne.
Le problème étant que : si la personne à un ou plusieurs messages, dans ce cas ces messages sont affichés. Mais si il n'a pas de messages j'aurais aimé qu'un texte s'affiche : Vous n'avez aucun nouveau message.
Je ne sais pas du tout comment m'y prendre. Peut être avec un compteur qui compte le nombre de ligne de la table message_prive où destinataire == pseudo.
J'espère avoir été clair.
Merci et bonne journée
Sur mon site j'ai créer un système de message privé.
Voici le code qui affiche le ou les messages que l'on reçoit :
<?php $allmsg = $bdd->query('SELECT * FROM mp ORDER BY id DESC LIMIT 0, 20'); while($msg = $allmsg->fetch()) { if($msg['destinataire'] == $user['pseudo']) { ?> <!--===========================--> ICI S'AFFICHE LE OU LES MESSAGES <!--===========================--> <?php } } ?>
La variable $allmsg avec le while permet d'afficher TOUS les messages de la table message_prive.
Avec le if qui suit, j'affiche que les messages où le destinataire est égal au pseudo du compte.
Je doute que ce soit la meilleure façon mais ça fonctionne.
Le problème étant que : si la personne à un ou plusieurs messages, dans ce cas ces messages sont affichés. Mais si il n'a pas de messages j'aurais aimé qu'un texte s'affiche : Vous n'avez aucun nouveau message.
Je ne sais pas du tout comment m'y prendre. Peut être avec un compteur qui compte le nombre de ligne de la table message_prive où destinataire == pseudo.
J'espère avoir été clair.
Merci et bonne journée
A voir également:
- Compter le nombre de messages
- Comment savoir si quelqu'un lit mes messages sur whatsapp - Accueil - Messagerie instantanée
- Comment récupérer les messages supprimés sur whatsapp - Guide
- Nombre de jours entre deux dates excel - Guide
- Messages supprimés whatsapp - Guide
- Compter le nombre de cellule de couleur excel 2016 - Guide
1 réponse
Bonjour,
Voici le code corrigé et amélioré :
Comme tu peux le voir.. je suis passé par une requête préparée (plus sûr ) pour ne prendre que les messages du user
et un fetchAll .. pour mettre le résultat dans un ARRAY plus simple à manipuler par la suite qu'un WHILE..
Voici le code corrigé et amélioré :
$user = !empty($user['pseudo'])?$user['pseudo']:NULL; if($user){ $sql = "SELECT * FROM mp WHERE destinataire = :user ORDER BY id DESC LIMIT 0, 20"; $params = array(":user"=> $user); try{ $req = $bdd->prepare($sql); $req->execute($params); // On stocke le résultat de la requête dans un array $allmsg = $req->fetchAll(); //Nombre de résultats retournés par la requête $nbResultats = count($allmsg); }catch(PDOException $e) { // En cas d'erreur dans la requête echo "<br><b>Erreur dans la requête: </b><br>".$e->getMessage(); } if($nbResultats>0){ //On boucle sur les messages pour es afficher foreach($allmsg as $Msg){ //ICI S'AFFICHE LE OU LES MESSAGES } }else{ echo "<br>Aucun message."; } }else{ //aucun USER echo "<br> Aucun USER dans la variable user['pseudo'] "; }
Comme tu peux le voir.. je suis passé par une requête préparée (plus sûr ) pour ne prendre que les messages du user
et un fetchAll .. pour mettre le résultat dans un ARRAY plus simple à manipuler par la suite qu'un WHILE..
Merci beaucoup ! :)
Sur une autre page je dois afficher toutes les offres (d'un marché).
J'ai essayé d'adapter la méthode que vous m'avez donné pour ceci mais ça n'a pas fonctionner.
Voici le code :
Les 2 if en dessous du while sont obligatoires pour mon code.
Le but étant d'afficher une fois de plus le message "aucune offre" s'il n'y a rien.
Encore merci :)