Problème affichage info bulle messages
Zakarya93
Messages postés
984
Date d'inscription
Statut
Membre
Dernière intervention
-
Zakarya93 Messages postés 984 Date d'inscription Statut Membre Dernière intervention -
Zakarya93 Messages postés 984 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'aimerai que une info bulle apparaisse sur mon onglet "messages" et que par la suite, lorsque une personne a cliqué sur l'onglet message sur laquelle il y avait une info bulle, elle s'efface après que l'utilisateur aie vu l'invitation, qu'est ce quii cloche sur ma function ?
Menu.php :
Merci d'avance :)
J'aimerai que une info bulle apparaisse sur mon onglet "messages" et que par la suite, lorsque une personne a cliqué sur l'onglet message sur laquelle il y avait une info bulle, elle s'efface après que l'utilisateur aie vu l'invitation, qu'est ce quii cloche sur ma function ?
*la function qui va nous permettre d'afficher l'info-bulle des messages */ function afficher_ibi_messages(){ global $bdd; $result=0; //Variables $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if($pseudo_session){ $sql = "SELECT COUNT(id_conversation) as NB FROM conversations WHERE pseudo_dest=:pseudo_session OR (pseudo_exp=:pseudo_session > date_vue) "; // je place les params dans une variable avant de l'utiliser : $params = array(':pseudo_session' => $pseudo_session); try{ $query = $bdd->prepare($sql); $query ->execute($params); $req= $query->fetchall(); $result= count($req)>0 ? $req[0]['NB']:0; }catch(Exception $e) { echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } } // Fin du if($pseudo_session) // le return return $result; }
Menu.php :
<?php // Fichier menu.php $nombre_membre = nombre_membre(); $nb_membre = ($nombre_membre > 1) ? $nombre_membre ." membres" : $nombre_membre ." membre"; ?> <div class='menu'> <ul> <li><a href="index.php?page=membre">Accueil</a></li> <li><a href="index.php?page=update">Changer vos informations</a></li> <li><a href="index.php?page=liste_membre">les membres</a></li> <li><a href="index.php?page=amis">Vos amis</a></li> <li> <a href="index.php?page=invitations">Invitations</a> <?php if(!function_exists('afficher_ibi_invitations')){ echo "<br> Erreur : La fonction afficher_ibi_invitations() n'existe pas !"; }else{ $ibi = afficher_ibi_invitations(); if($ibi !== '0') { //echo "<div class='ibi_invitations'> echo "<p class='ibi_invitations'>".$ibi."</p>"; // </div>"; } }?> </li> <li> <a href="index.php?page=conversations">Messages</a> <?php if(!function_exists('afficher_ibi_messages')){ echo "<br> Erreur : La fonction afficher_ibi_messages() n'existe pas !"; }else{ $ibi = afficher_ibi_messages(); if($ibi != '0') { //echo "<div class='ibi_messages'>".$ibi."</div>"; echo $ibi; } } ?> </li> <li class="nbr"><?php echo $nb_membre;?></li> </ul> </div>
Merci d'avance :)
A voir également:
- Problème affichage info bulle messages
- Crystal disk info - Télécharger - Informations & Diagnostic
- Info pc - Guide
- 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
- Messages supprimés whatsapp - Guide
26 réponses
Et à quelle moment mets tu à jour la date_vue de tes messages ??
Tu n'as pas une fonction update_date_vue ??
Tu n'as pas une fonction update_date_vue ??
Il semble que je ne recois pas les messages :'( j'ai effectué un test et le recepteur ne recoit rien :/ j
Et quel est le code qui te permet de "recevoir" les messages ??
<?php //la function qui va recuperer les conversations function recup_conversation() { global $bdd; // déclaration globale de BDD $pseudo_dest = isset($_SESSION['pseudo'])?$_SESSION['pseudo'] : NULL; $sql = "SELECT conversations.id, conversations.sujet, utilisateurs.pseudo, utilisateurs.avatar, conversations_messages.date_message FROM conversations LEFT JOIN conversations_messages ON conversations.id = conversations_messages.id INNER JOIN conversations_membres ON conversations.id = conversations_membres.id INNER JOIN utilisateurs ON utilisateurs.pseudo = conversations_messages.pseudo_exp WHERE pseudo_dest = :pseudo_dest GROUP BY conversations.id ORDER BY conversations_messages.date_message DESC"; $params = array(':pseudo_dest' =>$pseudo_dest); try{ $req = $bdd->prepare($sql); $req->execute($params); $resultat = $req->fetchall(); }catch(Exception $e) { echo "<br>".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } return $resultat; } ?>
Je croyais t'avoir donné la bonne requête tout à l'heure...
SELECT C.id ,C.sujet ,U.pseudo ,U.avatar ,CM.* FROM conversations_messages CM LEFT JOIN conversations C ON C.id=CM.id_conversation LEFT JOIN conversations_membres M ON C.id = M.id_conversation LEFT JOIN utilisateurs U ON U.pseudo = CM.pseudo_exp WHERE M.pseudo_dest = 'jean' ORDER BY CM.date_message DESC;
Je viens donc de tester la requête avec tes nouvelles données... et ça marche !
Que donne ceci directement dans phpMyadmin ??
Que donne ceci directement dans phpMyadmin ??
SELECT C.id ,C.sujet ,U.pseudo ,U.avatar ,CM.* ,M.* FROM conversations_messages CM LEFT JOIN conversations C ON C.id=CM.id_conversation LEFT JOIN conversations_membres M ON C.id = M.id_conversation LEFT JOIN utilisateurs U ON U.pseudo = CM.pseudo_exp WHERE M.pseudo_dest = 'xzak47' ORDER BY CM.date_message DESC;
<?php //récupération des messages function recup_message() { global $bdd; $sql= "SELECT C.id ,C.sujet ,U.pseudo ,U.avatar ,CM.* ,M.* FROM conversations_messages CM LEFT JOIN conversations C ON C.id=CM.id_conversation LEFT JOIN conversations_membres M ON C.id = M.id_conversation LEFT JOIN utilisateurs U ON U.pseudo = CM.pseudo_exp WHERE M.pseudo_dest = :pseudo_dest ORDER BY CM.date_message DESC"; try{ $reponse= $bdd->prepare($sql); $params=array(':id' =>$_GET['id'], ':pseudo_dest' => $_SESSION['pseudo']); $reponse->execute($params); $messages=$reponse->fetchall(); } catch(Exception $e){ die('Erreur : '.$e->getMessage()); $messages=NULL; } return $messages; } ?>
c'est normal qu'il n'affiche pas les messages antérieurs mais que ceux que j'envoie apres la modification ?
j'ai tout effacé dans ma bdd et j'ai refais un test mais je ne recois rien, code :
ou placer mon "date_creation" (quel code ?) qui a son compteur a zéro ? (il est dans la table conversations)
j'ai tout effacé dans ma bdd et j'ai refais un test mais je ne recois rien, code :
<?php //récupération des messages function recup_message() { global $bdd; $sql= "SELECT C.id ,C.sujet ,U.pseudo ,U.avatar ,CM.* ,M.* FROM conversations_messages CM LEFT JOIN conversations C ON C.id=CM.id_conversation LEFT JOIN conversations_membres M ON C.id = M.id_conversation LEFT JOIN utilisateurs U ON U.pseudo = CM.pseudo_exp WHERE M.pseudo_dest = :pseudo_dest ORDER BY CM.date_message DESC"; try{ $reponse= $bdd->prepare($sql); $params=array(':pseudo_dest' => $_SESSION['pseudo']); $reponse->execute($params); $messages=$reponse->fetchall(); } catch(Exception $e){ die('Erreur : '.$e->getMessage()); $messages=NULL; } return $messages; } ?>
ou placer mon "date_creation" (quel code ?) qui a son compteur a zéro ? (il est dans la table conversations)
function add_conversation($sujet=NULL){ global $bdd; $now = date('Y-m-d H:i:s') ; $sql = "INSERT INTO conversations (sujet,date_creation) VALUES(:sujet,:date_creation)"; $params = array(":sujet"=>$sujet, ":date_creation"=>$now); //On prepare l'insertion try{ $prepare = $bdd->prepare($sql); $prepare->execute($params); //récupère l'ID créé par l'insertion en BDD $id = $bdd->lastInsertId(); }catch(Exception $e) { echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } return $id; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le date_creation marche bien maintenant, mais je ne recois toujours pas les messages :/
message.func.php :
Conversation.func.php
<?php //récupération des messages function recup_message() { global $bdd; $sql= "SELECT C.id ,C.sujet ,U.pseudo ,U.avatar ,CM.* ,M.* FROM conversations_messages CM LEFT JOIN conversations C ON C.id=CM.id_conversation LEFT JOIN conversations_membres M ON C.id = M.id_conversation LEFT JOIN utilisateurs U ON U.pseudo = CM.pseudo_exp WHERE M.pseudo_dest = :pseudo_dest ORDER BY CM.date_message DESC"; try{ $reponse= $bdd->prepare($sql); $params=array(':pseudo_dest' => $_SESSION['pseudo']); $reponse->execute($params); $messages=$reponse->fetchall(); } catch(Exception $e){ die('Erreur : '.$e->getMessage()); $messages=NULL; } return $messages; } ?>
Conversation.func.php
<?php //la function qui va recuperer les conversations function recup_conversation() { global $bdd; // déclaration globale de BDD $pseudo_dest = isset($_SESSION['pseudo'])?$_SESSION['pseudo'] : NULL; $sql = "SELECT conversations.id, conversations.sujet, utilisateurs.pseudo, utilisateurs.avatar, conversations_messages.date_message FROM conversations LEFT JOIN conversations_messages ON conversations.id = conversations_messages.id INNER JOIN conversations_membres ON conversations.id = conversations_membres.id INNER JOIN utilisateurs ON utilisateurs.pseudo = conversations_messages.pseudo_exp WHERE pseudo_dest = :pseudo_dest GROUP BY conversations.id ORDER BY conversations_messages.date_message DESC"; $params = array(':pseudo_dest' =>$pseudo_dest); try{ $req = $bdd->prepare($sql); $req->execute($params); $resultat = $req->fetchall(); }catch(Exception $e) { echo "<br>".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } return $resultat; } ?>
<?php include('functions/membre.func.php'); include('body/header.php'); include('body/menu.php'); ?> <h3>Les conversations</h3> <?php $conversations = recup_conversation(); if($conversations == true) { foreach($conversations as $conversation) { ?> <div class='conversation'> <a href="index.php?page=profile&pseudo=<?php echo $conversation['pseudo']; ?>"><?php echo $conversation['pseudo']; ?></a><br /> <IMG src='avatar/<?php echo $conversation['avatar']; ?>' height='70' width='70'></IMG> <p><a href="index.php?page=message&id=<?php echo $conversation['id'] ?>"> <?php echo $conversation['sujet']; ?></a></p> <p>Posté le : <?php echo $conversation['date_message']; ?></p> <p><a href="index.php?page=conversations&id=<?php echo $conversation['id']; ?>">Supprimer le message</a></p> </div> <?php } }else{ ?> <div class'error'>Vous n'avez pas de message</div> <?php } ?>
Donc visiblement... dans cette page.. tu ne fais que récupérer les Conversations... pas les messages ....
Commence donc par faire un peu de debug pour voir ce que te remontes tes variables ...
par exemple :
Et puis.. ta fonction recup_conversation() ... elle ne retourne pas TRUE ou FALSE .. elle retourne un ARRAY contenant la liste des conversations !
Donc ton IF est à modifier comme ceci :
Commence donc par faire un peu de debug pour voir ce que te remontes tes variables ...
par exemple :
$conversations = recup_conversation(); print_r($conversations);
Et puis.. ta fonction recup_conversation() ... elle ne retourne pas TRUE ou FALSE .. elle retourne un ARRAY contenant la liste des conversations !
Donc ton IF est à modifier comme ceci :
if(count($conversations)>0) { foreach($conversations as $conversation) { ?> <div class='conversation'> <a href="index.php?page=profile&pseudo=<?php echo $conversation['pseudo']; ?>"><?php echo $conversation['pseudo']; ?></a><br /> <IMG src='avatar/<?php echo $conversation['avatar']; ?>' height='70' width='70'></IMG> <p><a href="index.php?page=message&id=<?php echo $conversation['id'] ?>"> <?php echo $conversation['sujet']; ?></a></p> <p>Posté le : <?php echo $conversation['date_message']; ?></p> <p><a href="index.php?page=conversations&id=<?php echo $conversation['id']; ?>">Supprimer le message</a></p> </div> <?php } } else { echo " <div class'error'>Vous n'avez pas de message</div>"; } ?>
Revenons à l'info bulle des messages, nous parlions de quoi au juste ? :)
ibi.func.php :
Menu.php :
/** *la function qui va nous permettre d'afficher l'info-bulle des messages */ function afficher_ibi_messages(){ global $bdd; $result=0; //Variables $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if($pseudo_session){ $sql = "SELECT COUNT(id_conversation) as NB FROM conversations_messages WHERE (date_vue = '0000-00-00 00:00:00' OR date_confirmation < date_vue ) AND pseudo_dest= :pseudo_session "; // je place les params dans une variable avant de l'utiliser : $params = array(':pseudo_session' => $pseudo_session); try{ $query = $bdd->prepare($sql); $query ->execute($params); $req= $query->fetchall(); $result= count($req)>0 ? $req[0]['NB']:0; }catch(Exception $e) { echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } } // Fin du if($pseudo_session) // le return return $result; }
Menu.php :
<?php // Fichier menu.php $nombre_membre = nombre_membre(); $nb_membre = ($nombre_membre > 1) ? $nombre_membre ." membres" : $nombre_membre ." membre"; ?> <div class='menu'> <ul> <li><a href="index.php?page=membre">Accueil</a></li> <li><a href="index.php?page=update">Changer vos informations</a></li> <li><a href="index.php?page=liste_membre">les membres</a></li> <li><a href="index.php?page=amis">Vos amis</a></li> <li> <a href="index.php?page=invitations">Invitations</a> <?php if(!function_exists('afficher_ibi_invitations')){ echo "<br> Erreur : La fonction afficher_ibi_invitations() n'existe pas !"; }else{ $ibi = afficher_ibi_invitations(); if($ibi !== '0') { //echo "<div class='ibi_invitations'> echo "<p class='ibi_invitations'>".$ibi."</p>"; // </div>"; } }?> </li> <li> <a href="index.php?page=conversations">Messages</a> <?php if(!function_exists('afficher_ibi_messages')){ echo "<br> Erreur : La fonction afficher_ibi_messages() n'existe pas !"; }else{ $ibi = afficher_ibi_messages(); if($ibi != '0') { //echo "<div class='ibi_messages'>".$ibi."</div>"; echo $ibi; } } ?> </li> <li class="nbr"><?php echo $nb_membre;?></li> </ul> </div>
correction du css :
Quand tu dis : "il ne s'affiche pas" ... de quoi parles tu ?
Quelle est le bout de code qui est censé afficher ce machin ? ( et uniquement les quelques lignes de codes qui gèrent cet affichage... pas le code complet de ta page !!! )
sinon je cherche à afficher l'info bulle des messages; voici sa fonction :
la requete me donne : MySQL a retourné un résultat vide (aucune ligne). (Traitement en 0.0010 sec)