Function recuperer_info_membre_choisi() en pdo

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

J'ai cette function que je voudrais convertir en pdo :
<?php
// la fonction qui va recuperer les informations de la personne choisi par l'utilisateur
function recuperer_info_membre_choisi()
{
$results = array();
$pseudo = mysql_real_escape_string(htmlentities($_GET['pseud
o']));

$query = mysql_query("SELECT * FROM utilisateurs WHERE pseudo='$pseudo'");
while ($row = mysql_fetch_assoc($query))
{
$results[] = $row;
}

return $results;

} 


comme j'ai fais maintes erreurs à ce sujet, je pourrais solliciter votre aide ? je vous remercie d'avance: )

10 réponses

Résumé de la discussion

Conversion d'une fonction PHP qui récupère les informations d'un membre en PDO et difficultés rencontrées lors de la migration du code original vers une requête préparée. Plusieurs contributions évoquent des erreurs fréquentes comme l'utilisation de variables non définies, des arrays non initialisés, et des enjeux de sécurité, en proposant des ajustements avec PDO et fetch. Des réponses illustrent l'évolution du code, passant d'inclusions répétées à une fonction PDO, avec corrections sur les appels, la gestion des paramètres et le traitement des résultats via fetchAll. Une nuance utile porte sur les pratiques de sécurité et sur le moment où effectuer les conversions, afin d'éviter de mélanger transformations et requêtes.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    <?php
    //-----------------------------
     //Profile.php 
    //-----------------------------
    
    include_once('body/header.php');
    include_once('body/menu.php');
    ?>
    <div class='info'>
    <?php
    if(!function_exists('recuperer_info_membre_choisi')){
     echo "ERREUR : La fonction recuperer_info_membre_choisi n'existe pas ! ";
    }
    $pseudo = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
    $infos_membres_choisis = recuperer_info_membre_choisi($pseudo);
    
    foreach($infos_membres_choisis as $info_membre_choisi) {
     echo"<img src='avatar/". $info_membre_choisi['avatar']."' height='200' width='200' alt='avatar'>";
         echo "<p><strong>Email : </strong><em>".$info_membre_choisi['email']."</em></p>";
         echo "<p><strong>Sexe : </strong><em>".$info_membre_choisi['sexe']."</em></p>";
         echo "<p><strong>A propos de vous : </strong><em>".$info_membre_choisi['apropos']."</em></p>";
    }
    ?>
    </div>
    
    

    1
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Merci infiniement et bon repos ! :)
      0
  2. hharchi9 Messages postés 693 Statut Membre 24
     
    Essaye ça :
    <?php
    // la fonction qui va recuperer les informations de la personne choisi par l'utilisateur
    function recuperer_info_membre_choisi()
    {
    global $bdd; // déclaration globale de BDD
    $pseudo = htmlspecialchars(strip_tags($_GET['pseud
    o']));
    
    $query = $bdd->prepare("SELECT * FROM utilisateurs WHERE pseudo=:pseudo");
    $query->execute(array(':pseudo' =>$pseudo));
    $results=$query->fetchall();
    
    return $results;
    
    } 
    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      J'obtiens ça ; Parse error: syntax error, unexpected 'body' (T_STRING) in C:\wamp\www\rs\pages\profile.php on line 3

      profile.php :

      <?php
      include('functions/membre.func.php);
      include('body/header.php');
      include('body/menu.php');
      ?>
      <div class='info'>
      <?php
      $info_membres_choisi = recuperer_info_membre_choisi();
      
         foreach($infos_membres_choisis as $info_membre_choisi
         {
      	   ?>
      	               <img src="avatar/<?php echo $info_membre_choisi['avatar']; ?>"" height='200' width='200' alt='avatar'>
                         <p><strong>Email : </strong><em><?php echo $info_membre_choisi['email']; ?></em></p>
                         <p><strong>Sexe : </strong><em><?php echo $info_membre_choisi['sexe']; ?></em></p>
                         <p><strong>A propos de vous : </strong><em><?php echo $info_membre_choisi['apropos']; ?></em></p>
      	   <?php
         }
      ?>
      </div>
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Zakarya93 Messages postés 1026 Statut Membre
         
        Ligne 2... il te manque une quote
        0
    2. Zakarya93 Messages postés 1026 Statut Membre 10
       
      ah merci ! j'ai mtn : Parse error: syntax error, unexpected '?> ' in C:\wamp\www\rs\pages\profile.php on line 12
      0
    3. hharchi9 Messages postés 693 Statut Membre 24
       
      tu n'as pas fermé la parenthèse de ton foreach
      0
    4. Zakarya93 Messages postés 1026 Statut Membre 10
       
      J'obtiens mtn :

      Notice: Undefined variable: infos_membres_choisis in C:\wamp\www\rs\pages\profile.php on line 10

      Warning: Invalid argument supplied for foreach() in C:\wamp\www\rs\pages\profile.php on line 10
      0
  3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Commence par nous remontrer le code CORRIGE qu'on sache où tu en es !
    Penses également à nous mettre le code de ta fonction recuperer_info_membre_choisi()
    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Bah c'est le même sauf que j'ai rajouté ma parenthèse :
      <?php
      include('functions/membre.func.php');
      include('body/header.php');
      include('body/menu.php');
      ?>
      <div class='info'>
      <?php
      $info_membres_choisi = recuperer_info_membre_choisi();
      
         foreach($infos_membres_choisis as $info_membre_choisi
         {
          ?>
                      <img src="avatar/<?php echo $info_membre_choisi['avatar']; ?>"" height='200' width='200' alt='avatar'>
                         <p><strong>Email : </strong><em><?php echo $info_membre_choisi['email']; ?></em></p>
                         <p><strong>Sexe : </strong><em><?php echo $info_membre_choisi['sexe']; ?></em></p>
                         <p><strong>A propos de vous : </strong><em><?php echo $info_membre_choisi['apropos']; ?></em></p>
          <?php
         }
      ?>
      </div>


      profile.func.php :

      <?php
      // la fonction qui va recuperer les informations de la personne choisi par l'utilisateur
      function recuperer_info_membre_choisi()
      {
      global $bdd; // déclaration globale de BDD
      $pseudo = htmlspecialchars(strip_tags($_GET['pseudo']));
      
      $query = $bdd->prepare("SELECT * FROM utilisateurs WHERE pseudo=:pseudo");
      $query->execute(array(':pseudo' =>$pseudo));
      $results=$query->fetchall();
      
      return $results;
      
      }
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      ... c'est le même ...????
      Et la correction de la ligne 2 ?????????
      0
    3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Ne vois tu pas, quand tu postes ton message dans le forum... que les couleurs de tes différentes lignes peuvent sembler "bizarre" aux lignes 3 4 ... ????
      Penses bien qu'une chaine de caractères .. commence ET SE TERMINE par des quotes ! (simples ou doubles..peu importe... du moment que c'est le mêmes qui ouvrent et qui ferment !)
      0
    4. Zakarya93 Messages postés 1026 Statut Membre 10
       
      ah mince j'ai juste fait un c/c de ce topic, je l'avais déjà faite la modif ligne 2 sur mon notepad++ pardon
      0
    5. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Zakarya93 Messages postés 1026 Statut Membre
       
      Ah mince j'ai juste fait un c/c de ce topic, je l'avais déjà faite la modif ligne 2 sur mon notepad++ pardon

      C'est bien pour ça .. qu'a chaque fois que je te demande le code ... je veux celui QUI EST SUR TON PC ... et pas celui du topic ! .. ce n'est pas la première fois que je te le dis.....
      Merci de faire attention.
      0
  4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Que vient faire l'include
    include('functions/membre.func.php'); 
     

    dans ce code ?
    Alors que tu utilises la page profile.func.php ...
    l'erreur ne serait-elle pas là ?
    Et pourquoi est-ce un INCLUDE au lieu d'un REQUIRE_ONCE (comme pour tes autres pages... voir mes remarques précédentes .... dans tes précédentes questions.....)
    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      J'ai rien dit, ce sujet traite de liste_membre.php...
      sinon j'ai commenté cette ligne de code et aussi testé le require once rien n'a fonctionné
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      tu as essayé d'inclure ta page profile.func.php à la place de membre.func.php ??
      0
      1. Zakarya93 Messages postés 1026 Statut Membre 10 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Oui j'obtiens : Fatal error: Cannot redeclare recuperer_info_membre_choisi() (previously declared in C:\wamp\www\rs\functions\profile.func.php:3) in C:\wamp\www\rs\functions\profile.func.php on line 14

        et avec le require_once j'ai les 2 memes erreurs
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    et avec le require_once j'ai les 2 memes erreurs

    Normale ... car VU qu'il est déjà déclaré dans ton INDEX.PHP ... il ne le remet pas ... contrairement à l'include (ou au require) simple (c'est à dire ...sans le ONCE )....

    Pour ce qui est des messages d'erreurs... et pour calmer mes doutes... pourrais tu (encore) ... nous mettre le code de tes deux pages ?

    PS: Si tu pouvais utiliser le BOUTON : REPONDRE .. au lieu de mettre tes messages en commentaires... cela rendrait le suivi de la discussion plus simple. Merci.
    0
  7. Zakarya93 Messages postés 1026 Statut Membre 10
     
    Profile.php

    <?php
    require('functions/profile.func.php');
    include('body/header.php');
    include('body/menu.php');
    ?>
    <div class='info'>
    <?php
    $info_membres_choisi = recuperer_info_membre_choisi();
    
       foreach($infos_membres_choisis as $info_membre_choisi)
       {
    	   ?>
    	               <img src="avatar/<?php echo $info_membre_choisi['avatar']; ?>"" height='200' width='200' alt='avatar'>
                       <p><strong>Email : </strong><em><?php echo $info_membre_choisi['email']; ?></em></p>
                       <p><strong>Sexe : </strong><em><?php echo $info_membre_choisi['sexe']; ?></em></p>
                       <p><strong>A propos de vous : </strong><em><?php echo $info_membre_choisi['apropos']; ?></em></p>
    	   <?php
       }
    ?>
    </div>


    Profile.func.php :

    <?php
    // la fonction qui va recuperer les informations de la personne choisi par l'utilisateur
    function recuperer_info_membre_choisi()
    {
    global $bdd; // déclaration globale de BDD
    $pseudo = htmlspecialchars(strip_tags($_GET['pseudo']));
    
    $query = $bdd->prepare("SELECT * FROM utilisateurs WHERE pseudo=:pseudo");
    $query->execute(array(':pseudo' =>$pseudo));
    $results=$query->fetchall();
    
    return $results;
    
    }
    0
    1. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      P.S.: bien que ce que tu fais ne soit pas incorrect, par convention on stocke les infos non transformées dans la BDD, et on les convertit (ici
      htmlspecialchars(strip_tags
      ) uniquement dès la sortie. Autrement dit cette conversion n'a pas sa place dans les requêtes, mais uniquement lors de l'affichage du pseudo sur la page.
      0
      1. Zakarya93 Messages postés 1026 Statut Membre 10 > ElementW Messages postés 5690 Statut Contributeur
         
        du coup ça donne ? :
        ?php
        // la fonction qui va recuperer les informations de la personne choisi par l'utilisateur
        function recuperer_info_membre_choisi()
        {
        global $bdd; // déclaration globale de BDD
        $pseudo = ($_GET['pseudo']));
        
        $query = $bdd->prepare("SELECT * FROM utilisateurs WHERE pseudo=:pseudo");
        $query->execute(array(':pseudo' =>$pseudo));
        $results=$query->fetchall();
        
        return $results;
        
        }
        0
  8. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bon... je recommence ...
    La ligne 2 est INUTILE .....
    Si tu essaies de comprendre un minimum ce que tu codes ... tu vas comprendre que tu fais DEJA un include de tes fonctions dans ton INDEX.PHP.
    ( Lorsque tu affiches une page toto .... tu fais EN MEME TEMPS un include de toto.func.php ) !

    Bon.. ensuite :
    Evite de récupérer les variables GET DANS tes fonctions... traite les AVANT .. et passe les en PARAMETRES DE TA FONCTION.

    de plus (comme déjà dit...) ... Pour toutes tes variables de type POST / GET / SESSION / COOKIE ...... vérifie AVANT de les utiliser... qu'elles existent. Cela se fait via la fonction ISSET.

    Essayes ça :
    Profile.php
    <?php
    //-----------------------------
     //Profile.php 
    //-----------------------------
    
    include_once('body/header.php');
    include_once('body/menu.php');
    ?>
    <div class='info'>
    <?php
    $pseudo = isset($GET|'pseudo'])?$GET|'pseudo']:NULL;
    $info_membres_choisi = recuperer_info_membre_choisi(pseudo);
    
    foreach($infos_membres_choisis as $info_membre_choisi) {
     echo"<img src='avatar/". $info_membre_choisi['avatar']."' height='200' width='200' alt='avatar'>";
         echo "<p><strong>Email : </strong><em>".$info_membre_choisi['email']."</em></p>";
         echo "<p><strong>Sexe : </strong><em>".$info_membre_choisi['sexe']."</em></p>;"
         echo "<p><strong>A propos de vous : </strong><em>".$info_membre_choisi['apropos']."</em></p>";
    }
    ?>
    </div>
    
    

    (tu noteras qu'encore une fois.. je t'ai tout remis en PHP (pour éviter d'ouvrir/fermer des balises PHP partout dans ton code ! )

    //Profile.func.php
    <?php
    //-----------------------------
    //Profile.func.php 
    //-----------------------------
    // la fonction qui va recuperer les informations de la personne choisi par l'utilisateur
    function recuperer_info_membre_choisi($pseudo = NULL) {
    global $bdd; // déclaration globale de BDD
    
    $result = array();
    if($pseudo){
      $sql = "SELECT * FROM utilisateurs WHERE pseudo=:pseudo" ;
      $query = $bdd->prepare($sql);
      $query->execute(array(':pseudo' =>$pseudo));
      $result=$query->fetchall();
    }
    return $result;
    
    }
    
    


    edit : ajout d'un IF dans le fichier profil.func.php

    Cordialement,
    Jordane
    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Merci pour ces explications ! j'ai donc ceci : Parse error: syntax error, unexpected ']' in C:\wamp\www\rs\pages\profile.php on line 11
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Zakarya93 Messages postés 1026 Statut Membre
         
        Oui.. erreur de touche de clavier...
        A ton avis .. qu'est-ce qui n'est pas bon dans cette ligne de code :
        $pseudo = isset($GET|'pseudo'])?$GET|'pseudo']:NULL;
        


        Essaye de trouver AVANT de lire ce qui est en dessous...

        ..... Je me suis trompé et aie mis un PIPE | ... au lieu d'un crochet [
        0
      2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Ce qui donne :

        $pseudo = isset($GET['pseudo'])?$GET['pseudo']:NULL;
        

        0
    2. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Merci ! mtn j'ai Parse error: syntax error, unexpected ']' in C:\wamp\www\rs\pages\profile.php on line 11
      0
    3. Zakarya93 Messages postés 1026 Statut Membre 10
       
      2 barres en fait c pour ça !
      0
  9. Zakarya93 Messages postés 1026 Statut Membre 10
     
    J'ai mtn cette erreur : Parse error: syntax error, unexpected 'echo' (T_ECHO), expecting ',' or ';' in C:\wamp\www\rs\pages\profile.php on line 18
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Regarde ligne 17.. j'ai fait une erreur en fin de ligne
      0
      1. Zakarya93 Messages postés 1026 Statut Membre 10 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        C corrigé ! j'ai mtn 3 erreurs :'(

        Notice: Use of undefined constant pseudo - assumed 'pseudo' in C:\wamp\www\rs\pages\profile.php on line 12

        Notice: Undefined variable: infos_membres_choisis in C:\wamp\www\rs\pages\profile.php on line 14
        Call Stack

        Warning: Invalid argument supplied for foreach() in C:\wamp\www\rs\pages\profile.php on line 14
        Call Stack
        0
  10. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Je fais beaucoup d'erreur ce soir .... faut que j'aille dormir... ^^

    Si tu regardes bien à la ligne 12 .. tu vas voir que j'ai oublié un $ ....
    Spoiler
    $pseudo = isset($GET|'pseudo'])?$GET|'pseudo']:NULL;
    $info_membres_choisi = recuperer_info_membre_choisi($pseudo);
    


    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Ensuite .... Ligne 14 ... ... le nom de la variable ne correspond pas à celle de la ligne 12 ... (infos ..et info sans S )
      change la ligne 12 comme ceci :
      $pseudo = isset($GET|'pseudo'])?$GET|'pseudo']:NULL;
      $infos_membres_choisis = recuperer_info_membre_choisi($pseudo);
      
      0
    2. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Oh je ne voudrais surtout pas vous en priver ^^
      j'ai mtn : Notice: Undefined variable: infos_membres_choisis in C:\wamp\www\rs\pages\profile.php on line 14

      Warning: Invalid argument supplied for foreach() in C:\wamp\www\rs\pages\profile.php on line 14
      0
  11. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Tu peux me reposter le code corrigé de ta page //Profile.php ?
    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      <?php
      //-----------------------------
       //Profile.php 
      //-----------------------------
      
      include_once('body/header.php');
      include_once('body/menu.php');
      ?>
      <div class='info'>
      <?php
      $pseudo = isset($GET['pseudo'])?$GET['pseudo']:NULL;
      $info_membres_choisis = recuperer_info_membre_choisi($pseudo);
      
      foreach($infos_membres_choisis as $info_membre_choisi) {
       echo"<img src='avatar/". $info_membre_choisi['avatar']."' height='200' width='200' alt='avatar'>";
           echo "<p><strong>Email : </strong><em>".$info_membre_choisi['email']."</em></p>";
           echo "<p><strong>Sexe : </strong><em>".$info_membre_choisi['sexe']."</em></p>";
           echo "<p><strong>A propos de vous : </strong><em>".$info_membre_choisi['apropos']."</em></p>";
      }
      ?>
      </div>
      0