Afficher la liste de amis PDO

Résolu/Fermé
carterj Messages postés 44 Date d'inscription lundi 4 septembre 2017 Statut Membre Dernière intervention 3 août 2020 - 4 sept. 2017 à 19:32
carterj Messages postés 44 Date d'inscription lundi 4 septembre 2017 Statut Membre Dernière intervention 3 août 2020 - 13 sept. 2017 à 19:49
Bonjour,
voila je chercher depuis sans résultat comment afficher la liste d'amis des users help ! please

5 réponses

yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
4 sept. 2017 à 20:24
bonsoir, peux-tu décrire la structure de ta base de données?
0
carterj Messages postés 44 Date d'inscription lundi 4 septembre 2017 Statut Membre Dernière intervention 3 août 2020 1
11 sept. 2017 à 21:21
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
yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471 > carterj Messages postés 44 Date d'inscription lundi 4 septembre 2017 Statut Membre Dernière intervention 3 août 2020
Modifié le 11 sept. 2017 à 21:29
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
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
11 sept. 2017 à 23:50
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
carterj Messages postés 44 Date d'inscription lundi 4 septembre 2017 Statut Membre Dernière intervention 3 août 2020 1
12 sept. 2017 à 08:29
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
yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
Modifié le 12 sept. 2017 à 10:19
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
carterj Messages postés 44 Date d'inscription lundi 4 septembre 2017 Statut Membre Dernière intervention 3 août 2020 1 > yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024
Modifié le 12 sept. 2017 à 16:45
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
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
Modifié le 12 sept. 2017 à 17:13
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
carterj Messages postés 44 Date d'inscription lundi 4 septembre 2017 Statut Membre Dernière intervention 3 août 2020 1
Modifié le 13 sept. 2017 à 19:41
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
yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471 > carterj Messages postés 44 Date d'inscription lundi 4 septembre 2017 Statut Membre Dernière intervention 3 août 2020
Modifié le 13 sept. 2017 à 19:37
comment obtiens-tu l'identité de la personne connectée, celle dont tu cherches les amis?
est-ce ton premier exercice?
0
carterj Messages postés 44 Date d'inscription lundi 4 septembre 2017 Statut Membre Dernière intervention 3 août 2020 1 > yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024
13 sept. 2017 à 19:43
sois avec le
$_GET['id'] 
ou une function que j'ai créé
find_user_by_id('user_id');
0

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

Posez votre question
carterj Messages postés 44 Date d'inscription lundi 4 septembre 2017 Statut Membre Dernière intervention 3 août 2020 1
13 sept. 2017 à 19:49
:) sa marcher merci a vous tous. @Jordane Big up respect, @yg_be t'avais raison "l'identité de la personne connectée, "
0