Parse error: syntax error, unexpected '$bdd' (T_VARIABLE),

Résolu
Zakarya93 Messages postés 1026 Statut Membre -  
Zakarya93 Messages postés 1026 Statut Membre -
Bonjour,

J'ai cette erreur : Parse error: syntax error, unexpected '$bdd' (T_VARIABLE), expecting '{' in C:\wamp\www\rs\functions\liste_membre.func.php on line 5

Sachant que je voulais convertir ce script (membre.func.php) en pdo :
<?php
//la function qui va récupérer le pseudo et l'avatar des membres sauf de celui connecté
function recuperer_pseudo_avatar()
{
$results = array();
$query = mysql_query("SELECT pseudo,avatar FROM utilisateurs WHERE pseudo!='{$_SESSION['pseudo']}'");
while($row = mysql_fetch_assoc($query))
{
$results[] = $row;
}
return $results;
}
?> 


J'ai fais :
<?php
//la function qui va récuperer le pseudo et l'avatar du membre sauf de celui connecté
function recuperer_pseudo_avatar()

$bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', '');
    //donc la, la verification:
$req = $bdd->query('SELECT COUNT(*) FROM utilisateurs WHERE pseudo="'.$pseudo.'" AND avatar="'.$avatar.'"');
$etat = $req->fetchColumn();  

if($etat == 0){
return 0;
}else{
 return 1;

     }
}

?>


Pouvez-vous me corriger svp et voir mon erreur ? Merci d'avance :)

