Notice: Array to string conversion et info bulle

Résolu
Bonjour,

J'ai cette erreur : Notice: Array to string conversion in C:\wamp\www\rs\body\menu.php on line 8

<?php 
  $ibi = afficher_ibi();
  if($ibi !== '0')
  {
   ?>   
   <div class='ibi'>
        <?php 
     echo $ibi;
     ?>
   </div> 
   <?php 
  }  

?>
<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></li>
      <li><a href="">Messages</a></li>
      <li class="nbr"><?php echo nombre_membre() > 1 ? nombre_membre()." membres" : nombre_membre(). " membre"; ?></li>
       </ul>
</div>


De plus, je n'ai pas le 0 qui apparait, ce qui signifie 0 invitations reçu
Merci d'avance :) (je sais que vous allez me faire la remarque que je mets bcp de balises php mais je ne fais que suivre un tuto dans son integralité)

5 réponses

  1. Modérateur
    $ibi ... est un ARRAY...
    donc .. pour afficher son contenu.. tu ne peux pas utiliser l'instruction ECHO....

    Modifie le code de ta fonction afficher_ibi() ainsi
    //la function qui va nous permettre d'afficher l'info-bulle des invitations
    function afficher_ibi(){
     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_invitation = date_confirmation
        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;
    }
    


    Comme ça maintenant elle te retournera non plus un array .. mais un NOMBRE correspondant au NB de ta requête.

    Cordialement,
    Jordane
    1. J'ai effacé mon message parce que j'avais vu ma bourde. Mes excuses.
      Mais en fait, c'était surtout un prétexte pour glisser la deuxième partie de mon message.
      1. Modérateur
        :-)
    2. Merci :) mais maintenant, le problème c'est que j'ai pas le 0 qui apparait, j'en ai absolument besoin (qui signifie 0 invitation), qu'est ce qui cloche dans mon menu.php svp ? :/
      1. Modérateur
        ... ben .. heu... tout simplement cette ligne
          if($ibi !== '0')
        

        Qui veut dire ... SI $ibi N'EST PAS égale à 0
    3. il me reste après cela les messages et j'ai fini, je vous ai fais une promesse en message privé, merci pour votre patience
      1. Modérateur
        ;-)
      2. Modérateur
        Si la question est résolue..
        Merci de ne pas oublier de clôturer le sujet
        (en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

        Cordialement,
        Jordane
    4. Ah merci, petite erreur :)
      j'ai un dernier soucis mais niveau CSS je pense que vous n'allez pas pouvoir y répondre? (je crois que mon style.css ne fait rien de ce que je lui demande à chaque reprise)
      1. Modérateur
        Poses ta question de css dans le forum webmaster/css
      2. C'est fait merci ;)