Archives FluxBB.fr

Les archives de FluxBB.fr

Vous n'êtes pas identifié(e).

#1 18-08-2006 17:24:52

m. declercq
Membre

Ajout - Requête SQL - index.php

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

#2 18-08-2006 18:15:31

vin100
Membre

Re : Ajout - Requête SQL - index.php

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_position

avec 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_position

Hors ligne

#3 18-08-2006 18:24:13

m. declercq
Membre

Re : Ajout - Requête SQL - index.php

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

#4 18-08-2006 18:40:02

m. declercq
Membre

Re : Ajout - Requête SQL - index.php

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_permissions

En 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

#5 18-08-2006 18:58:25

vin100
Membre

Re : Ajout - Requête SQL - index.php

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

#6 18-08-2006 19:19:08

m. declercq
Membre

Re : Ajout - Requête SQL - index.php

vin100 a écrit :

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

#7 18-08-2006 19:38:06

vin100
Membre

Re : Ajout - Requête SQL - index.php

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

#8 18-08-2006 20:01:13

m. declercq
Membre

Re : Ajout - Requête SQL - index.php

vin100 a écrit :

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

#9 18-08-2006 20:12:54

vin100
Membre

Re : Ajout - Requête SQL - index.php

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

#10 18-08-2006 20:18:20

m. declercq
Membre

Re : Ajout - Requête SQL - index.php

vin100 a écrit :

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

#11 18-08-2006 21:35:15

foxmask
Lugo

Re : Ajout - Requête SQL - index.php

m. declercq a écrit :

Bonsoir vim ;

vim c'est un editeur que tu as l'air d'affectionner wink
mais ici l'admin c'est vin100smile


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

#12 18-08-2006 22:32:10

m. declercq
Membre

Re : Ajout - Requête SQL - index.php

foxmask a écrit :
m. declercq a écrit :

Bonsoir vim ;

vim c'est un editeur que tu as l'air d'affectionner wink
mais ici l'admin c'est vin100smile

Bonsoir ;

Effectivement, j'apprécie les compétence de vin100 et non pas vim.

J'ai corrigé en conséquence.

Hors ligne

Pied de page des forums