4 réponses

  1. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
     
    { oubliée.
    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      J'ai maintenant 3 erreurs :

      Notice: Undefined variable: pseudo in C:\wamp\www\rs\functions\liste_membre.func.php on line 7

      Notice: Undefined variable: avatar in C:\wamp\www\rs\functions\liste_membre.func.php on line 7

      Warning: Invalid argument supplied for foreach() in C:\wamp\www\rs\pages\liste_membre.php on line 10
      0
    2. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      Avant :
      pseudo!='{$_SESSION['pseudo']}'
      Après :
      pseudo="'.$pseudo.'"

      Si tu veux utiliser une variable globale dans une fonction, tu dois la redéclarer comme Globale (oui, c'est pas toujours évident/logique PHP).
      0
    3. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Corrigez mon code svp :

      <?php
      //la function qui va récuperer le pseudo et l'avatar du membre sauf de celui connecté
      function recuperer_pseudo_avatar() {
      	global $bdd; // déclaration globale de BDD
      
      $bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', '');
          //donc la, la verification:
      $req = $bdd->query('SELECT COUNT(*) FROM utilisateurs WHERE pseudo="'.$pseudo.'" AND avatar="'.$avatar.'"');
      $etat = $req->fetchColumn();  
      
      if($etat == 0){
      return 0;
      }else{
       return 1;
      
           }
      }
      
      ?>
      0
    4. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      Je t'ai donné des pistes de recherche, a toi de voir, j'ai l'impression qui tu attends une réponse toute faite.

      Si tu rencontre un soucis, décris-le. le problème de variable a déjà été décrit dans mon précédent message.
      0
    5. hharchi9 Messages postés 693 Statut Membre 24
       
      Bonsoir,

      Ces variables, elles sont issues de la session active (si le membre A est connecté, ce sont les infos d membre A qui s'affichent) ?
      0
  2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonsoir, je vais me méler un peu de cette discussion...

    Déjà ... NE REMETS PAS la connexion à ta BDD dans ton code !
    Tu as un fichier de connexion.. tu l'importe via un REQUIRE ça suffira ! (comme on l'a fait dans tes autres codes !!!!)

    Ton souci de variable BDD non déclarée... vient du fait qu'il faut que tu penses à mettre un global $bdd; dans chacune de tes fonctions !

    <?php
    //la function qui va récuperer le pseudo et l'avatar du membre sauf de celui connecté
    function recuperer_pseudo_avatar($pseudo,$avatar="defaut.jpg") {
     global $bdd; // déclaration globale de BDD
    
    $req = $bdd->query('SELECT COUNT(*) FROM utilisateurs WHERE pseudo="'.$pseudo.'" AND avatar="'.$avatar.'"');
    $etat = $req->fetchColumn();  
    
    // ceci ne fonctionnera jamais !
    /*if($etat == 0){
    return 0;
    }else{
     return 1;
    
         }
    */
    
    // commence par faire un PRINT de ta variable $etat pour savoir ce qu'elle contient 
    print_r($etat);
    
    // Ensuite si ton but est de savoir si la requête a retourné quelquechose tu peux faire:
    return count($etat)>0 ? 1 : 0 ;
    
    }
    
    ?>
    
    


    Penses aussi à nous montrer COMMENT tu appelles la fonction dans ton code .... quels arguments tu lui passes (car il en faut... il faut le pseudo.. ET l'avatar .... )*

    Cordialement,
    Jordane
    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      (script liste_membre.php juste au dessus)

      J'ai entré ceci :
      <?php
      //la function qui va récuperer le pseudo et l'avatar du membre sauf de celui connecté
      function recuperer_pseudo_avatar($pseudo,$avatar="defaut.jpg") {
       global $bdd; // déclaration globale de BDD
      
      $req = $bdd->query('SELECT COUNT(*) FROM utilisateurs WHERE pseudo="'.$pseudo.'" AND avatar="'.$avatar.'"');
      $etat = $req->fetchColumn();  
      
      
      // commence par faire un PRINT de ta variable $etat pour savoir ce qu'elle contient 
      print_r($etat);
      
      // Ensuite si ton but est de savoir si la requête a retourné quelquechose tu peux faire:
      return count($etat)>0 ? 1 : 0 ;
      
      }
      
      ?>


      et j'obtiens :
      Warning: Missing argument 1 for recuperer_pseudo_avatar(), called in C:\wamp\www\rs\pages\liste_membre.php on line 8 and defined in C:\wamp\www\rs\functions\liste_membre.func.php on line 3

      Notice: Undefined variable: pseudo in C:\wamp\www\rs\functions\liste_membre.func.php on line 6

      Warning: Invalid argument supplied for foreach() in C:\wamp\www\rs\pages\liste_membre.php on line 10
      0
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Tu veux récupérer l'avatar de tous les users sauf de celui qui est connecté ?
    Dans ce cas... ta requête n'est pas bonne !

    Change le code ainsi :
    
    //la function qui va récuperer le pseudo et l'avatar du membre sauf de celui connecté
    function recuperer_pseudo_avatar() {
     global $bdd; // déclaration globale de BDD
    
    $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo'] : NULL;
    $strWhere = $pseudo ? " WHERE pseudo !='$pseudo'  " : '' ;
    
    $sql = "SELECT pseudo, avatar FROM utilisateurs $strWhere";
    
     $req = $bdd->query($sql);
     return $req->fetchColumn();  
    
    }
    
    


    Et donc là .. dans ta page liste_membre.php
    <?php 
    include('functions/membre.func.php');
    include('body/header.php');
    include('body/menu.php');
    ?>
    <h3>Liste des membres</h3>
    <?php 
    $pseudos_avatars = recuperer_pseudo_avatar();
    
      foreach($pseudos_avatars as $pseudo_avatar) {
        echo "<p><a href=''>".$pseudo_avatar['pseudo']."</a></p>
                  <img src='avatar/".$pseudo_avatar['avatar']."' height='100' width='100' alt='avatar'>";
      }
    


    PS: Tu remarqueras que j'ai tout fait dans le PHP .. pour éviter d'ouvrir/fermer des balises php un peu partout dans le code !
    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Merci! j'obtiens : Fatal error: Call to undefined function recuperer_pseudo_avatar() in C:\wamp\www\rs\pages\liste_membre.php on line 8
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Tu peux remplacer l'inclde par un REQUIRE_ONCE de la ligne :
      include('functions/membre.func.php');
      


      ==>>
      require_once('functions/membre.func.php');
      
      0
    3. Zakarya93 Messages postés 1026 Statut Membre 10
       
      malgré ceci j'ai : Fatal error: Call to undefined function recuperer_pseudo_avatar() in C:\wamp\www\rs\pages\liste_membre.php on line 8
      Call Stack
      0
    4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Zakarya93 Messages postés 1026 Statut Membre
       
      tu peux nous poster de nouveau le code de ta page functions/membre.func.php ?
      0
    5. Zakarya93 Messages postés 1026 Statut Membre 10
       
      <?
      //la function qui va récuperer le pseudo et l'avatar du membre sauf de celui connecté
      function recuperer_pseudo_avatar() {
       global $bdd; // déclaration globale de BDD
      
      $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo'] : NULL;
      $strWhere = $pseudo ? " WHERE pseudo !='$pseudo'  " : '' ;
      
      $sql = "SELECT pseudo, avatar FROM utilisateurs $strWhere";
      
       $req = $bdd->query($sql);
       return $req->fetchColumn();  
      
      }
      0
  4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Désolé.. pas besoin de mettre de fecth avec query ...
    Mais de toutes façons.. il vaut mieux passer par les requête préparées :

    function recuperer_pseudo_avatar() {
     global $bdd; // déclaration globale de BDD
    
    $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo'] : NULL;
    $strWhere = $pseudo ? " WHERE pseudo !='$pseudo'  " : '' ;
    
    $sql = "SELECT pseudo, avatar FROM utilisateurs $strWhere";
    
     $req = $bdd->prepare($sql);
     $req->execute();  
     $resultat = $req->fetchall();
    return $resultat;
    }
    


    Et pour tester,

    <?php 
    require_once('functions/membre.func.php');
    include('body/header.php');
    include('body/menu.php');
    ?>
    <h3>Liste des membres</h3>
    <?php 
    $pseudos_avatars = recuperer_pseudo_avatar();
    
    // le temps des tests :
    print_r($pseudos_avatars);
    
     foreach($pseudos_avatars as $pseudo_avatar) {
        echo "<p><a href=''>".$pseudo_avatar['pseudo']."</a></p>
                  <img src='avatar/".$pseudo_avatar['avatar']."' height='100' width='100' alt='avatar'>";
      }
    
    

    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      j'obtiens : Array ( [0] => Array ( [pseudo] => jean [0] => jean [avatar] => defaut.jpg [1] => defaut.jpg ) )

      jean

      c'est parfait ! Merci encore, que Dieu vous garde !
      0