💡 Envie de vous mettre à Node.js ? En savoir plus...

Affichage de photo avec id

ets_raphael

ets_raphael Le 19 juin 2017 à 01:08 (Édité le 25 janvier 2019 à 17:53)

Bonjour, 

J'avais un petit souci pour relier 2 tables, je voulais savoir si ma manipulation était la bonne.. Pour faire  simple je voudrais juste que la photo de la personne qui poste se retrouverais juste a coté de sont article, je vous poste ce que je devrais arranger ( du moins je pense ) pour que ca marche. 

On retrouve l'id dans ma table de membre, et id_utilisateur dans ma table articles (qui est exactement le même id que celui dans ma table membre)
$avatar_article = $bdd->query('SELECT DISTINCT avatar FROM membres, articles  WHERE id = id_utilisateur');
Par la suite pour l'afficher voici ma commande : 
<img src="membres/avatars/<?php echo $avatar_article;?>" >

Je pense que l'erreur ce situe dans ma requête mais encore la je suis pas sûre, merci a ceux qui m'aideront 😀 
ThomasT

ThomasT Le 19 juin 2017 à 21:01

Hey

Wow tu as sauté pas mal de tuto php dis moi ?

après ton query il faut afficher tes données
ou ta donnée
par exemple si tu n'as qu'un resultat fait un simple fetch comme ceci :

$data = $avatar_article->fetch();
puis ensuite pour l'image tu fais :
<img src="membres/avatars/<?php echo $data['avatar'];?>" >

Pour ta partie sql (query) je te conseil de faire une simple requête :
$avatar_article = $bdd->prepare('SELECT id, avatar FROM membres WHERE id = ?');
$avatar_article->execute(array($lefameuxID));
//puis pour afficher :
$data = $avatar_article->fetch(); //fetch = mise en tableau des résultats (array)

<img src="membres/avatars/<?php echo $data['avatar'];?>" > //puis tu affiches

J’espère t'avoir aidé 😉
ets_raphael

ets_raphael Le 20 juin 2017 à 07:46

Merci a toi mais ca coince toujours :x 

Je ne comprends pas comment t'as première requête peut me récupérer l'avatar de cette personne qui poste sont article. Parce que c'est la l'utilité de mon id_utilisateur qui est identique a l'id qui pourrait me récupérer tout ca ( tu me diras si je me trompe ). C'est pour ca que je voulais inscrire dans ma requête qu'il faut que  id_utilisateur = id. Alors que dans le tiens ce que je comprends c'est que tu ne fais a aucun moment la relation :/ 


ThomasT

ThomasT Le 20 juin 2017 à 08:12

annnh j'ai compris ce que tu veux 😋

Déjà mettons les choses au clair : "L'option DISTINCT permet d'éliminer les doublons c'est-à-dire de ne pas les prendre en compte pendant la sélection"

là je te conseil de créer une fonction qui récupère l'avatar de la personne comme ceci :
function avatar($id_user)
{
   global $bdd; //pour inclure la bdd dans la fonction
   $query = $bdd->prepare('SELECT id, avatar FROM membres WHERE id = ?');
   $query ->execute(array($id_user));

if($query->rowCount() == 0)
{
 return FALSE; // on retourne une erreur si aucun résultat n'est retourné
} else {
   $data = $query->fetch();
   return $data['avatar']; // on retourne le valeur avatar de la base de données
}
}
Pour utiliser ta fonction tu feras ceci dans la variable qui a les données d'un de tes posts :
echo avatar($post['owner']); //$post['owner'] est l'id de l'utilisateur, $post est le résultat d'un $requete->fetch()
si tu veux mettre en forme un peu tout ça tu peux :
echo '<img src="'.avatar($post['owner']).'">';
thiernosow

thiernosow Le 22 juin 2017 à 01:29 (Édité le 22 juin 2017 à 01:30)

erreur
Zbuu

Zbuu Le 24 juin 2017 à 07:38

Tu peux utilisé un left join dans ta requête : 
$q = $bdd->prepare("SELECT a.id, a.title, a.content, m.avatar FROM articles AS a LEFT JOIN membres AS m ON m.id = a.id_utilisateur WHERE a.id = :id_article");
$q->execute([':id_article' => $id_article]);
$articles = $q->fetch();
Bien entendu c'est à toi de mettre les bons champs et changé la variable :)
Tu devrais t'en sortir, mais si vraiment tu coinces alors donne nous le champs de tes table et montre nous ton code 😀 
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte