Function accepter_demande() en pdo

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,

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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention   10
 
J'ai tenté de faire le code, je l'ai posté dites moi ce qui ne va pas svp
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention   10
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention   10
 
//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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
NON
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
....

reprenons dans l'ordre ....

Déjà ... quelle est la requête sql que tu dois réaliser ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Tu sais ce qu'est une requête sql au moins ??
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
Ouii c'est une instruction qui va permettre d'interroger ma bdd
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention   10
 
Requete SELECT
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
... oui .. requête de type SELECT ... ok .... mais et donc ... ?
Quelle est la requête dans son INTEGRALITE que tu dois utiliser ??
0
Zakarya93
 
Je ne sais pas
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
.......... 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
Zakarya93
 
Un SÉLECT active de 2 variables pseudo
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Zakarya93
 
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   Statut Membre Dernière intervention   10
 
$sql ="  SELECT active FROM amis WHERE (pseudo_exp = '{$_SESSION['pseudo']}' AND pseudo_dest = '{$_GET['pseudo']}') ";
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention   10
 
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   Statut Membre Dernière intervention   10
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Tu as fais les deux corrections que je t'ai donné ???
reposte ton code modifié
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention   10
 
<?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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
1 millions de merci; mon site est bientot terminé :)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Chouette :-)
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
RESPECT à vous :)
0