Problème d'invitation et function recup_invitation

Résolu
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   -  
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

1/ Quand je me connecte sur mon site avec le compte xzak47 qui recoit l'invitation, normalement il devrait y avoir sur le profil de l'émetteur (jean) : Demande en cours, verifiez vos invitations / quand il clique sur le profil qui lui a envoyé la demande

voici mon code :
<?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();

// Le temps des tests :
echo "<div id='debug'>
            <br>accepter_demande => ".$accepter_demande."
            <br>demande_existe => ".$demande_existe."
            <br>verifier_expediteur => ".$verifier_expediteur."
           </div>";


echo "<div class='info'>";

 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>";
?>


2/ Sachant que le script mysql_ de ma function recup_invitation est :
<?php
//la functions va recuperer les invitations
 
function recup_invitations()
{
     
$query = mysql_query("SELECT pseudo_exp,date_invitation,active,avatar
FROM amis
INNER JOIN users ON users.pseudo=amis.pseudo_exp
WHERE pseudo_dest='{$_SESSION['pseudo']}'
ORDER BY date_invitation DESC
");
$results=array();
while($row=mysql_fetch_assoc($query))
{
$results[]=$row;
}
return $results;
 
}
?>


pouvez-vous corrigé le code que j'ai fais ?

<?php
//la function qui va recuperer les invitations
function recup_invitations() {
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= array();
 if($pseudo_exp && $pseudo_dest){
  $sql = "SELECT pseudo_exp,date_invitation,active,avatar
         FROM amis
   INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
        WHERE (pseudo_exp = :session_pseudo AND pseudo_dest = :get_pseudo)
            OR  (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);
  
  $query = $bdd->prepare($sql);
  $query ->execute($params);  
  $requete = $query->fetchall();
 }
 // le return
 return $result;
}


Merci d'avance :)

5 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Dans ta requête ...
  $sql = "SELECT pseudo_exp,date_invitation,active,avatar
         FROM amis
		 INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
         WHERE (pseudo_dest = :get_pseudo)";	

Tu y as combien de paramètres ??

Et dans le params.... tu en as combien ?
  $params = array('session_pseudo' => $pseudo_exp , 'get_pseudo' => $pseudo_dest);
  


... à ton avis... est-ce bon ?

0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
Requete : 4 paramètres
params : 2 paramètres
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
params : 2 => Oui
Requête 4 ????

Combien de variable avec les ":" ?
Il n'y a que :get_pseudo
...
Quoi qu'il en soit ... le nombre doit être identique entre la requête et le params...
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
C'est mieux comme ça ?
$sql = "SELECT pseudo_exp,date_invitation,active,avatar
         FROM amis
   INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
        WHERE (pseudo_exp = :session_pseudo AND pseudo_dest = :get_pseudo)
            OR  (pseudo_exp = :get_pseudo AND pseudo_dest = :session_pseudo)";
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention  
 
Je ne pense pas que le souci venait de la requête ........ mais plutôt du $params....
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
  $params = array('get_pseudo' => $pseudo_dest);

comme ceci ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Donc... le code devrait donner :
<?php
//la function qui va recuperer les invitations
function recup_invitations() {
global $bdd;

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

 $result= array();
 if($pseudo_exp && $pseudo_dest){
  $sql = "SELECT pseudo_exp
                      ,date_invitation
                      ,active
                      ,avatar
            FROM amis
	    INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
            WHERE pseudo_dest = :get_pseudo";

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




Après... que doit retournée cette fonction ?
un booleen ( 1 ou 0 )
ou bien .. un tableau contenant toutes les données de la BDD corresponds à la requête ?

Si c'est un booleen que tu veux... il faut modifier le return ainsi
return count($result)>0?1:0;


0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
je devrais avoir un array avec les données de l'utilisateur qui envoie la demande (j'ai fais un print sur annuler.php)

j'obtiens ça sinon : Notice: Undefined variable: pseudo_exp in C:\wamp\www\rs\functions\invitations.func.php on line 10
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
oupsss...

<?php
//la function qui va recuperer les invitations
function recup_invitations() {
global $bdd;

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

 $result= array();
 if($pseudo_get){
  $sql = "SELECT pseudo_exp
                      ,date_invitation
                      ,active
                      ,avatar
            FROM amis
     INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
            WHERE pseudo_dest = :get_pseudo";

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

0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
j'obtiens toujours : Notice: Undefined variable: pseudo_dest in C:\wamp\www\rs\functions\invitations.func.php on line 10

avec un Array()
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention  
 
Change dans le IF
 if($pseudo_get){
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
j'ai mtn un Array ( ) qui s'affiche
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Tu obtiens quoi dans phpmyadmin si tu lances la requête
SELECT pseudo_exp
                      ,date_invitation
                      ,active
                      ,avatar
            FROM amis
     INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
            WHERE pseudo_dest = 'jean'


et avec

SELECT pseudo_exp
                      ,date_invitation
                      ,active
                      ,avatar
            FROM amis
     INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
            WHERE pseudo_dest = 'xzak47'



Et aussi .. que donnes ce code ?


/la function qui va recuperer les invitations
function recup_invitations() {
global $bdd;

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

 $result= array();
 if($pseudo_get){
  $sql = "SELECT pseudo_exp
                      ,date_invitation
                      ,active
                      ,avatar
            FROM amis
     INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
            WHERE pseudo_dest = :get_pseudo";

  // je place les  params dans une variable avant de l'utiliser :
  $params = array(':get_pseudo' => $pseudo_get);
  
  $query = $bdd->prepare($sql);
  $query ->execute($params);  
  $requete = $query->fetchall();
 }

// pour les tests :
echo "<br> PARAMS :<br>";
print_r($params);

 // le return
 return $result;
}


0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
le code me donne : Notice: Undefined variable: params in C:\wamp\www\rs\functions\invitations.func.php on line 29 avec un params et un array qui s'affichent

pour la première requete 1/ : MySQL a retourné un résultat vide (aucune ligne). (Traitement en 0.0200 sec)

respectivement, la 2/ : MySQL a retourné un résultat vide (aucune ligne). (Traitement en 0.0010 sec)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention  
 
Visiblement;.. tu n'as rien dans la variable GET ...
testes ça :
function recup_invitations() {
global $bdd;

  //récupération des variables PROPREMENT !
  $pseudo_get= isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
  
 $result= array();
 if($pseudo_get){
  $sql = "SELECT pseudo_exp
                      ,date_invitation
                      ,active
                      ,avatar
            FROM amis
     INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
            WHERE pseudo_dest = :get_pseudo";

  // je place les  params dans une variable avant de l'utiliser :
  $params = array(':get_pseudo' => $pseudo_get);
  
  // pour les tests :
  echo "<br> PARAMS :<br>";
  print_r($params);

  $query = $bdd->prepare($sql);
  $query ->execute($params);  
  $requete = $query->fetchall();
 }else{
   echo "<br> Erreur .. aucun pseudo ! ";
   print_r($_GET);
}
 // le return
 return $result;
}
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
pas d'erreurs mais j'obtiens : Erreur .. aucun pseudo ! Array ( [page] => invitations ) Array ( )
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention  
 
C'est un souci de requête ET de variable ...
En fait .. c'est par rapport à la variable en SESSION que tu veux récupérer les infos ... donc:
function recup_invitations() {
global $bdd;

  //récupération des variables PROPREMENT !
  $pseudo_dest= isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
  
 $result= array();
 if($pseudo_dest){
  $sql = "SELECT pseudo_exp
                      ,date_invitation
                      ,active
                      ,avatar
            FROM amis
          INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
            WHERE pseudo_dest = :session_pseudo";

  // je place les  params dans une variable avant de l'utiliser :
  $params = array(':session_pseudo' => $pseudo_dest);
  
  // pour les tests :
  echo "<br> PARAMS :<br>";
  print_r($params);

  $query = $bdd->prepare($sql);
  $query ->execute($params);  
  $requete = $query->fetchall();
 }else{
   echo "<br> Erreur .. aucun pseudo ! ";
}
 // le return
 return $result;
}

0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
j'obtiens :
PARAMS :
Array ( [:session_pseudo] => xzak47 ) Array ( )

or je devrais avoir les données du profil :/
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
Ah oui dans la requete ! j'obtiens : MySQL a retourné un résultat vide (aucune ligne). (Traitement en 0.0170 sec)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Tu peux nous dire ce que donne :
SELECT *
FROM amis
 WHERE pseudo_dest = 'xzak47'
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
MySQL a retourné un résultat vide (aucune ligne). (Traitement en 0.0000 sec)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
.... zak a reçu une invitation au moins ????
Ne te tromperais tu pas avec jean ???

essayes avec jean pour voir
SELECT *
FROM amis
 WHERE pseudo_dest = 'jean'
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
j'ai : MySQL a retourné un résultat vide (aucune ligne). (Traitement en 0.0010 sec)
Oui c'est zak qui a recu
0
hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   24
 
L'enregistrement de la demande est-il bien présent dans la base de données ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
MERCI A VOUS 2 :D
0