Function accepter_demande() en pdo

Résolu/Fermé
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 - 13 juin 2015 à 16:17
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 - 13 juin 2015 à 20:54
Bonjour,

Je dois convertir ce code mysql en pdo :
//la function qui va verifier si le destinataire a accepté la demande
function accepter_demande()
{
$query = mysql_query("
SELECT active FROM amis WHERE (pseudo_exp = '{$_SESSION['pseudo']}' AND pseudo_dest = '{$_GET['pseudo']}')
OR
(pseudo_exp = '{$_GET['pseudo']}' AND pseudo_dest = '{$_SESSION['pseudo']}')

");
while($row = mysql_fetch_assoc($query))
{
if($row['active'] == 0)
{
return false;
}else{
return true;
}
}


J'ai tenté, j'ai fais :
//la function qui va verifier si le destinataire a accepté la demande
function accepter_demande()

{
$bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', '');
    //donc la, la verification:
$req = $bdd->query('SELECT COUNT(*) FROM amis WHERE pseudo_exp="'.$pseudo_exp.'" AND pseudo_dest="'.$pseudo_dest.'"');
$etat = $req->fetchColumn();
  
if($row == 0){
return false;
}else{
 return true;
  
     }
}


Pouvez-vous me corriger entièrement svp ? Merci d'avance :)

16 réponses

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 16:21

Pouvez-vous me corriger entièrement svp ? Merci d'avance :)


Ce coup-ci .. NON !

Tu vas pas nous demander de te corriger tous les codes du tuto que tu es en train de faire quand même ?????


Après ta question d'hier ... je pensais que tu essaierais de comprendre à minima ce que tu fais ... le tout .. en t'inspirant des NOMBREUX code qu'on t'a déjà corrigé ET Expliqué ...

Et bon.. je ne veux pas dire ... mais si tu regardes bien.. c'est pratiquement la même fonction que celle que je t'ai corrigé cette nuit !

Tu n'as qu'as t'en inspirer !

1
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 16:22
Comme je te l'ai fait remarqué dans une précédente discussion... si tu suis un TUTO c'est pour apprendre ..... pas pour que les gens ne viennent te corriger tes codes en permanence !
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 19:55
Bon aller ... je t'ai suffisamment fait réfléchir pour ce soir ...

//la function qui va verifier si le destinataire a accepté la demande
function accepter_demande(){
  global $bdd;

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


  $sql = "SELECT active FROM amis 
	        FROM amis
          WHERE (pseudo_exp = :session_pseudo AND pseudo_dest = :get_pseudo)
            OR  (pseudo_ dest = :get_pseudo AND pseudo_dest = :session_pseudo)";

  // je place les  params dans une variable avant de l'utiliser :
  $params = array('get_pseudo' => $pseudoGet, 'session_pseudo' => $pseudoSession) ;
  
  $query = $bdd->prepare($sql);
  $query ->execute($params);  
  $result = $query->fetchall();
	
 //On récupère le contenu de la colonne 'active'
  $active = $result[0]['active'];
 
 // le return :
 // si active == 0 on retourne false .. sinon true :
 return $active == 0 ? false : true ;
}


1
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 20:14
c'est un pb de copier/coller

remplace le code :
// je place les  params dans une variable avant de l'utiliser :
  $params = array('get_pseudo' => $pseudoGet, 'session_pseudo' => $pseudoSession) ;



// je place les  params dans une variable avant de l'utiliser :
  $params = array('get_pseudo' => $pseudo_exp , 'session_pseudo' => $pseudo_dest) ;
1
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 20:16
Ainsi que le code :
  $active = $result[0]['active'];


par

  $active = isset($result) ? $result[0]['active'] : 0;

0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
13 juin 2015 à 16:22
J'ai tenté de faire le code, je l'ai posté dites moi ce qui ne va pas svp
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 16:25
ok.. ce qui ne va pas donc :

- Pourquoi remets tu la connexion à ta BDD dans ta fonction ...... alors que tu disposes déjà d'une variable qui la contient ??

- Dans ton code... d'où provient la variable $row ?

- Où sont initialisées tes variables $pseudo_exp et $pseudo_sess ?

- Pourquoi ta requête n'est pas la même que celle de la fonction que tu essayes de traduire en pdo ??


Voila... si tu arrives à répondre à ces questions.. je penses que tu réussira à corriger ton code par toi même
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 16:37
Si, malgré ces corrections, ça bloque toujours... reviens nous poster le code modifié qu'on te dise ce qui ne va pas.
0

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

Posez votre question
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
13 juin 2015 à 16:40
global $bdd; // déclaration globale de BDD

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

  // je mets la requête dans une variable AVANT de l'utiliser
  // PS :  j'ai ajouté un ALIAS  (COUNT(id_invitation) as NB) afin de pouvoir plus facilement
  // utiliser le résultat de la requête...
  $sql = "SELECT COUNT(id_invitation) as NB
	        FROM amis
          WHERE (pseudo_exp = :session_pseudo AND pseudo_dest = :get_pseudo)
            OR  (pseudo_ dest = :get_pseudo AND pseudo_dest = :session_pseudo)";

  // je place les  params dans une variable avant de l'utiliser :
  $params = array('get_pseudo' => $pseudoGet, 'session_pseudo' => $pseudoSession) ;
  
  $query = $bdd->prepare($sql);
  $query ->execute($params);  
  $result = $query->fetchall();
	
  //on récupère le NB de ta requête...
   $nb = $result[0]['NB'];
  //On fait un RETURN pour envoyer le résultat vers ton code...
  return $nb;
}


ce serait bon comme ceci ?
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 16:42
C'est beaucoup mieux..

Par contre... là ... tu n'as fais qu'un copié/collé de ton autre fonction.....

La requête à utiliser n'est pas la même normalement (regardes le code en mysql_ que tu as posté au début
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
13 juin 2015 à 16:43
//la function qui va verifier si le destinataire a accepté la demande
function accepter_demande()
global $bdd; // déclaration globale de BDD

  $req = $bdd->prepare('SELECT COUNT(*) FROM amis WHERE pseudo_exp=:pseudo_exp AND pseudo_dest=:pseudo_dest');
    $req->execute(array(':pseudo_exp'=>$pseudo_exp, 'pseudo_dest'=>$pseudo_dest));
    $check = $req->fetchColumn();
     
    if($check > 0){
        // Il y a des valeurs. soit return true;
    }
    else{
        // Pas de valeur. soit return false;
    }
}


