Parse error: syntax error, unexpected '' et functions accepter/r

Résolu
Bonjour,

1/ J'ai cette erreur que je n'arrive pas à décrypter : Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\wamp\www\rs\pages\invitations.php on line 17

<?php
include('functions/membre.func.php');
include('body/header.php');
include('body/menu.php');
?>
<h3>Vos invitations</h3>
<?php
$invitations = recup_invitations();

  if(count($invitations)>0){
    foreach($invitations as $invitation) {
  if($invitation['active'] == 0)
  { 
       echo "<img src='avatar/".$invitation['avatar']."'height='100' width='100' alt='avatar'>";
       echo "<div class='error'>
            ".$invitation['pseudo_exp']." a voulu vous ajouter comme ami(e)<br />";
       echo " <a href='index.php?page=accepter&pseudo= echo $invitation['pseudo_exp']; '>Accepter |</a><a href='index.php?page=refuser&pseudo= echo $invitation['pseudo_exp']; '> Refuser</a>";
    echo "</div>";
  }
   }else{
    <div class='success'>Vous êtes désormais ami(e) avec echo $invitation['pseudo_exp']; </div>
        }
    echo "<div class='error'>Vous n'avez pas d'invitations</div>";
   }   
?>


2/ sachant que le code mysl_ est :
<?php
// la fonction qui v accepter l'invitation
 
function accepter_invitation()
 
{
 
 
mysql_query("
UPDATE amis SET active=1, date_confirmation=NOW();() WHERE pseudo_exp'{$_GET['pseudo']}'
AND pseudo_dest='{$SESSION['pseudo']}'
 
 
");
}
 
 
?>


c'est bon si je mets :
<?php 
//la function qui va accepter l'invitation
function accepter_invitation();
global $bdd;

  //récupération des variables PROPREMENT !
  $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
  $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;

 $result=0;
 if($pseudo_exp && $pseudo_dest){
  $sql = "UPDATE
         FROM amis
   SET active=1, date_confirmation=NOW
         WHERE (pseudo_exp = :session_pseudo AND pseudo_dest = :get_pseudo)";

  // je place les  params dans une variable avant de l'utiliser :
  $params = array('session_pseudo' => $pseudo_exp , 'get_pseudo' => $pseudo_dest);
  
  $query = $bdd->prepare($sql);
  $query ->execute($params);  
  $requete = $query->fetchall();
 }
 // le return
 return $result;
}     


3/ et pour le "refuser invitation" que faudrait il simplement que je modifie ?

Merci d'avance ! :)
Bonne nuit

19 réponses

Résumé de la discussion

Une erreur d’analyse PHP survient lors du traitement des invitations, liée à des balises et variables mal imbriquées qui déclenchent un parse error et des liens d’action mal construits. Les réponses recommandent de corriger les échos HTML/PHP en utilisant une syntaxe cohérente et des guillemets appropriés, et d’éviter les injections en passant les identifiants via des paramètres préparés. D'autres suggestions abordent la réécriture de la fonction accepter_invitation avec une gestion correcte des variables, des requêtes SQL valides et l'usage de global $bdd, et le test étape par étape avec print_r ou debug. En dernier lieu, certains conseillent d’adopter une redirection après accepted_invitation et de tester les requêtes avec des paramètres sécurisés, afin d’éviter des états d’invitations incohérents.

