Les archives de FluxBB.fr
Vous n'êtes pas identifié(e).
Pages : 1
Bonjour ;
Je sais que ce sujet a déjà été traité mais je dois dire que je n'ai pas bien compris la réponse donnée par vim.
Je suis entrain de developper une nouvelle fonction pour la page index.php des forum.
Cette fonction passe par l'ajout d'une colonne dans chacun des forum et permettrat de prendre connaissance du status des forums (ouvert/fermé) selon les restrictions des groupe utilisateur, Cette information apparaîssant sous forme d'image.
Cette fonction existe sur les forum vbulletin.
Je voudrais donc rajouter ce genre de requetes ==>
$result2 = $db->query('SELECT forum_id AS pfid, group_id AS pgid, read_forum AS prf, post_replies AS ppr, post_topics AS ppt FROM '.$db->prefix.'forum_perms') or error('Impossible de trouver les permissions de l\'utilisateur', __FILE__, __LINE__, $db->error());
while ($cur_permissions = $db->fetch_assoc($result2))pour récupérer les informations (1/0) de l'utilisateur.
Le problème, c'est que si je ne retire pas le paramètre true de la première requête qui se trouve dans la page index.php, je sors du while et quand je retire le paramètre, je me retrouve avec 21 requête exécutée.
Quelqu'un pourrait t-il m'expliquer comment fair une jointure afin d'éviter ce bordel
Si le méchant administrateur pouvait me donner un coup de main, ce serait vraiment sympa.
Merci
Dernière modification par m. declercq (18-08-2006 19:21:31)
Hors ligne
si je comprend bien tu veut fusionner cette requete :
SELECT
c.id AS cid,
c.cat_name,
f.id AS fid,
f.forum_name,
f.forum_desc,
f.redirect_url,
f.moderators,
f.num_topics,
f.num_posts,
f.last_post,
f.last_post_id,
f.last_poster
FROM categories AS c
INNER JOIN forums AS f ON c.id=f.cat_id
LEFT JOIN forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].')
WHERE
fp.read_forum IS NULL
OR fp.read_forum=1
ORDER BY
c.disp_position,
c.id, f.disp_positionavec celle-ci :
SELECT
forum_id AS pfid,
group_id AS pgid,
read_forum AS prf,
post_replies AS ppr,
post_topics AS ppt
FROM forum_permsça ça fonctionne pas ?
SELECT
c.id AS cid,
c.cat_name,
f.id AS fid,
f.forum_name,
f.forum_desc,
f.redirect_url,
f.moderators,
f.num_topics,
f.num_posts,
f.last_post,
f.last_post_id,
f.last_poster
fp.forum_id AS pfid,
fp.group_id AS pgid,
fp.read_forum AS prf,
fp.post_replies AS ppr,
fp.post_topics AS ppt
FROM categories AS c
INNER JOIN forums AS f ON c.id=f.cat_id
LEFT JOIN forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].')
WHERE
fp.read_forum IS NULL
OR fp.read_forum=1
ORDER BY
c.disp_position,
c.id, f.disp_positionHors ligne
Bonsoir vin100 ;
Déjà, merci de m'avoir répondu aussi rapidement.
Je vais essayer ta proposition.
je te tiens informé.
Merci encore...
Dernière modification par m. declercq (18-08-2006 22:30:30)
Hors ligne
Re Vin100 ;
ça serait pas plutôt ça la requête que tu voulais me proposer ? ==>
$result = $db->query('SELECT
c.id AS cid,
c.cat_name,
f.id AS fid, f.forum_name,
f.forum_desc,
f.redirect_url,
f.moderators,
f.num_topics,
f.num_posts,
f.last_post,
f.last_post_id,
f.last_poster,
fp.forum_id AS pfid,
fp.group_id AS pgid,
fp.read_forum AS prf,
fp.post_replies AS ppr,
fp.post_topics AS ppt
FROM
'.$db->prefix.'categories AS c INNER JOIN
'.$db->prefix.'forums AS f ON c.id=f.cat_id LEFT JOIN
'.$db->prefix.'forum_perms AS fp ON
(fp.forum_id=f.id
AND
fp.group_id='.$pun_user['g_id'].')
WHERE
fp.read_forum IS NULL OR fp.read_forum=1
ORDER BY
c.disp_position,
c.id, f.disp_position', true)
or error
('Impossible de retrouver la liste des catéories et des forums', __FILE__, __LINE__, $db->error());Ou alors, tu as ommis des arguments en te disant que je saurais quoi faire... ?
En tout état de cause, avec la requête ci dessus, ça semble fonctionner correctement.
Encore une chose :
Les résultats, je suis obligé des les exploiter avec la variable $cur_forum ?
Exemple :
$cur_forum['pfid']car j'aurais aimé pouvoir passer les résultats de mes rajouts dans cette variable ==>
$cur_permissionsEn tout cas, merci pour ta solution car de 21 requêtes, je passe à 9 requêtes. vraiment merci.
Une fois ma mod terminée, je la rajouterais dans le forum approprié car je pense que cela peu intérresser, non ?
Dernière modification par m. declercq (18-08-2006 22:30:56)
Hors ligne
oui j'avais pas mis les prefixes de table pour simplifier la lecture
que ce soit dans $cur_forum['pfid'] ou $cur_permissions ça chaneg quoi ?
si ça change rien mais que c'est juste uen question d'esthetique alors met plutot un alias plus explicite que 'pfid'
ps : pourquoi avait tu cité ton propre message ?
Hors ligne
oui j'avais pas mis les prefixes de table pour simplifier la lecture
que ce soit dans $cur_forum['pfid'] ou $cur_permissions ça chaneg quoi ?
si ça change rien mais que c'est juste uen question d'esthetique alors met plutot un alias plus explicite que 'pfid'ps : pourquoi avait tu cité ton propre message ?
Oui, en définitif, tu as raison. Maintenant, en ce qui concerne l'alias, je le trouvais déjà assez explicite ==>
pfid = permissions forum id
pour la citation de mon propre message, j'ai pas fait attention.
Encore merci pour ton aide rapide.
Hors ligne
tiens d'ailleur ce [c]fp.forum_id AS pfid,[/c] ne sert à rien vu qu'il y a plus haut [c]f.id AS fid,[/c] ce sera la même valeur dans tous les cas
Hors ligne
tiens d'ailleur ce [c]fp.forum_id AS pfid,[/c] ne sert à rien vu qu'il y a plus haut [c]f.id AS fid,[/c] ce sera la même valeur dans tous les cas
Et bien non, tu te trompe.
Si j'appelle la variable $cur_forum[pfid], j'aurais l'id du forum courant si ce dernier se trouve dans la table forum_perms or, si j'appelle la variable $cur_forum[fid], j'aurais l'id du forum courant même s'il ne se trouvent pas dans la table forum_perms.
En fait, je veux jouer sur le fait que l'id du forum courant soit présent ou non dans la table forum_perms pour changer le statut du forum (ouvert/ fermé).
Bien entendu, je vais faire une soupe au choux de tout les résultats avec des conditions pour que le statut affiché soit le bon selon les droits du groupe de l'utilisateur qui est en ligne ou connecté.
Dernière modification par m. declercq (18-08-2006 20:31:23)
Hors ligne
tu es sûr que ça va faire ce que tu cherche à faire ?
je me suis jamais penché sur le système de permission, mais j'imagine que si le forum n'est pas dans la table des permissions c'est qu'il a les permissions par défaut et donc qu'il est tout sauf fermé
Hors ligne
tu es sûr que ça va faire ce que tu cherche à faire ?
je me suis jamais penché sur le système de permission, mais j'imagine que si le forum n'est pas dans la table des permissions c'est qu'il a les permissions par défaut et donc qu'il est tout sauf fermé
C'est justement sur ça que je joue.
Je suis sur de ce que je veux faire et d'ailleurs mes premiers essais sont concluant.
Voilà l'histoire en gros ==>
Si l'id du forum courant se trouve dans la table des permissions (ça veut dire qu'il y a des restrictions sur ce forum) et que l'id du groupe de l'utilisateur si trouve aussi (ça veut dire qu'il existe des restrictions pour ce groupe d'utilisateur) et qu'il n'a pas le droit de poster et répondre alors le statut du forum et fermé dans le cas contraire, il est ouvert.
Bien entendu, il existe plus de possibilités que cela.
Dernière modification par m. declercq (18-08-2006 20:30:04)
Hors ligne
Bonsoir vim ;
vim c'est un editeur que tu as l'air d'affectionner 
mais ici l'admin c'est vin100
http://www.foxmask.info
HaveFnuBB! le seul forum produit avec le framework PHP5 Jelix
(dé)pot de miel
Membre de la CoreTeam Jelix
Hors ligne
Hors ligne
Pages : 1