Bonjour,
J'ai une base de données contenant des informations sur des actions effectuées par des modérateurs. Chaque modérateurs peux ajouter de nouveaux articles dans la bdd
ACTIONS :
articles:
id
titre
user_id
user:
id
username
Ensuite sur une page qui consiste a regrouper ses modérateurs avec leurs articles respectif.
Ma question est comment puis-je faire apparaitre tous leurs articles pour chaque modérateur.
Merci d'avance pour vos réponses
Salut,
cela me parait simple a moins que je n'ai pas compris ce que tu souhaite faire...
SELECT * FROM articles WHERE user_id = "l'id de l'utilisateur";
Ensuite tu boucle en php pour afficher les articles.
Non ce n'est pas a ça que je pense. Faison un exemple, l'utilisateur (1) posséde 1 articles et l'utilisateur (2) 2 articles, ce qui donne ds la bdd :
articles =
id (1) , titre (article 1) , user_id (1)
id (2) , titre (article 2) , user_id (2)
id (3) , titre (article 3) , user_id (2)
users =
id (1) , username (Jean paul)
id (2) , username (Pascal)
Ensuite je veux afficher :
re,
select * from articles a inner join users u on a.user_id = u.id
ceci t'affichera tous les articles avec le nom de l'utilisateur correspondant
On y est presque sauf que maintenant je me retrouve avec 1 ligne pour Jean paul et 2 ligne pour Pascal alors que je voudrais qu'1 ligne pour chaque utilisateur.
Ce qu'il en sort :
Jean paul posséde (article 1)
Pascal posséde (article 1)
Pascal posséde (article 2)
Ce que je voudrais :
Jean paul posséde (article 1)
Pascal posséde (article 1 et article 2)
Voici mon code :
<?php $post = $DB->query("SELECT * FROM article INNER JOIN users ON user_id = users.id"); ?>
<?php foreach ($post as $user): ?>
<?php echo $user->username; ?>
<?php echo $user->titre; ?>
<?php endforeach ?>
avec un group by il n'aura pas tous les articles :s
voici un bou de code que tu peux améliorer, je ne pense pas que ce soit la meilleur solution mais c'est ce que grafikart a dit dans son commentaire :
" on récupére tous les articles et on fait un groupe par nom d'utilisateur avec une boucle foreach "
a toi de l’améliorer et de l'adapter a ta base de données
<?php
$DB = new PDO("mysql:host=localhost;dbname=test","root","");
$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$post = $DB->query("SELECT articles.id, articles.content, users.name FROM articles INNER JOIN users ON user_id = users.id");
$post = $post->fetchAll(PDO::FETCH_OBJ);
$current_user = null;
foreach ($post AS $champ) {
$user = $champ->name;
if($current_user != $user) {
$current_user = $user;
echo "<h1>".$user."</h1>";
}
echo "<ul>";
echo "<li> article N° : ".$champ->id."</li>";
echo "<li>".$champ->content."</li>";
echo "</ul>";
}
?>
Cool ça marche, vous êtes trop fort ! j'ai réussi à créer ma boucle PHP. Merci à toi Yentia et grafikart. Dernière question ? Peut on mettre une classe à la place de la balise <h1> pour afficher mon propre style
Biensur moi j'ai fais une liste pour illistré car il n'y a pas de style, mais tu peux faire ce que tu veux genre tableaux, liste, div avec class etc ...
Mais comment fait ton ? J'ai essayété de mettre une classe à la place du h1 mais ça marçhe pas. Desolé pour ses questions car je débute en php
lol il ne s'agit pas de php la mais de l'html.
une class tu peux la mettre quasiment sur tout.
h1,div,span,p,ul,li etc...
en css tu auras donc par exemple:
.title{
color : red;
font-size : 14pt;
}
etc ...
Ne pas oublier de link ton css dans ton fichier par contre.
<link rel="stylesheet" href="css/style.css">
tu devrais d'abord apprendre l'HTML et le css avant de faire du php.
ou suivre les tutoriels de grafikart