Bobot (l’IA à votre service)
  1. Modérateur
    Tu as des ECHO ... alors que tu es déjà dans un ECHO
    (ça fait déjà plusieurs fois que tu as ce même genre de pb..... tu pourrais réussir à corriger par toi même à force... non ?)

      echo " <a href='index.php?page=accepter&pseudo= echo $invitation['pseudo_exp']; '>Accepter |</a><a href='index.php?page=refuser&pseudo= echo $invitation['pseudo_exp']; '> Refuser</a>";
    

    A changer par :
      echo " <a href='index.php?page=accepter&pseudo=".$invitation['pseudo_exp']."'>Accepter |</a><a href='index.php?page=refuser&pseudo=".$invitation['pseudo_exp']."'> Refuser</a>";
    
    1. Modérateur
      Et tu as aussi un PB sur ton ELSE
      }else{
          <div class='success'>Vous êtes désormais ami(e) avec echo $invitation['pseudo_exp']; </div>
              }
      

      A remplacer par
      }else{
         echo" <div class='success'>Vous êtes désormais ami(e) avec ".$invitation['pseudo_exp']." </div>";
       }
      
    2. je vous remercie et je m'excuse d'abuser de votre gentillesse :/
      qu'en est il pour le 2/ & 3/ svp?
  2. Modérateur
    Pour le 2/

    <?php 
    //la function qui va accepter l'invitation
    function accepter_invitation();
    global $bdd;
    
      //récupération des variables PROPREMENT !
      $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
      $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
    
     if($pseudo_exp && $pseudo_dest){
      $sql = "UPDATE amis
             SET active=1
                  , date_confirmation=NOW
             WHERE (pseudo_exp = :session_pseudo AND pseudo_dest = :get_pseudo)";
    
      // je place les  params dans une variable avant de l'utiliser :
      $params = array(':session_pseudo' => $pseudo_exp , ':get_pseudo' => $pseudo_dest);
      
      $query = $bdd->prepare($sql);
      $query ->execute($params);  
     }
    
    }
    


    NB :
    Tu ne fais un FETCHALL .. que sur une requête SELECT
    Et tu fais un RETURN dans ta fonction... si tu dois retourner quelque chose.. hors ici... tu fais un UPDATE... tu ne retourne rien.

    1. Modérateur

      3/ et pour le "refuser invitation" que faudrait il simplement que je modifie ?


      Je pense que dans le cas d'un refus... tu supprime la demande et donc.. il suffirait juste de changer La requête...
        $sql = "DELETE  FROM amis
                  WHERE (pseudo_exp = :session_pseudo AND pseudo_dest = :get_pseudo)";
      


      1. Merci infiniement ! ceci montre bien la mauvaise qualité du tuto qui m'est proposé...content d'avoir pu accéder à vos services :)

        trève de bavardages, j'ai ceci : Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\wamp\www\rs\pages\invitations.php on line 20

        <?php
        include('functions/membre.func.php');
        include('body/header.php');
        include('body/menu.php');
        ?>
        <h3>Vos invitations</h3>
        <?php
        $invitations = recup_invitations();
        
          if(count($invitations)>0){
            foreach($invitations as $invitation) {
        		if($invitation['active'] == 0)
        		{	
               echo "<img src='avatar/".$invitation['avatar']."'height='100' width='100' alt='avatar'>";
               echo "<div class='error'>
        	           ".$invitation['pseudo_exp']." a voulu vous ajouter comme ami(e)<br />";
               echo " <a href='index.php?page=accepter&pseudo=".$invitation['pseudo_exp']."'>Accepter |</a><a href='index.php?page=refuser&pseudo=".$invitation['pseudo_exp']."'> Refuser</a>";
        			 echo "</div>";
        		}
            }else{
               echo " <div class='success'>Vous êtes désormais ami(e) avec ".$invitation['pseudo_exp']." </div>";
           }
        	   echo "<div class='error'>Vous n'avez pas d'invitations</div>";
           }   
        ?>
        1. A la ligne 20 tu as une accolade en trop devant ton else
      2. Correction :
        <?php
        include('functions/membre.func.php');
        include('body/header.php');
        include('body/menu.php');
        ?>
        <h3>Vos invitations</h3>
        <?php
        $invitations = recup_invitations();
          
          if(count($invitations)>0){
            foreach($invitations as $invitation) {
                if($invitation['active'] == 0)
                { 
                    echo "<img src='avatar/".$invitation['avatar']."'height='100' width='100' alt='avatar'>";
                    echo "<div class='error'>
                    ".$invitation['pseudo_exp']." a voulu vous ajouter comme ami(e)<br />";
                    echo " <a href='index.php?page=accepter&pseudo=".$invitation['pseudo_exp']."'>Accepter |</a><a href='index.php?page=refuser&pseudo=".$invitation['pseudo_exp']."'> Refuser</a>";
                          echo "</div>";
                }
            }
             
            echo" <div class='success'>Vous êtes désormais ami(e) avec ".$invitation['pseudo_exp']." </div>";
         
         }
         else{
               echo "<div class='error'>Vous n'avez pas d'invitations</div>";
           } 
         
         
        ?>
        


        Mais le problème c'est que j'ai :
        jean a voulu vous ajouter comme ami(e)
        Accepter | Refuser
        Vous êtes désormais ami(e) avec jean

        qui s'affiche c'est bizzare :(
        1. Attends, je crois que ca vient de moi, essaye plutôt ça :

          <?php
          include('functions/membre.func.php');
          include('body/header.php');
          include('body/menu.php');
          ?>
          <h3>Vos invitations</h3>
          <?php
          $invitations = recup_invitations();
          
            if(count($invitations)>0)
            {
              foreach($invitations as $invitation) 
          	{
          		if($invitation['active'] == 0)
          		{	
                 echo "<img src='avatar/".$invitation['avatar']."'height='100' width='100' alt='avatar'>";
                 echo "<div class='error'>
          	           ".$invitation['pseudo_exp']." a voulu vous ajouter comme ami(e)<br />";
                 echo " <a href='index.php?page=accepter&pseudo=".$invitation['pseudo_exp']."'>Accepter |</a><a href='index.php?page=refuser&pseudo=".$invitation['pseudo_exp']."'> Refuser</a>";
          			 echo "</div>";
          		}
          	}
             }
              else{
                 echo " <div class='success'>Vous êtes désormais ami(e) avec ".$invitation['pseudo_exp']." </div>";
             }
             
          	   echo "<div class='error'>Vous n'avez pas d'invitations</div>";
             }   
          ?>


          Ce n'était pas une accolade en trop, mais une en moins ton souci !
        2. @hharchi9J'ai : Parse error: syntax error, unexpected '}' in C:\wamp\www\rs\pages\invitations.php on line 29
        3. Mea culpa, il ya un truc qui ne va pas. Reprends ce que tu veux obtenir :

          Si invitation n'est pas vide, on parcours le tableau en affichant les demande actives et les demandes acceptées. (if...else)

          Sinon, on affiche "pas d'invitations".

          Comme il y a deux "sinon", cela implique deux else et tu n'en a qu'un.

          Je te laisse chercher un peu comment résoudre l'erreur... (si besoin, je te donnerai la solution)
        4. @hharchi9dans mon code il y a que si j'ai une invitation, alors "Vous êtes désormais ami(e) avec jean Cette phrase elle devrait etre dans la page accepter&pseudo, pas dans celle ci, c'est ça ?
        5. La logique de ta page est bien celle que j'ai donnée dans mon denier message, non ?

          Si oui, alors tout est bien à sa place sur la page mais il manque un deuxième else (il y en a un pour chacun de tes tests)
      3. <?php 
        //la function qui va refuser l'invitation
        function refuser_invitation() {
        global $bdd;
        
          //récupération des variables PROPREMENT !
          $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
          $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
        
         if($pseudo_exp && $pseudo_dest){
          $sql = $sql = "DELETE FROM amis
                         WHERE (pseudo_exp = :pseudo_exp AND pseudo_dest = :get_pseudo)
        
          // je place les  params dans une variable avant de l'utiliser :
          $params = array(':session_pseudo' => $pseudo_exp , ':get_pseudo' => $pseudo_dest);
          
          $query = $bdd->prepare($sql);
          $query ->execute($params); 
          $result=1;
         }
         else
         {
         $result=0;
         }
         // le return :
         // si result == 0 on retourne false .. sinon true :
         return $result == 0 ? 0 : 1 ;
        }
        
        
        ?>


        c'est pourtant ce qui est déjà marqué non ?
        1. Modérateur
          Déjà ...- Il n'y a pas besoin de RETURN ... cette fonction ne sert qu'à UPDATE une valeur .... donc à moins que tu ne l'utilises pour autre chose dans le code qui l'appel .. je n'en vois pas l'interet.
        2. Modérateur
          Ensuite.. tu as encore des erreurs dans les variables de ta requête ... + une apostrophe manquante..

          bref:
          testes ceci :
          //la function qui va refuser l'invitation
          function refuser_invitation() {
          global $bdd;
          
            //récupération des variables PROPREMENT !
            $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
            $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
          
          	$return = 0;
           if($pseudo_exp && $pseudo_dest){
            $sql = $sql = "DELETE FROM amis
                           WHERE pseudo_exp = :pseudo_exp 
          								 AND pseudo_dest = :pseudo_dest";
          
            // je place les  params dans une variable avant de l'utiliser :
            $params = array(':pseudo_exp' => $pseudo_exp , ':pseudo_dest' => $pseudo_dest);
            
            $query = $bdd->prepare($sql);
            $query ->execute($params); 
          	$return = 1;
           }
          return $return;
          }
          
          
        3. @jordane45J'ai toujours le meme problème : quand je clique sur accepter, je suis redirigé sur le profil du demandeur, quand je clique refusé la page charge mais rien ...et pour les 2 cas l'invitation ne disparait pas
      4. Modérateur
        On va ajouter un bloc TRY / CATCH ... à ta requête pour s'assurer que ce n'est pas elle qui poserait problème

        //la function qui va refuser l'invitation
        function refuser_invitation() {
         global $bdd;
        
          //récupération des variables PROPREMENT !
          $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
          $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
        
         $return = 0;
         if($pseudo_exp && $pseudo_dest){
          $sql = $sql = "DELETE FROM amis
                         WHERE pseudo_exp = :pseudo_exp 
                 AND pseudo_dest = :pseudo_dest";
        
          // je place les  params dans une variable avant de l'utiliser :
          $params = array(':pseudo_exp' => $pseudo_exp , ':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 $return;
        }
        


        Cordialement,
        Jordane
        1. Meme soucis que précédemment :'(
        2. Modérateur
          @Zakarya93Je sais bien... maintenant traitons l'autre partie de ton code
      5. Modérateur
        Donc.. voici le code corrigé (avec le else manquant .. et un peu de debug ! )

        <?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();
          
        	//--------------------------------//
        	//le temps des tests :
        	//--------------------------------//
        	echo "<br> Invitations :<br>";
        	print_r($invitations);
        	//--------------------------------//
        	
          if(count($invitations)>0){
            foreach($invitations as $R) {
        	   $invit_exp = $R['pseudo_exp'];
        	   $avatar = $R['avatar'];
        		
             if($R['active'] == 0){ 
                echo "<img src='avatar/$avatar' height='100' width='100' alt='avatar'></img>";
                echo "<div class='error'>
                     ".$invitation['pseudo_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>";
            }
         } else {
           echo "<div class='error'>Vous n'avez pas d'invitations</div>";
         } 
        

        1. Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\wamp\www\rs\pages\invitations.php on line 29
      6. Modérateur
        Ouppsss...
        ça devrait être mieux :
        <?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();
        
          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 {
           echo "<div class='error'>Vous n'avez pas d'invitations</div>";
         }//fin du if(count
         
        


        Cordialement,
        Jordane
        1. pas d'erreur mais même soucis que précédemment :(
        2. Modérateur
          @Zakarya93Remets un PRINT en dessous de $invitations
           //--------------------------------//
           //le temps des tests :
           //--------------------------------//
           echo "<br> Invitations :<br>";
           print_r($invitations);
           //--------------------------------//
           
          

          Qu'est-ce que ça t'affiche ??
        3. Invitations :
          Array ( [0] => Array ( [pseudo_exp] => jean [0] => jean [date_invitation] => 2015-06-18 23:01:52 [1] => 2015-06-18 23:01:52 [active] => 0 [2] => 0 [avatar] => defaut.jpg [3] => defaut.jpg ) )
        4. Modérateur
          @Zakarya93Donc.. visiblement...
          tu es dans le cas :
               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>";
          


          Ce n'est pas bon ??
      7. Modérateur
        On va commencer par la page "accepter"

        Que contient cette page (quel code ) ?

        1. <?php 
          accepter_invitation();
          header("Location:index.php?page=profile&pseudo=".$_GET['pseudo']);
          ?>
        2. Modérateur
          @Zakarya93Ok... donc commence par ça pour voir ce que ça donne
          <?php 
          accepter_invitation();
          
          //le temps de tests
          print_r($_GET);
          //header("Location:index.php?page=profile&pseudo=".$_GET['pseudo']);
          ?>
          


          Puis rappele nous ce que contient le code de ta fonction
          accepter_invitation();*
      8. J'ai : Invitations :
        Array ( [0] => Array ( [pseudo_exp] => jean [0] => jean [date_invitation] => 2015-06-18 23:01:52 [1] => 2015-06-18 23:01:52 [active] => 0 [2] => 0 [avatar] => defaut.jpg [3] => defaut.jpg ) )

        code function :
        <?php 
        //la function qui va accepter l'invitation
        function accepter_invitation() {
        global $bdd;
        
          //récupération des variables PROPREMENT !
          $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
          $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
        
         if($pseudo_exp && $pseudo_dest){
          $sql = "UPDATE amis
                 SET active=1
                      , date_confirmation=NOW
                 WHERE (pseudo_exp = :session_pseudo AND pseudo_dest = :get_pseudo)";
        
          // je place les  params dans une variable avant de l'utiliser :
          $params = array(':session_pseudo' => $pseudo_exp , ':get_pseudo' => $pseudo_dest);
          
          $query = $bdd->prepare($sql);
          $query ->execute($params);  
         }
        
        }
        1. Modérateur

          J'ai : Invitations :
          Array ( [0] => Array ( [pseudo_exp] => jean [0] => jean [date_invitation] => 2015-06-18 23:01:52 [1] => 2015-06-18 23:01:52 [active] => 0 [2] => 0 [avatar] => defaut.jpg [3] => defaut.jpg ) )

          Pas sur la page accepter........ ce n'est pas possible !
        2. @jordane45Ah pardon *x_X

          j'ai : Array ( [page] => accepter [pseudo] => jean )
      9. Modérateur
        ok

        Maintenant... change le code de ta page accepter comme ceci :
        <?php 
         $accepter = accepter_invitation();
         
         if($accepter){
          echo " Invitation acceptée !";
         }else{
          echo "Erreur !";
         }
            //header("Location:index.php?page=profile&pseudo=".$_GET['pseudo']);
        ?>
        


        Puis vas dans ta BDD ... et regardes comment est le champ ACTIVE.
        Si il est passé à 1 ... remets le à 0 ...
        puis Modifie le code de ta fonction ainsi.
        <?php 
        //la function qui va accepter l'invitation
        function accepter_invitation() {
        global $bdd;
        
          //récupération des variables PROPREMENT !
          $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
          $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
        
         $return = 0;
         if($pseudo_exp && $pseudo_dest){
          $sql = "UPDATE amis
                 SET active=1
                    ,date_confirmation=NOW
                 WHERE pseudo_exp = :session_pseudo 
              AND pseudo_dest = :get_pseudo";
        
          // je place les  params dans une variable avant de l'utiliser :
          $params = array(':session_pseudo' => $pseudo_exp , ':get_pseudo' => $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 $return;
        }
        


        et retestes.
        1. J'ai : Invitation acceptée !
        2. Modérateur
          et dans ta BDD ? tu as bien active = 1 ?
        3. dans ma bdd y a active 0 :/
        4. Modérateur
          @Zakarya93Tu peux essayer la requête directment dans ta BDD ?
          UPDATE amis
                   SET active=1
                      ,date_confirmation=NOW
                   WHERE pseudo_exp = 'xzak47'
                AND pseudo_dest = 'jean'
          
        5. j'ai : #1054 - Unknown column 'NOW' in 'field list'
      10. Modérateur
        Tu peux modifier ton code par celui-ci (j'ai ajouté un print)
        et relancer ta page pour voir ce que ça te donne ?
        <?php 
        //la function qui va accepter l'invitation
        function accepter_invitation() {
        global $bdd;
        
          //récupération des variables PROPREMENT !
          $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
          $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
        
         $return = 0;
         if($pseudo_exp && $pseudo_dest){
          $sql = "UPDATE amis
                 SET active=1
                    ,date_confirmation=NOW
                 WHERE pseudo_exp = :session_pseudo 
              AND pseudo_dest = :get_pseudo";
        
          // je place les  params dans une variable avant de l'utiliser :
          $params = array(':session_pseudo' => $pseudo_exp , ':get_pseudo' => $pseudo_dest);
         
          // le temps des tests
          echo "<br>params : <br>";
           print_r($params);
        
            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 $return;
        }
        

        1. J'ai :
          params :
          Array ( [:session_pseudo] => xzak47 [:get_pseudo] => jean ) Invitation acceptée !
        2. Modérateur
          J'ai l'impression que tu as inversé les deux variables dans le where...

          car là ... celui qui doit accepter la demande... est celui qui l'a reçu .... et donc ... celui qui consulte la page.
          Donc : Pseudo_dest c'est SESSION['pseudo']
          et pseudo_exp => $_GET['pseudo']

              WHERE pseudo_exp = :session_pseudo 
                AND pseudo_dest = :get_pseudo
          

          A modifier par :
              WHERE pseudo_exp = :get_pseudo
                AND pseudo_dest = :session_pseudo 
          
        3. Parse error: syntax error, unexpected '>' in C:\wamp\www\rs\functions\accepter.func.php on line 22

          <?php 
          //la function qui va accepter l'invitation
          function accepter_invitation() {
          global $bdd;
          
            //récupération des variables PROPREMENT !
            $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
            $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
          
           $return = 0;
           if($pseudo_exp && $pseudo_dest){
            $sql = "UPDATE amis
                   SET active=1
                      ,date_confirmation=NOW
                  WHERE pseudo_exp = :get_pseudo
                AND pseudo_dest = :session_pseudo
          
            // je place les  params dans une variable avant de l'utiliser :
            $params = array(':session_pseudo' => $pseudo_exp , ':get_pseudo' => $pseudo_dest);
           
            // le temps des tests
            echo "<br>params : <br>";
             print_r($params);
          
              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 $return;
          }
        4. Modérateur
          ...... tu ne vois pas qu'il te manque quelque chose ???
            $sql = "UPDATE amis
                   SET active=1
                      ,date_confirmation=NOW
                  WHERE pseudo_exp = :get_pseudo
                AND pseudo_dest = :session_pseudo
          

          ..... il manque deux choses à la fin de cette ligne.... je te laisse réfléchir deux minutes !
        5. j'ai oublié : ";
      11. Modérateur
        Si tu tapes cette requête directement dans ta BDD
        UPDATE amis
                 SET active=1
                      ,date_confirmation=NOW()
                 WHERE pseudo_exp = 'jean' 
              AND pseudo_dest = 'xzak47'
        


        Et qu'ensuite tu vas regarder dans ta BDD ... active est toujours à 0 ?

        1. j'ai : 1 ligne affectée. (Traitement en 0.3190 sec)

          et l'active est égal à 1 !!!
        2. Modérateur
          @Zakarya93ok.
          remet le active à 0.

          Maintenant on va retester avec la page PHP.

          <?php 
          //la function qui va accepter l'invitation
          function accepter_invitation() {
          global $bdd;
          
            //récupération des variables PROPREMENT !
            $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
            $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
          
           $return = 0;
           if($pseudo_exp && $pseudo_dest){
            $sql = "UPDATE amis
                   SET active=1
                      ,date_confirmation=NOW()
                   WHERE pseudo_exp = :session_pseudo 
                AND pseudo_dest = :get_pseudo";
          
            // je place les  params dans une variable avant de l'utiliser :
            $params = array(':session_pseudo' => $pseudo_exp , ':get_pseudo' => $pseudo_dest);
           
            // le temps des tests
           echo "<br> Requete : <br>".$sql;
            echo "<br>params : <br>";
             print_r($params);
          
              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 $return;
          }
          
        3. J'obtiens ça quand j'accepte l'invitation :

          Requete :
          UPDATE amis SET active=1 ,date_confirmation=NOW() WHERE pseudo_exp = :session_pseudo AND pseudo_dest = :get_pseudo
          params :
          Array ( [:session_pseudo] => xzak47 [:get_pseudo] => jean ) Invitation acceptée !
        4. Modérateur
          @Zakarya93et' donc ??????? .... ==>>> DANS TA BDD ... ACTIVE = ???
        5. active reste à 0
      12. Modérateur
        <?php 
        //la function qui va accepter l'invitation
        function accepter_invitation() {
        global $bdd;
        
          //récupération des variables PROPREMENT !
          $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
          $pseudo_get = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
        
         $return = 0;
         if($pseudo_exp && $pseudo_dest){
          $sql = "UPDATE amis
                 SET active=1
                    ,date_confirmation=NOW()
                 WHERE pseudo_exp = :get_pseudo
              AND pseudo_dest = :session_pseudo ";
        
          // je place les  params dans une variable avant de l'utiliser :
          $params = array(':session_pseudo' =>$pseudo_session , ':get_pseudo' => $pseudo_get );
         
          // le temps des tests
         echo "<br> Requete : <br>".$sql;
         echo "Je suis connecté en tant que : ".$pseudo_session;
          echo " Je veux refuser l'invitation de :".$pseudo_get;
          echo "<br>params : <br>";
           print_r($params);
        
            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 $return;
        }
        

        1. j'ai: Notice: Undefined variable: pseudo_exp in C:\wamp\www\rs\functions\accepter.func.php on line 11

          et erreur ! qui s'affiche (active = 0)
        2. Modérateur
          Oui zut.
          modifie les variables dans le if
        3. Comme ceci ?
          if($pseudo_exp){
        4. j'ai trouvé :
           if($pseudo_session && $pseudo_get){


          J'ai :
          Requete :
          UPDATE amis SET active=1 ,date_confirmation=NOW() WHERE pseudo_exp = :get_pseudo AND pseudo_dest = :session_pseudo Je suis connecté en tant que : xzak47 Je veux refuser l'invitation de :jean
          params :
          Array ( [:session_pseudo] => xzak47 [:get_pseudo] => jean ) Invitation acceptée !

          Active = 0 ... :'(
      13. Modérateur
        Essayes ça
        
        //la function qui va accepter l'invitation
        function accepter_invitation() {
        global $bdd;
        
          //récupération des variables PROPREMENT !
          $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
          $pseudo_get = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
        
         $return = 0;
         if($pseudo_session && $pseudo_get){
          $sql = "UPDATE amis
                 SET active=1
                    ,date_confirmation=NOW()
                 WHERE pseudo_exp = :get_pseudo
              AND pseudo_dest = :session_pseudo ";
        
          // je place les  params dans une variable avant de l'utiliser :
          $params = array(':session_pseudo' =>$pseudo_session , ':get_pseudo' => $pseudo_get );
         
          // le temps des tests
           echo "<br> Requete : <br>".$sql;
           echo "<br>Je suis connecté en tant que : ".$pseudo_session;
           echo "<br> Je veux refuser l'invitation de :".$pseudo_get;
           echo "<br>params : <br>";
           print_r($params);
          $etatDemande_AVANT = checkActive($pseudo_session,$pseudo_get );
           echo " <br> La demande est pour l'instant :".$etatDemande_AVANT;
          
            try{
             $query = $bdd->prepare($sql);
             $query ->execute($params);  
             $etatDemande = checkActive($pseudo_session,$pseudo_get );
             echo " <br> La demande est maintenant = ".$etatDemande;
             $return = $etatDemande;
          }catch(Exception $e) {
             echo "<br>".$e->getMessage()."<br>";
           echo "<br>params : <br>";
           print_r($params);
          }
         }
         return $return;
        }
        
        /**
        * Verifie l'état d'une demande
        */
        function checkActive($pseudo_dest,$pseudo_exp ) {
        global $bdd;
        $return = -1;
        
        $sql = "SELECT active
                 FROM amis
                WHERE pseudo_exp = :pseudo_exp
                AND pseudo_dest = :pseudo_dest ";
        
              // je place les  params dans une variable avant de l'utiliser :
          $params = array(':pseudo_dest' =>$pseudo_dest , ':pseudo_exp' => $pseudo_exp );
         
          try{
             $query = $bdd->prepare($sql);
             $query ->execute($params);  
           $result = $query->fetchall();
           $return = count($result)>0 ? $result[0]['active']:-1;
          }catch(Exception $e) {
             echo "<br>".$e->getMessage()."<br>";
             echo "<br>params : <br>";
             print_r($params);
          }
         
         return $return;
        }
        


        Cordialement,
        Jordane
        1. j'ai :

          Invitations :
          Array ( [0] => Array ( [pseudo_exp] => jean [0] => jean [date_invitation] => 2015-06-18 23:01:52 [1] => 2015-06-18 23:01:52 [active] => 1 [2] => 1 [avatar] => defaut.jpg [3] => defaut.jpg ) )
          Vous êtes désormais ami(e) avec jean

          et le active = 1
        2. Comment enlever le array?
        3. Modérateur
          Tu supprme tout le pavé "le temps des tests..."
        4. Merci, on passe au refuser? :)
      14. J'ai enlevé mais y a tjr le : Invitations :
        Array ( [0] => Array ( [pseudo_exp] => jean [0] => jean [date_invitation] => 2015-06-18 23:01:52 [1] => 2015-06-18 23:01:52 [active] => 1 [2] => 1 [avatar] => defaut.jpg [3] => defaut.jpg ) )

        <?php 
        //la function qui va accepter l'invitation
        function accepter_invitation() {
        global $bdd;
        
          //récupération des variables PROPREMENT !
          $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
          $pseudo_get = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
        
         $return = 0;
         if($pseudo_session && $pseudo_get){
          $sql = "UPDATE amis
                 SET active=1
                    ,date_confirmation=NOW()
                 WHERE pseudo_exp = :get_pseudo
              AND pseudo_dest = :session_pseudo ";
        
          // je place les  params dans une variable avant de l'utiliser :
          $params = array(':session_pseudo' =>$pseudo_session , ':get_pseudo' => $pseudo_get );
          
        /**
        * Verifie l'état d'une demande
        */
        function checkActive($pseudo_dest,$pseudo_exp ) {
        global $bdd;
        $return = -1;
        
        $sql = "SELECT active
                 FROM amis
                WHERE pseudo_exp = :pseudo_exp
                AND pseudo_dest = :pseudo_dest ";
        
              // je place les  params dans une variable avant de l'utiliser :
          $params = array(':pseudo_dest' =>$pseudo_dest , ':pseudo_exp' => $pseudo_exp );
         
          try{
             $query = $bdd->prepare($sql);
             $query ->execute($params);  
           $result = $query->fetchall();
           $return = count($result)>0 ? $result[0]['active']:-1;
          }catch(Exception $e) {
             echo "<br>".$e->getMessage()."<br>";
             echo "<br>params : <br>";
             print_r($params);
          }
         
         return $return;
        }
        1. Modérateur
          C'est quoi ce code ????
          Tu ne parviens pas à faire juste un copier coller sans sans faire d'erreurs ???
          Tu as enlever trop de lignes !!!!!!

          Remplaces TOUT par ça :
          //la function qui va accepter l'invitation
          function accepter_invitation() {
          global $bdd;
          
            //récupération des variables PROPREMENT !
            $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
            $pseudo_get = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
          
           $return = 0;
           if($pseudo_session && $pseudo_get){
            $sql = "UPDATE amis
                   SET active=1
                      ,date_confirmation=NOW()
                   WHERE pseudo_exp = :get_pseudo
                AND pseudo_dest = :session_pseudo ";
          
            // je place les  params dans une variable avant de l'utiliser :
            $params = array(':session_pseudo' =>$pseudo_session , ':get_pseudo' => $pseudo_get );
           
              try{
               $query = $bdd->prepare($sql);
               $query ->execute($params);  
               $etatDemande = checkActive($pseudo_session,$pseudo_get );
              // echo " <br> La demande est maintenant = ".$etatDemande;
               $return = $etatDemande;
            }catch(Exception $e) {
               echo "<br>ERREUR ! ".$e->getMessage()."<br>";
             echo "<br>params : <br>";
             print_r($params);
            }
           }
           return $return;
          }
          
          /**
          * Verifie l'état d'une demande
          */
          function checkActive($pseudo_dest,$pseudo_exp ) {
          global $bdd;
          $return = -1;
          
          $sql = "SELECT active
                   FROM amis
                  WHERE pseudo_exp = :pseudo_exp
                  AND pseudo_dest = :pseudo_dest ";
          
                // je place les  params dans une variable avant de l'utiliser :
            $params = array(':pseudo_dest' =>$pseudo_dest , ':pseudo_exp' => $pseudo_exp );
           
            try{
               $query = $bdd->prepare($sql);
               $query ->execute($params);  
             $result = $query->fetchall();
             $return = count($result)>0 ? $result[0]['active']:-1;
            }catch(Exception $e) {
               echo "<br>ERREUR ! ".$e->getMessage()."<br>";
               echo "<br>params : <br>";
               print_r($params);
            }
           
           return $return;
          }
          


          Penses aussi à modifier ta page ACCEPTER.PHP
          <?php 
           $etat = accepter_invitation();
          if($etat>0){
          header("Location:index.php?page=profile&pseudo=".$_GET['pseudo']);
          }else{
           echo "<br> Une erreur s'est produite ! <br> ACTIVE = ".$etat;
          }
          ?>
          
        2. @jordane45Merci bien ;)

          avant de passer à refuser.func.php, j'aurais une question :
          comment enlever ceci sur profile.php :
          pseudo_exp : jean
          pseudo_dest : xzak47

          resultat de la requete:
          Array ( )
          Result :0

          <?php
          //-----------------------------
           //Profile.php 
          //-----------------------------
          
          include_once('body/header.php');
          include_once('body/menu.php');
          
          $pseudo = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
          $arr_infos = recuperer_info_membre_choisi($pseudo);
          $accepter_demande = accepter_demande();
          $demande_existe = demande_existe();
          $verifier_expediteur = verifier_expediteur();
          
           if(count($arr_infos)>0 && $pseudo != $_SESSION['pseudo']){
          
            foreach($arr_infos as $R) {
            if($demande_existe == 0){
               echo "<div class='error'>
                     Vous n'êtes pas ami(e) avec ".$R['pseudo']."<br />
                    <a href='index.php?page=envoi&pseudo=".$R['pseudo']."'>Envoyer une invitation</a>
                  </div>";  
              }else if( $accepter_demande == 0 && $verifier_expediteur == 1){    
               echo "<div class='success'>Demande envoyée 
               <a href='index.php?page=annuler&pseudo=".$R['pseudo']."'>Annuler la demande</a></div>";   
             }else if($accepter_demande == 0 && $verifier_expediteur == 0){
                  echo "<div class='success'>Demande en cours<br />
                Verifiez vos invitations
                </div>";     
               }
               echo"<img src='avatar/". $R['avatar']."' height='200' width='200' alt='avatar'>";
               echo "<p><strong>Email : </strong><em>".$R['email']."</em></p>";
               echo "<p><strong>Sexe : </strong><em>".$R['sexe']."</em></p>";
               echo "<p><strong>A propos de vous : </strong><em>".$R['apropos']."</em></p>";
            }//fin du foreach  
           }else{
            header("Location:index.php?page=membre"); 
           }
           echo "</div>";
          ?>
        3. Modérateur
          @Zakarya93Et bien... tu regardes si dans une des fonctions suivantes
          $arr_infos = recuperer_info_membre_choisi($pseudo);
          $accepter_demande = accepter_demande();
          $demande_existe = demande_existe();
          $verifier_expediteur = verifier_expediteur();
          

          Tu y trouves des ECHO / PRINT .... et tu les enleves
        4. Modérateur
          @jordane45ATTENTION : Ne retire pas les ECHO/PRINT qui se trouveraient là pour signaler des ERREURS...
          par exemple ..
          Ne pas retirer ce qui se trouve dans un CATCH comme celui-ci
            }catch(Exception $e) {
               echo "<br>ERREUR ! ".$e->getMessage()."<br>";
               echo "<br>params : <br>";
               print_r($params);
            }
          

          ...ça .. il faut le laisser !
      15. Pour le "refuser.func.php" c'est bon ce code ? :

        <?php 
        //la function qui va refuser l'invitation
        function refuser_invitation() {
        global $bdd;
        
          //récupération des variables PROPREMENT !
          $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
          $pseudo_get = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
        
         $return = 0;
         if($pseudo_session && $pseudo_get){
          $sql = "DELETE FROM amis
                         WHERE pseudo_exp = :pseudo_exp 
                 AND pseudo_dest = :pseudo_dest";
        
          // je place les  params dans une variable avant de l'utiliser :
          $params = array(':session_pseudo' =>$pseudo_session , ':get_pseudo' => $pseudo_get );
         
            try{
             $query = $bdd->prepare($sql);
             $query ->execute($params);  
             $etatDemande = checkActive($pseudo_session,$pseudo_get );
            // echo " <br> La demande est maintenant = ".$etatDemande;
             $return = $etatDemande;
          }catch(Exception $e) {
             echo "<br>ERREUR ! ".$e->getMessage()."<br>";
           echo "<br>params : <br>";
           print_r($params);
          }
         }
         return $return;
        }
        
        /**
        * Verifie l'état d'une demande
        */
        function checkActive($pseudo_dest,$pseudo_exp ) {
        global $bdd;
        $return = -1;
        
        $sql = "DELETE FROM amis
                         WHERE pseudo_exp = :pseudo_exp 
                 AND pseudo_dest = :pseudo_dest";
        
              // je place les  params dans une variable avant de l'utiliser :
          $params = array(':pseudo_dest' =>$pseudo_dest , ':pseudo_exp' => $pseudo_exp );
         
          try{
             $query = $bdd->prepare($sql);
             $query ->execute($params);  
           $result = $query->fetchall();
           $return = count($result)>0 ? $result[0]['active']:-1;
          }catch(Exception $e) {
             echo "<br>ERREUR ! ".$e->getMessage()."<br>";
             echo "<br>params : <br>";
             print_r($params);
          }
         
         return $return;
        }
        1. Modérateur
          Par contre... vu qu'on en est déjà à 124 messages dans cette discussion... et vu qu'il est préférable de ne gérer qu' UN problème par discussion ... merci de clore ce sujet .. et d'en ouvrir un spécifiquement pour cet autre souci.

          N'oublies pas d'y mettre :
          - Le code de la page refuser.php
          - Le code de ta page refuser.func.php
          1. Je viens de le résoudre ^^ encore merci :)