Celui ci est bon ?
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 16:44
NON
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 16:45
....

reprenons dans l'ordre ....

Déjà ... quelle est la requête sql que tu dois réaliser ?
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 16:45
Tu sais ce qu'est une requête sql au moins ??
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
Modifié par Zakarya93 le 13/06/2015 à 16:51
Ouii c'est une instruction qui va permettre d'interroger ma bdd
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 16:52
Et donc... pour ta fonction accepter_demande .. laquelle dois tu utiliser ?


PS: "qui va permettre d'interroger ma bdd" ... pas seulement... une requête peut permettre d'interroger une BDD ( requête SELECT ) .. de mettre à jour des champs dans une table ( requête UPDATE ) .. d'insérer des nouvelles données dans une table ( requête INSERT )...
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
13 juin 2015 à 16:56
Requete SELECT
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 17:40
... oui .. requête de type SELECT ... ok .... mais et donc ... ?
Quelle est la requête dans son INTEGRALITE que tu dois utiliser ??
0
Je ne sais pas
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 17:50
.......... tu me dis savoir ce qu'est une requête SQL ....et tu n'es pas en mesure de me dire laquelle tu dois utiliser ?

Pour t'aider : indique nous, la requête utilisée dans le code que tu posté dans ta question.... (le code que tu veux convertir en PDO ) ...
Autrement dit ... que contient la variable $sql ??
0
Un SÉLECT active de 2 variables pseudo
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717 > Zakarya93
13 juin 2015 à 18:31
oui c'est bien ça .... mais pourrais tu coller le CODE DE LA REQUETE SQL que tu dois utiliser ?

 $sql ="  ................ ";

==>> Remplace les ....... par la requête à utiliser.

Là .. maintenant.. je ne sais comment je pourrais t'expliquer mieux que ça .... :-/
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
13 juin 2015 à 18:53
$sql ="  SELECT active FROM amis WHERE (pseudo_exp = '{$_SESSION['pseudo']}' AND pseudo_dest = '{$_GET['pseudo']}') ";
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 19:13
c'est bien celle là ...
Sauf qu'en l'état ... les variables ne sont pas bien passées ....
Il faut que tu utilises la syntaxe de la pdo...
Comme dans le code :
  $sql = "SELECT COUNT(id_invitation) as NB
	        FROM amis
          WHERE (pseudo_exp = :session_pseudo AND pseudo_dest = :get_pseudo)
            OR  (pseudo_ dest = :get_pseudo AND pseudo_dest = :session_pseudo)";

  // je place les  params dans une variable avant de l'utiliser :
  $params = array('get_pseudo' => $pseudoGet, 'session_pseudo' => $pseudoSession) ;
  
  $query = $bdd->prepare($sql);
  $query ->execute($params);  
  $result = $query->fetchall();
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
13 juin 2015 à 20:11
Merci vous êtes trop sympathique ^^
sinon j'ai 3 erreurs :

Notice: Undefined variable: pseudoGet in C:\wamp\www\rs\functions\profile.func.php on line 63

Notice: Undefined variable: pseudoSession in C:\wamp\www\rs\functions\profile.func.php on line 63

Notice: Undefined offset: 0 in C:\wamp\www\rs\functions\profile.func.php on line 70

