Signaler

Afficher la liste de amis PDO [Résolu]

Posez votre question carterj 18Messages postés lundi 4 septembre 2017Date d'inscription 23 septembre 2017 Dernière intervention - Dernière réponse le 13 sept. 2017 à 19:49 par carterj
Bonjour,
voila je chercher depuis sans résultat comment afficher la liste d'amis des users help ! please
Utile
+0
plus moins
bonsoir, peux-tu décrire la structure de ta base de données?
carterj 18Messages postés lundi 4 septembre 2017Date d'inscription 23 septembre 2017 Dernière intervention - 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
Répondre
yg_be 3388Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 23 septembre 2017 Dernière intervention - 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.
Répondre
Donnez votre avis
Utile
+0
plus moins
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.
Donnez votre avis
Utile
+0
plus moins
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
yg_be 3388Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 23 septembre 2017 Dernière intervention - 12 sept. 2017 à 09:39
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
Répondre
carterj 18Messages postés lundi 4 septembre 2017Date d'inscription 23 septembre 2017 Dernière intervention - 12 sept. 2017 à 16:43
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");
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour,

Avant tout .. j'espère que tu as activé la gestion des erreurs PDO.
Voir ici comment faire :
http://www.commentcamarche.net/faq/46512-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                                                                 
carterj 18Messages postés lundi 4 septembre 2017Date d'inscription 23 septembre 2017 Dernière intervention - 13 sept. 2017 à 19:32
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";
Répondre
yg_be 3388Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 23 septembre 2017 Dernière intervention - 13 sept. 2017 à 19:36
comment obtiens-tu l'identité de la personne connectée, celle dont tu cherches les amis?
est-ce ton premier exercice?
Répondre
carterj 18Messages postés lundi 4 septembre 2017Date d'inscription 23 septembre 2017 Dernière intervention - 13 sept. 2017 à 19:43
sois avec le
$_GET['id'] 
ou une function que j'ai créé
find_user_by_id('user_id');
Répondre
Donnez votre avis
Utile
+0
plus moins
:) sa marcher merci a vous tous. @Jordane Big up respect, @yg_be t'avais raison "l'identité de la personne connectée, "
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !