Afficher la liste de amis PDO

Résolu
carterj Messages postés 45 Statut Membre -  
carterj Messages postés 45 Statut Membre -
Bonjour,
voila je chercher depuis sans résultat comment afficher la liste d'amis des users help ! please

5 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonsoir, peux-tu décrire la structure de ta base de données?
    0
    1. carterj Messages postés 45 Statut Membre 1
       
      bonjour j'ai une table users avec des users ^^ et une table des amies friends_relationship ( user_id1, user_id2, status, created_at), merci d'avance
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > carterj Messages postés 45 Statut Membre
         
        si jamais tu voulais de l'aide, n'hésite pas à expliquer la signification de chacun des champ, ou même à donner un exemple.
        0
  2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Nous ne sommes pas là pour faire le travail à votre place ni pour remplacer votre moteur de recherches...

    Merci de nous décrire précisément votre problème ainsi que le code déjà réalisé.

    Merci également de lire ceci :
    Cliquez ici pour des conseils d'écriture des messages.

    NB : Pour poster votre code, merci de penser à utiliser la coloration syntaxique.
    0
  3. carterj Messages postés 45 Statut Membre 1
     
    Merci pour vos réponse voila le code déjà réaliser
    <?php
    // recupere les info daans la bdd
    $dox = $db->prepare('SELECT (user_id1 + user_id2 - :id) AS user_id2 FROM friends_relationships LEFT JOIN users ON id = (user_id1 + user_id2 - :id) WHERE (user_id1 = :id OR user_id1 = :id) AND status = :1 ');
    $dox->bindValue(':id',$id,PDO::PARAM_INT);
    $dox->bindValue(':1','1',PDO::PARAM_STR);
    $dox->execute();
    // si le user n'a pas dami on lui affiche une echo...
    if($dox->rowCount() == 0){
    echo "Vous n'avez pas d'ami(es) pour l'instat merci dans ajoutez";
    }
    // Affichage de nombre d'amies avec while
    while ($data = $dox->fetch(PDO::FETCH_ASSOC)){ ?>
    <img src="<?= $data->avatar ? $data->avatar : get_avatar_url($data->email) ?>"
    class="avatar-xs" style="width: 50px; height: 50px;">  <?php echo htmlspecialchars(trim($data['pseudo'])); ?>
    <?php
    }
    ?>

    le champ user_id1 = l'id du membre
    le champs user_id2 = l'id de l'amie..

    l’erreur elle afffiche toujour "Vous n'avez pas d'ami(es) pour l'instat merci dans ajoutez" alors que l'utilisateur a des amies
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peut-être ainsi:
      SELECT  user_id2   FROM friends_relationships  WHERE user_id1 = :id  AND status = :1 
      UNION
      SELECT  user_id1   FROM friends_relationships  WHERE user_id2 = :id  AND status = :1

      ou bien
      SELECT  user_id2, avatar, email   FROM friends_relationships, users  WHERE user_id1 = :id  AND status = :1 AND id = user_id2 
      UNION
      SELECT  user_id1, avatar, email    FROM friends_relationships, users  WHERE user_id2 = :id  AND status = :1 AND id = user_id1
      0
      1. carterj Messages postés 45 Statut Membre 1 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        merci !! mais se toujours la même erreur qui s'affiche :(

        $dox = $db->prepare("SELECT  user_id2, avatar, email   FROM friends_relationships, users  WHERE user_id1 = :id  AND status = :1 AND id = user_id2 
              UNION
              SELECT  user_id1, avatar, email    FROM friends_relationships, users  WHERE user_id2 = :id  AND status = :1 AND id = user_id1");
        0
  4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Avant tout .. j'espère que tu as activé la gestion des erreurs PDO.
    Voir ici comment faire :
    https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

    Ensuite,
    - On place ses requêtes dans des blocs TRY/CATCH
    - On n'utilise pas ROWCOUNT en PDO ! A la place on fera un fetchAll (avec si besoin, un count sur l'array $result ))
    - On évite d'ouvrir/fermer des balises php à tout va.... A la place on génèrera le html dans des echo.

    Bref... ton code remis en forme devrait ressembler à ceci :
    (tu remarqueras que j'ai refait la requête .... mais sans connaitre la structure exacte de tes tables difficiles de savoir si elle marchera du premier coup. )

    <?php
       // recupere les info daans la bdd 
       
       $sql = 'SELECT FR.user_id1
         ,U1.id as id_user1
                     ,U1.avatar as avatar1
         ,U1.email  as email1
         ,U1.pseudo as pseudo1
         ,FR.user_id2
         ,U2.id as id_usr2
         ,U2.avatar as avatar2
         ,U2.email  as email2
         ,U2.pseudo as pseudo2
               FROM friends_relationships FR
         LEFT JOIN users U1 ON U1.id = user_id1 
         LEFT JOIN users U2 ON U2.id = user_id2
         WHERE (user_id1 = :id OR user_id1 = :id) AND status = :1 '
       try{
        $dox = $db->prepare($sql);
        $dox->bindValue(':id',$id,PDO::PARAM_INT);       
        $dox->bindValue(':1','1',PDO::PARAM_STR);
        $dox->execute();
     //on stocke le resultat dans un array
     $result = $dox->fetchAll();
       }catch(Exception $e){
        echo "Erreur dans la requête " .$sql;
        echo "<br>".$e->getMessage();
       }
          
       if(!empty($result)){
          //on boucle sur le resultat
          foreach($result as $R){
      echo "<img src='". $R['avatar2'] ? $R['avatar2'] : get_avatar_url($R['email2']) ."' 
                 class='avatar-xs' style='width: 50px; height: 50px;'
           alt='avatar'>";
      echo htmlspecialchars(trim($R['pseudo2']));
       }
       }else{
       // si le user n'a pas dami on lui affiche une echo... 
       echo "Vous n'avez pas d'ami(es) pour l'instat merci dans ajoutez";
       }   
    ?>
    


    Cordialement, 
    Jordane                                                                 
    0
    1. carterj Messages postés 45 Statut Membre 1
       
      Merci bcp pour votre aide ce toujours pas resolu je trouve vraiment pas l'erreur est dû a quoi voici l'erreur en question

      Notice: Undefined variable: id in C:\xampp\htdocs\friendme\friends\friends_count.php on line 20
      Vous n'avez pas d'ami(es) pour l'instat merci dans ajoutez

      la line 20 en question
      $dox->bindValue(':id' ,$id,PDO::PARAM_INT);

      quand je mi genre
      $id = "" ;
      l'erreur s'affiche pas mais le
       echo "Vous n'avez pas d'ami(es) pour l'instat merci dans ajoutez";
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > carterj Messages postés 45 Statut Membre
         
        comment obtiens-tu l'identité de la personne connectée, celle dont tu cherches les amis?
        est-ce ton premier exercice?
        0
      2. carterj Messages postés 45 Statut Membre 1 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        sois avec le
        $_GET['id'] 
        ou une function que j'ai créé
        find_user_by_id('user_id');
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. carterj Messages postés 45 Statut Membre 1
     
    :) sa marcher merci a vous tous. @Jordane Big up respect, @yg_be t'avais raison "l'identité de la personne connectée, "
    0