<?php
//-----------------------------
//Profile.func.php 
//-----------------------------
// la fonction qui va recuperer les informations de la personne choisie par l'utilisateur
function recuperer_info_membre_choisi($pseudo = NULL) {
global $bdd; // déclaration globale de BDD

$result = array();

$sql = "SELECT * FROM utilisateurs WHERE pseudo=:pseudo" ;
$query = $bdd->prepare($sql);
$query->execute(array(':pseudo' =>$pseudo));
$result=$query->fetchall();

return $result;
}

//la function qui va vérifier si une demande existe entre les deux membres
function demande_existe() {
 global $bdd; // déclaration globale de BDD

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

  // je mets la requête dans une variable AVANT de l'utiliser
  // PS :  j'ai ajouté un ALIAS  (COUNT(id_invitation) as NB) afin de pouvoir plus facilement
  // utiliser le résultat de la requête...
  $sql = "SELECT COUNT(id_invitation) as NB
	        FROM amis
          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('get_pseudo' => $pseudoGet, 'session_pseudo' => $pseudoSession) ;
  
  $query = $bdd->prepare($sql);
  $query ->execute($params);  
  $result = $query->fetchall();
	
  //on récupère le NB de ta requête...
   $nb = $result[0]['NB'];
  //On fait un RETURN pour envoyer le résultat vers ton code...
  return $nb;
}

//la function qui va verifier si le destinataire a accepté la demande
function accepter_demande(){
  global $bdd;

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


  $sql = "SELECT active FROM amis 
	        FROM amis
          WHERE (pseudo_exp = :session_pseudo AND pseudo_dest = :get_pseudo)
            OR  (pseudo_ dest = :get_pseudo AND pseudo_dest = :session_pseudo)";

  // je place les  params dans une variable avant de l'utiliser :
  $params = array('get_pseudo' => $pseudoGet, 'session_pseudo' => $pseudoSession) ;
  
  $query = $bdd->prepare($sql);
  $query ->execute($params);  
  $result = $query->fetchall();
	
 //On récupère le contenu de la colonne 'active'
  $active = $result[0]['active'];
 
 // le return :
 // si active == 0 on retourne false .. sinon true :
 return $active == 0 ? false : true ;
}
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
13 juin 2015 à 20:24
J'ai toujours ce : Notice: Undefined offset: 0 in C:\wamp\www\rs\functions\profile.func.php on line 70

malgré la modif ligne 70
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 20:25
Tu as fais les deux corrections que je t'ai donné ???
reposte ton code modifié
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 20:28
Essaye ça :
 //On récupère le contenu de la colonne 'active'
  $active = isset($result) && count($result)>0 ? $result[0]['active'] : 0;

0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
13 juin 2015 à 20:29
<?php
//-----------------------------
//Profile.func.php 
//-----------------------------
// la fonction qui va recuperer les informations de la personne choisie par l'utilisateur
function recuperer_info_membre_choisi($pseudo = NULL) {
global $bdd; // déclaration globale de BDD

$result = array();

$sql = "SELECT * FROM utilisateurs WHERE pseudo=:pseudo" ;
$query = $bdd->prepare($sql);
$query->execute(array(':pseudo' =>$pseudo));
$result=$query->fetchall();

return $result;
}

//la function qui va vérifier si une demande existe entre les deux membres
function demande_existe() {
 global $bdd; // déclaration globale de BDD

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

  // je mets la requête dans une variable AVANT de l'utiliser
  // PS :  j'ai ajouté un ALIAS  (COUNT(id_invitation) as NB) afin de pouvoir plus facilement
  // utiliser le résultat de la requête...
  $sql = "SELECT COUNT(id_invitation) as NB
	        FROM amis
          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('get_pseudo' => $pseudoGet, 'session_pseudo' => $pseudoSession) ;
  
  $query = $bdd->prepare($sql);
  $query ->execute($params);  
  $result = $query->fetchall();
	
  //on récupère le NB de ta requête...
   $nb = $result[0]['NB'];
  //On fait un RETURN pour envoyer le résultat vers ton code...
  return $nb;
}

//la function qui va verifier si le destinataire a accepté la demande
function accepter_demande(){
  global $bdd;

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


  $sql = "SELECT active FROM amis 
	        FROM amis
          WHERE (pseudo_exp = :session_pseudo AND pseudo_dest = :get_pseudo)
            OR  (pseudo_ dest = :get_pseudo AND pseudo_dest = :session_pseudo)";

  // je place les  params dans une variable avant de l'utiliser :
  $params = array('get_pseudo' => $pseudo_exp , 'session_pseudo' => $pseudo_dest) ;
  
  $query = $bdd->prepare($sql);
  $query ->execute($params);  
  $result = $query->fetchall();
	
 //On récupère le contenu de la colonne 'active'
  $active = isset($result) ? $result[0]['active'] : 0;
 
 // le return :
 // si active == 0 on retourne false .. sinon true :
 return $active == 0 ? false : true ;
}
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 20:30
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
13 juin 2015 à 20:31
1 millions de merci; mon site est bientot terminé :)
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2015 à 20:49
Chouette :-)
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
13 juin 2015 à 20:54
RESPECT à vous :)
0