Problème affichage info bulle messages

Zakarya93 Messages postés 1026 Statut Membre -  
Zakarya93 Messages postés 1026 Statut Membre -
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 ?

*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 :)

26 réponses

  • 1
  • 2
Résumé de la discussion

Le problème porte sur l’affichage d’une info-bulle dans l’onglet Messages et sur la fonction afficher_ibi_messages, censée compter les conversations pertinentes pour activer un badge de notification. Des réponses indiquent que la requête SQL utilise une balise HTML (&gt;) au lieu du signe supérieur, ce qui peut rendre la requête invalide et empêcher l’affichage de l’info-bulle. D’autres conseils portent sur le nommage et le binding des paramètres, en particulier le paramètre pseudo_session dans l’array $params et la correspondance avec les placeholders de la requête. Enfin, une remarque utile propose de remplacer l’entité HTML par le caractère > dans la chaîne SQL et de vérifier le binding des paramètres afin que le compte NB renvoie une valeur exploitable.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Déjà ....
    regardes ta requête ... elle est fausse :
     $sql = "SELECT COUNT(id_conversation) as NB
             FROM conversations
             WHERE pseudo_dest=:pseudo_session
          OR (pseudo_exp=:pseudo_session > date_vue) ";
    
    


    Que vient faire ce " > date_vue" .. tout seul ???

    Ensuite.... as tu une fonction qui met à jour ta date vue pour les messages ? (comme pour les invitations en fait ..) ??
    Si oui.. montres nous son code !

    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      c bon comme ceci ?
      *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_invitation) as NB
               FROM amis 
               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;
      }


      pour le update_date_vue :
      //la function qui va nous permettre de mettre à jour la date_vue dans la bdd pour pouvoir cacher l'info-bulle 
      */
      function update_date_vue(){
       global $bdd;
        //récupération des variables PROPREMENT !
        $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
       if( $pseudo_session){
        $sql = "UPDATE amis
                   SET date_vue=NOW()
                   WHERE pseudo_dest = :session_pseudo";
      
        // je place les  params dans une variable avant de l'utiliser :
        $params = array(':session_pseudo' =>  $pseudo_session);
        try{ 
         $query = $bdd->prepare($sql);
         $query ->execute($params);  
       }catch(Exception $e) {
           echo "<br>ERREUR ! ".$e->getMessage()."<br>";
           echo "<br>params : <br>";
           print_r($params);
         }
       }
      }
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Quels sont les champs de ta table qui contient les messages ?
      Es tu sûr que c'est la table amis ???
      0
    3. Zakarya93 Messages postés 1026 Statut Membre 10
       
      ah non c'est la table conversations_messages !
      0
    4. Zakarya93 Messages postés 1026 Statut Membre 10
       
      mais avant j'aimerai afficher avant de passer au date_vue ^^
      0
    5. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      ... t'aimerais afficher ..... QUOI ???
      Merci d'être plus précis.
      0
  2. Zakarya93 Messages postés 1026 Statut Membre 10
     
    la structure de ma table : http://www.noelshack.com/2015-27-1435864827-erreur.jpg
    0
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Tu as trois tables
    conversations ( id, sujet,date_creation)
    conversations_membres(id, id_conversation, destinataire)
    conversation_message(id,id_conversation,expediteur,texte,date_message)

    ... au passage ... moi.. je n'en aurais sûrement fait qu'une ....(en regroupant les deux tables conversation_membre et conversation_messages...) ... mais bon..
    quoi qu'il en soit ... CHACUNE de ces tables dispose d'un ID auto_incrémenté ... et un champ ID_CONVERSATION .. qui permet de faire le lien avec la table CONVERSATION et donc entre-elles !

    Une fois tes tables remises avec la BONNE structure .. tu pourras effectuer des requêtes pour récupérer ( le nombre de conversations, le nombre de messages, la liste des messages ..etc....) par l'intermédiaire des JOINTURES.

    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      ok, sinon concernant la structure de mes tables :
      conversations (id_conversation / sujet_conversation)
      conversations_membre (id_conversation / pseudo_dest)
      conversations_messages (id_conversation / pseudo_exp / corps_message) date_message)
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Zakarya93 Messages postés 1026 Statut Membre
       
      Quoi au sujet de la structure de tes tables ?????
      Je t'ai répondu. ... tu me dis même "ok" ...... Oo
      0
    3. Zakarya93 Messages postés 1026 Statut Membre 10
       
      mais je sais pas ce que je dois mettre pour les tables que vous m'avez données :
      conversations ( id, sujet,date_creation)
      conversations_membres(id, id_conversation, destinataire)
      conversation_message(id,id_conversation,expediteur,texte,date_message)

      leur détails
      0
    4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Zakarya93 Messages postés 1026 Statut Membre
       
      Tu ne vois pas le rapport entre "mes tables " et les tiennes ?

      conversations ( id, sujet,date_creation)
      conversations_membres(id, id_conversation, destinataire)
      conversation_message(id,id_conversation,expediteur,texte,date_message)
      


      conversations (id_conversation / sujet_conversation)
      conversations_membre (id_conversation / pseudo_dest)
      conversations_messages (id_conversation / pseudo_exp / corps_message) 
      



      .... expediteur = pseudo_exp
      .... destinataire = ( à ton avis ????? .......) => ben oui... pseudo_dest
      .. je te laisse faire le rapprochement pour les autres....

      Quoi qu'il en soit ... au final... tu auras les mêmes tables qu'avant SAUF que tu auras un CHAMP ID (auto incrementé) en PLUS ( et que le champ id_conversation quant à lui.. ne sera plus en auto-increment )

      Attention .. la table conversations (id_conversation / sujet_conversation) ... elle .... NE CHANGE PAS !
      0
    5. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Je vois merci!
      du coup si j'ai bien compris, il me manque 2 id (conversations_membres et conversations_message) et un date création à rajouter c'est bien ça ?

      et sinon pour le 1/
      id = id_conversation ?
      sujet = sujet conversation ?
      date_creation = a rajouter ??
      0
  4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Toujours la même chose ... il semble, au vue du message..., que tu as déjà une primarykey de définie !!!!

    Va donc, dans ton phpmyadmin, executer la requête suivante
    https://dev.mysql.com/doc/refman/8.0/en/show-create-table.html
    SHOW CREATE TABLE tbl_name
    
    • en remplaçant tbl_name par le nom de ta table.....


    Cela te montrera la structure exacte de ta table.

    Je t'invite, au passage, à venir nous coller le résultat de cette requête sur le forum.

    NB : Au passage, voici la requête à utiliser pour retirer la primary key existante :
    ALTER TABLE  tbl_name DROP PRIMARY KEY;
    


    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      merci :)
      pour conversations_membres :

      CREATE TABLE `conversations_membres` (
      `id_conversation` int(10) NOT NULL,
      `pseudo_dest` varchar(100) NOT NULL,
      PRIMARY KEY (`id_conversation`)
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1


      pour conversations_messages :

      CREATE TABLE `conversations_messages` (
      `id_conversation` int(10) NOT NULL,
      `pseudo_exp` varchar(100) NOT NULL,
      `texte` text NOT NULL,
      `date_message` int(11) NOT NULL,
      PRIMARY KEY (`id_conversation`)
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Zakarya93 Messages postés 1026 Statut Membre 10
     
    Tout a été rajouté merci !
    passons à l'étape suivante :)
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Et il est où ton champ id auto incremente ?? (En plus du id_conversation !!)
      0
      1. Zakarya93 Messages postés 1026 Statut Membre 10 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        je l'ai rajouté dans conversations_membres et conversations_messages
        0
      2. Zakarya93 Messages postés 1026 Statut Membre 10 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        je vous fais un alter table de mes tables avec modifications aussi ?
        0
  7. Zakarya93 Messages postés 1026 Statut Membre 10
     
    petit bémol : je ne recois aucun messages, j'ai "vous n'avez pas de messages" malgré que j'ai modifié ce qu'il fallait dans mes functions :

    message.func.php :
    <?php
    //récupération des messages
    function recup_message()
    {
    	global $bdd;
    	$sql= "SELECT date_message, 
    			texte, 
    			sujet,
    			pseudo, avatar
    			FROM conversations_messages JOIN utilisateurs ON
    			pseudo = pseudo_exp
    			JOIN conversations_membres ON conversations_messages.id_conversation = 
    			conversations_membres.id_conversation JOIN conversations ON 
    			conversations_messages.id_conversation = conversations.id_conversation
    			WHERE conversations_messages.id_conversation= :id AND conversations_membres.pseudo_dest= 
    			:pseudo_dest ORDER BY conversations_messages.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;
    }
    
    ?>


    conversations.php :

    <?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_conversation']; ?>"> <?php echo $conversation['sujet']; ?></a></p>
         <p>Posté le : $date</p>
         <p><a href="index.php?page=supprimer_message&id=<?php echo $conversation['id_conversation']; ?>">Supprimer le message</a></p>
                      </div>      
          <?php
         }
       }else{
    	   ?>
    	      <div class'error'>Vous n'avez pas de message</div>
    	   <?php
       }
    ?>


    conversations.func.php :

    <?php 
    //la function qui va recuperer les conversations
    function recup_conversation() {
     global $bdd; // déclaration globale de BDD
    
    $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo'] : NULL;
    
    $sql = "SELECT conversations.id_conversation,
                        conversations.sujet,
                        utilisateurs.pseudo,
                        utilisateurs.avatar,
                        conversations_messages.date_message
                        FROM conversations
                        LEFT JOIN conversations_messages ON conversations.id_conversation = conversations_messages.id_conversation
                        INNER JOIN conversations_membres ON conversations.id_conversation = conversations_membres.id_conversation
                        INNER JOIN utilisateurs ON utilisateurs.pseudo = conversations_messages.pseudo_exp
                        WHERE pseudo_dest = :session_pseudo 
                        GROUP BY conversations.id_conversation
                        ORDER BY conversations_messages.date_message DESC";
    					
    					$params = array(':session_pseudo' =>$pseudo_session);
                        
    					
    $req = $bdd->prepare($sql);
    $req->execute($params);
    $resultat = $req->fetchall();
    
    return $resultat;
    }
    ?>


    new_message.func.php :

    <?php 
    //la function qui va nous permettre de verifier si le pseudo existe et si la personne n'essaye pas de s'auto envoyer un message
    
    function pseudo_incorrect(){
     global $bdd;
     $result=0;
     //Variables
      $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
      $pseudo_get = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
     
     if($pseudo_get){
      $sql = "SELECT COUNT(pseudo) as NB
             FROM utilisateurs
             WHERE pseudo = :pseudo_get
    		 AND pseudo != :pseudo_session";
     
       // je place les  params dans une variable avant de l'utiliser :
      $params = array(':pseudo_session' =>$pseudo_session , ':pseudo_get' => $pseudo_get );
      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;
    }
    
    // la fonction qui va crée la conversation et les messages qui va avec
     
    function creer_conversation($sujet,$message){
    
    $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
    $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
     $id_conversation = add_conversation($sujet);
     add_conversations_membres($id_conversation,$pseudo_dest); 
     add_conversations_messages($id_conversation,$pseudo_exp,$message);
    
     return $id_conversation;
    }
    
    function add_conversation($sujet=NULL){
     global $bdd;
    
     $sql = "INSERT INTO conversations (sujet)
             VALUES(:sujet)";
     $params = array(":sujet"=>$sujet);
     //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;
    }
    
    function add_conversations_membres($id_conversation,$pseudo_dest){
    global $bdd;
    
    $sql="INSERT INTO conversations_membres(id_conversation,pseudo_dest)
    		VALUES(:id_conversation,:pseudo_dest)";
    
    $params=array(":id_conversation"=>$id_conversation
                  ,":pseudo_dest"=>$pseudo_dest);
    
    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;
    }
    
    function add_conversations_messages($id_conversation,$pseudo,$message=''){
    global $bdd;
    
    $sql="INSERT INTO conversations_messages(id_conversation,pseudo_exp,texte,date_message)
    VALUES(:id_conversation,:pseudo,:message, NOW())";
    
    $params=array(":id_conversation"=>$id_conversation,
                  ":pseudo"=> $pseudo,
    			  ":message"=> $message);
    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;
    }
    
    ?>


    message.php :

    <?php
    
    include_once("{$_SERVER['DOCUMENT_ROOT']}rs/functions/message.func.php");
    include_once("{$_SERVER['DOCUMENT_ROOT']}rs/body/header.php");
    include_once("{$_SERVER['DOCUMENT_ROOT']}rs/body/menu.php");
    
    ?>
    
    <h3>Les messages</h3>
    
    <?php
    
    $messages = recup_message();
    foreach($messages as $message)
    {
    	?>
    	<div class="messages">
    		<p>Envoyé par : <a href="index.php?page=profile&pseudo=<?php echo $message['pseudo']; ?>"><?php echo $message['pseudo']; ?>
    		</a> Le : <?php echo date('d/m/Y à H:i:s',strtotime($message['date_message']));?></p>
    		<img src='avatar/<?php echo $message['avatar']; ?>'  height='50px' width='50px'></img><br/>
    		<p>"<em><?php echo $message['texte']; ?></em>"<hr></p>
    	</div>
    	<?php
    }
    
    ?>


    ce sont tout les codes ou j'ai effectué une ou plusieurs modif concernant les tables
    0
  8. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    1 - As tu testé les différentes requêtes dans ta BDD (via phpMyadmin) pour t'assurer qu'elles fonctionnent correctement ??? (en remplaçant les variables par des valeurs existantes bien entendu....)

    Par exemple celle là :
    SELECT id_conversation
           , date_message
           , texte
           , sujet
           , pseudo 
           , avatar
    FROM conversations_messages M 
    JOIN utilisateurs U ON 	U.pseudo = M.pseudo_exp
    JOIN conversations_membres MS ON M.id_conversation = MS.id_conversation 
    JOIN conversations C ON M.id_conversation = C.id_conversation
    WHERE M.id_conversation= :id 
      AND MS.pseudo_dest= :pseudo_dest 
    ORDER BY M.date_message DESC
    


    en remplaçant :pseudo_dest par 'jean' (ou 'xzak47') .. et :id .. par un ID existant.

    2 - Quelles sont les nouvelles structures de tes tables ?
    As tu bien ajouté le champ 'id' comme je te l'ai proposé ? L'as tu bien mis en primarykey ? ... et en auto-incrementé ??

    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      1- j'ai : #1052 - Column 'id_conversation' in field list is ambiguous
      sachant que id_conversation se trouve dans conversations_membres

      2- Oui :)
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Zakarya93 Messages postés 1026 Statut Membre
       
      SELECT C.id
             , date_message
             , texte
             , sujet
             , pseudo 
             , avatar
            , M.id_conversation
      FROM conversations_messages M 
      JOIN utilisateurs U ON 	U.pseudo = M.pseudo_exp
      JOIN conversations_membres MS ON M.id_conversation = MS.id_conversation 
      JOIN conversations C ON M.id_conversation = C.id_conversation
      WHERE M.id_conversation= :id 
        AND MS.pseudo_dest= :pseudo_dest 
      ORDER BY M.date_message DESC
      
      0
    3. Zakarya93 Messages postés 1026 Statut Membre 10
       
      avec le "C" que vous avez rajouté de select, j'ai : #1054 - Unknown column 'C.id_conversation' in 'on clause'

      sinon sans le C : #1052 - Column 'id' in field list is ambiguous
      0
    4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Zakarya93 Messages postés 1026 Statut Membre
       
      Quelle est la structure de ta table conversations ??
      0
    5. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Au pire.. tu remplaces C.id_conversation ... par C.id
      0
  9. Zakarya93 Messages postés 1026 Statut Membre 10
     
    pour le 2e code, conversations.func.php :

    SELECT conversations.id_conversation,
                        conversations.sujet,
                        utilisateurs.pseudo,
                        utilisateurs.avatar,
                        conversations_messages.date_message
                        FROM conversations
                        LEFT JOIN conversations_messages ON conversations.id_conversation = conversations_messages.id_conversation
                        INNER JOIN conversations_membres ON conversations.id_conversation = conversations_membres.id_conversation
                        INNER JOIN utilisateurs ON utilisateurs.pseudo = conversations_messages.pseudo_exp
                        WHERE pseudo_dest = 'xzak47'
                        GROUP BY conversations.id_conversation
                        ORDER BY conversations_messages.date_message DESC


    j'ai : #1054 - Unknown column 'conversations.id_conversation' in 'field list'
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      ...... par ce que. ..... ton champ se nomme id tout court !
      0
      1. Zakarya93 Messages postés 1026 Statut Membre 10 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        No database select avec ceci :

        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 = 'xzak47'
                            GROUP BY conversations.id
                            ORDER BY conversations_messages.date_message DESC
        0
      2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Zakarya93 Messages postés 1026 Statut Membre
         
        Tu as un espace à ta première ligne ...
        conversations .id,
        
        0
      3. Zakarya93 Messages postés 1026 Statut Membre 10 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        meme soucis (no database select)
        0
  10. Zakarya93 Messages postés 1026 Statut Membre 10
     
    No database select again (code à votre manière) :

    SELECT C.id,
                        conversations.sujet,
                        utilisateurs.pseudo,
                        utilisateurs.avatar,
                        conversations_messages.date_message
                        FROM conversations
                        LEFT JOIN conversations_messages C conversations C.id = conversations_messages C.id
                        INNER JOIN conversations_membres MS ON M.id_conversation = MS.id_conversation
                        INNER JOIN utilisateurs U ON 	U.pseudo = M.pseudo_exp
                        WHERE pseudo_dest = 'xzak47'
                        GROUP BY conversations C.id
                        ORDER BY M.date_message DESC
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Tu t'es bien placé dans ta bdd AVANT de lancer ta requête ??
      0
      1. Zakarya93 Messages postés 1026 Statut Membre 10 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        là était l'erreur, du coup j'ai : #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'conversations C.id = conversations_messages C.id
        INNER JOIN ' at line 7

        (avec le code du dessus)
        0
  11. Zakarya93 Messages postés 1026 Statut Membre 10
     
    Celui ci marche !!!
    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 = 'xzak47'
                        GROUP BY conversations.id
                        ORDER BY conversations_messages.date_message DESC
    0
  12. Zakarya93 Messages postés 1026 Statut Membre 10
     
    Il reste ce code mais il n'y a rien a modifier n'est ce pas ? :
    <?php 
    //la function qui va nous permettre de verifier si le pseudo existe et si la personne n'essaye pas de s'auto envoyer un message
    
    function pseudo_incorrect(){
     global $bdd;
     $result=0;
     //Variables
      $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
      $pseudo_get = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
     
     if($pseudo_get){
      $sql = "SELECT COUNT(pseudo) as NB
             FROM utilisateurs
             WHERE pseudo = :pseudo_get
    		 AND pseudo != :pseudo_session";
     
       // je place les  params dans une variable avant de l'utiliser :
      $params = array(':pseudo_session' =>$pseudo_session , ':pseudo_get' => $pseudo_get );
      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;
    }
    
    // la fonction qui va crée la conversation et les messages qui va avec
     
    function creer_conversation($sujet,$message){
    
    $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
    $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
     $id_conversation = add_conversation($sujet);
     add_conversations_membres($id_conversation,$pseudo_dest); 
     add_conversations_messages($id_conversation,$pseudo_exp,$message);
    
     return $id_conversation;
    }
    
    function add_conversation($sujet=NULL){
     global $bdd;
    
     $sql = "INSERT INTO conversations (sujet)
             VALUES(:sujet)";
     $params = array(":sujet"=>$sujet);
     //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;
    }
    
    function add_conversations_membres($id_conversation,$pseudo_dest){
    global $bdd;
    
    $sql="INSERT INTO conversations_membres(id_conversation,pseudo_dest)
    		VALUES(:id_conversation,:pseudo_dest)";
    
    $params=array(":id_conversation"=>$id_conversation
                  ,":pseudo_dest"=>$pseudo_dest);
    
    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;
    }
    
    function add_conversations_messages($id_conversation,$pseudo,$message=''){
    global $bdd;
    
    $sql="INSERT INTO conversations_messages(id_conversation,pseudo_exp,texte,date_message)
    VALUES(:id_conversation,:pseudo,:message, NOW())";
    
    $params=array(":id_conversation"=>$id_conversation,
                  ":pseudo"=> $pseudo,
    			  ":message"=> $message);
    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;
    }
    
    ?>


    de plus quand je vais sur mon site et sur l'onglet "messages", j'ai cette erreur :

    Parse error: syntax error, unexpected 'sujet' (T_STRING), expecting ']' in C:\wamp\www\rs\pages\conversations.php on line 16

    code :
    <?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 : $date</p>
         <p><a href="index.php?page=supprimer_message&id=<?php echo $conversation['id']; ?>">Supprimer le message</a></p>
                      </div>      
          <?php
         }
       }else{
    	   ?>
    	      <div class'error'>Vous n'avez pas de message</div>
    	   <?php
       }
    ?>
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      ... et tu ne vois pas l'erreur ????
       <p><a href="index.php?page=message&id=<?php echo $conversation['id ?>"> <?php echo $conversation['sujet']; ?></a></p>
      

      .... le message te parle d'un PB de crochet (expecting ']' ).... dans le code ci-dessus.. ne vois tu pas un crochet manquant ?
      0
    2. Zakarya93 Messages postés 1026 Statut Membre 10 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Merci (j'y penserai la prochaine fois pour l'expecting) sinon j'ai "Posté : $date" qui s'affiche et c nickel
      0
    3. Zakarya93 Messages postés 1026 Statut Membre 10 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      j'aimerai avoir la date affichée au lieu de $date
      0
    4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Zakarya93 Messages postés 1026 Statut Membre
       
      ..... ben il suffit d'en faire un ECHO ....
      <p>Posté le : <?php echo $date; ?></p>
      
      0
    5. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      mais à mon avis... $date .. n'existe pas....
      c'est sûrement un truc comme ça qu'il te faut :
       echo $conversation['date']; 
      
      0
  13. Zakarya93 Messages postés 1026 Statut Membre 10
     
    j'ai mis ceci
    <p>Posté le : <?php echo $conversation['date_message']; ?></p>


    mais j'ai : Posté le : 2147483647

    qui s'affiche :/ (c'est ce qui est dans ma bdd)

    je viens de voir ce champ sur ma table et il était en int(11), je viens de le modifier en datetime(6) mais tout est à 0 concernant la date et l'heure

    logiquement faut modifier ma function ?

    <?php 
    //la function qui va recuperer les conversations
    function recup_conversation() {
     global $bdd; // déclaration globale de BDD
    
    $pseudo_session = 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 = 'xzak47'
                        GROUP BY conversations.id
                        ORDER BY conversations_messages.date_message DESC";
    					
    					$params = array(':session_pseudo' =>$pseudo_session);
                        
    					
    $req = $bdd->prepare($sql);
    $req->execute($params);
    $resultat = $req->fetchall();
    
    return $resultat;
    }
    ?>
    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      l'erreur vient-elle d'ici ?
      WHERE pseudo_dest = 'xzak47'
      0
  14. Zakarya93 Messages postés 1026 Statut Membre 10
     
    corrigé :
    $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";

    j'ai : Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\rs\functions\conversations.func.php on line 25

    <?php 
    //la function qui va recuperer les conversations
    function recup_conversation() {
     global $bdd; // déclaration globale de BDD
    
    $pseudo_session = 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(':session_pseudo' =>$pseudo_session);
                        
    					
    $req = $bdd->prepare($sql);
    $req->execute($params);
    $resultat = $req->fetchall();
    
    return $resultat;
    }
    ?>
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      J'hésite franchement à répondre ....
      ça ne fait que 48 fois qu'on te corrige la même erreur dans tes différents codes !!!!!!!!

      Donc ... pour la dernière fois j'espère ....
      - Quelle est la variable dans ta requête ?
      - Comme se nomme ta variable dans l'array param ?

      -->>> Est-ce que les deux variables portent bien le même nom ...???
      0
    2. Zakarya93 Messages postés 1026 Statut Membre 10 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      - je ne sais pas
      - pseudo_session
      0
    3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Tu réponds à quelle question au juste ?
      0
    4. Zakarya93 Messages postés 1026 Statut Membre 10 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      "- Quelle est la variable dans ta requête ?
      - Comme se nomme ta variable dans l'array param ? "
      0
    5. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Donc NON.

      -Quelle est la variable dans la requête ?

      - Comment associes tu la variable $pseudo_session de ton array PARAMS avec la variable de ta requête ?
      0
  15. Zakarya93 Messages postés 1026 Statut Membre 10
     
    donc bon code :

    <?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 MS.pseudo_dest = :pseudo_dest
                        GROUP BY conversations.id
                        ORDER BY conversations_messages.date_message DESC";
    					
    					$params = array(':pseudo_dest' =>$pseudo_dest);
                        
    					
    $req = $bdd->prepare($sql);
    $req->execute($params);
    $resultat = $req->fetchall();
    
    return $resultat;
    }
    ?>


    ?
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Presque .... d'où il vient ton MS ????
      Vu que tu n'as pas préfixé tes tables dans la requête...ça ne sert à rien de le mettre !

      Au passage.... penses donc à mettre un bloc TRY / CATCH pour trapper les éventuelles erreurs et qu'elles te soient affichées.
      0
  16. Zakarya93 Messages postés 1026 Statut Membre 10
     
    <?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{
        $query = $bdd->prepare($sql);
        $query ->execute($params); 
       $return = 1;
     }catch(Exception $e) {
         echo "<br>".$e->getMessage()."<br>";
       echo "<br>params : <br>";
       print_r($params);
     }
     }
    return $resultat;
    ?>


    comme ceci ?

    j'ai un : Notice: Undefined variable: resultat in C:\wamp\www\rs\functions\conversations.func.php on line 34
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      C'est le problème quand on fait des bêtes copier/coller dans savoir ce qu'on fait ......

      Qu'as tu fais du FETCHALL ( instruction qui permet de stocker dans un array le resultat d'une requête .. ) ??
      0
    2. Zakarya93 Messages postés 1026 Statut Membre 10 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      <?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;
      ?>


      comme ceci ?
      0
    3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Zakarya93 Messages postés 1026 Statut Membre
       
      Ça me paraît pas trop mal. ..
      tu as testé ?
      0
    4. Zakarya93 Messages postés 1026 Statut Membre 10 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      oui j'ai cette erreur : Notice: Undefined variable: resultat in C:\wamp\www\rs\functions\conversations.func.php on line 36
      0
    5. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Ton accolades de fin est mal placée
      0
  17. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Tu peux nous fournir un DUMP (structure + données ) de tes tables ?

    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      http://www.cjoint.com/c/EGoo6N8UyEH
      0
  18. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Tu avais une erreur au niveau des ID dans ta requêtes ......

    Les jointures se font entre le champ ID de la table CONVERSATIONS .. et les champs ID_CONVERSATION de tes autres tables !!

    Essayes ça :
    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
    

    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      ça marche !! :)
      tout est reglé merci (sauf le sujet de ce topic haha :p)

      on continue ici ou je change de topic ?
      0
  19. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Continuons ici ...
    Mais allons y par étape !

    Est-ce que ton badge apparait ?
    Si non... quel est le bout de code qui est censé l'afficher ?
    Quelle fonction est appelée et quelle en est son code ?
    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Je vous remercie pour votre patience infinie

      Badge invitations :
      Oui il apparait, mais ne disparait pas lorsque j'accepte l'invitation

      /*
      //la function qui va nous permettre d'afficher l'info-bulle des invitations
      */
      function afficher_ibi_invitations(){
       global $bdd;
       $result=0;
       //Variables
       $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
      
       if($pseudo_session){
        $sql = "SELECT COUNT(id_invitation) as NB
               FROM amis 
               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;
      }
      
      /*
      //la function qui va nous permettre de mettre à jour la date_vue dans la bdd pour pouvoir cacher l'info-bulle 
      */
      function update_date_vue(){
       global $bdd;
        //récupération des variables PROPREMENT !
        $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
       if( $pseudo_session){
        $sql = "UPDATE amis
                   SET date_vue=NOW()
                   WHERE pseudo_dest = :session_pseudo";
      
        // je place les  params dans une variable avant de l'utiliser :
        $params = array(':session_pseudo' =>  $pseudo_session);
        try{ 
         $query = $bdd->prepare($sql);
         $query ->execute($params);  
       }catch(Exception $e) {
           echo "<br>ERREUR ! ".$e->getMessage()."<br>";
           echo "<br>params : <br>";
           print_r($params);
         }
       }
      }
      


      appel de la function :
      <?php 
      require_once('functions/membre.func.php');
      include_once('body/header.php');
      include_once('body/menu.php');
      ?>
      <h3>Vos invitations</h3>
      <?php
      $invitations = recup_invitations();
      $invitations_acceptees =invitation_acceptee();
      
        if(count($invitations)>0){
          foreach($invitations as $R) {
          $invit_exp = $R['pseudo_exp'];
          $avatar = $R['avatar'];
          $active = $R['active'];
         
           if($active == 0){ 
              echo "<img src='avatar/$avatar' height='100' width='100' alt='avatar'></img>";
              echo "<div class='error'>";
              echo " $invit_exp a voulu vous ajouter comme ami(e)<br />";
              echo " <a href='index.php?page=accepter&pseudo=$invit_exp'>Accepter</a>|<a href='index.php?page=refuser&pseudo=$invit_exp'> Refuser</a>";
              echo "</div>";
           }else {     
            echo" <div class='success'>Vous êtes désormais ami(e) avec $invit_exp </div>";
          }//fin du IF active
        } // fin du FOREACH
        }else if(invitation_acceptee() == true){
      	    foreach($invitations_acceptees as $invitation_acceptee)
      		{
      		update_date_vue();	
      		?>	
      		<div class='success'><?php echo $invitation_acceptee['pseudo_dest']; ?> a accepté votre invitation</div>
      		<?php 	
      		}
       } else {
         echo "<div class='error'>Vous n'avez pas d'invitations</div>";
       }//fin du if(count
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Zakarya93 Messages postés 1026 Statut Membre
         
        C'est l'info bulle qui est censée afficher quoi au juste ??
        Les nouveaux messages ?
        0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Ah non.. on est toujours sur les INVITATIONS ?
      0
  20. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Tu as fais une inversion dans ta requête
    c'est date_confirmation >= date_vue et non date_confirmation < date_vue
    SELECT *
             FROM amis 
             WHERE (date_vue = '0000-00-00 00:00:00' 
               OR date_confirmation >= date_vue )
              AND pseudo_dest= 'xzak47'
    


    Cordialement,
    Jordane
    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      j'ai : MySQL a retourné un résultat vide (aucune ligne). (Traitement en 0.0000 sec)

      L'info bulle reste affichée malgré que j'ai accepté la demande et vu que je suis desormais amis avec la personne
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Zakarya93 Messages postés 1026 Statut Membre
         
        Je m'y perd un peu là ....
        Ta question INITIALE ... c'est bien par raport aux info-bulles messages ?????
        Ensuite tu me parles des invitations .....


        Donc si c'est sur les INVIATIONS que tu as un PB ... c'est une NOUVELLE QUESTION.
        (ta question initiale etant au sujet de : Problème affichage info bulle messages )
        0
    2. Zakarya93 Messages postés 1026 Statut Membre 10
       
      oops pardon, je confonds, retournons sur les messages pardon
      0
  21. Zakarya93 Messages postés 1026 Statut Membre 10
     
    Pour les messages :
    /**
    *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;
    }


    ou la fonction est appelée :
    <?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>


    css :
    .ibi_messages 
    { 
     margin: auto;
     background-color: #FF0000;
     border: 1px solid #000;
     color: #FFF;
    }
    0
  • 1
  • 2