Auteur | Message |
lguytoux
Junior Member
Messages : 31 Inscrit(e) le: 04/10/2011
|
Niveau pour block derniers sujets du forum | |
Bonsoir,
J'utilise le thème classik_endtime sur mon site http://www.mms-team.com/ et j'aimerais que dans le block derniers sujets du forum faisant partis du thème n'apparaissent que les sujets auxquels les membres ont accès.
Je me suis rapproché de Royal-Template pour ce problême et après avoir essayé infructueusement de rajouter
WHERE niveau <= ". $user[1]."
dans la requette du block concerné :
<?php
// Nombre d'entrées
$nblastforum = 5;
$sql = mysql_query("SELECT titre, id, date, auteur, forum_id FROM ". $nuked['prefix'] ."_forums_threads ORDER BY id DESC LIMIT 0,". $nblastforum);
while (list($titre, $id, $datepost, $auteurpost, $forum_id) = mysql_fetch_row($sql))
{
// Titre
$titre = stripslashes($titre);
if (strlen($titre) > 30 ){
$titre = substr($titre, 0, 30)."...";
}
// Date
$date = date('d/m/y', $datepost);
$datetime = "20". date('y-m-d', $datepost);
?>
Il m'a dit qu'il faudrait recoder les blocks avec des jointures sql.
Alors je cherche quelqu'un qui aurait un peu de temps à m'accorder à moins que ce soit très long à faire car je n'en ai aucune idée.
Merci d'avance.
|
Edité par lguytoux le 13/11/2013 - 19:21:10 |
NK 1.7.9 + Patch NK_conversion + ...
|
|
| Posté le 13/11/2013 - 19:09:34 |
Revenir en haut | Permalien |
Resnova
Member
Messages : 165 Inscrit(e) le: 22/06/2013
|
RE : Niveau pour block derniers sujets du forum | |
Bonjour,
Moi je passe par cette requête pour afficher les 5 derniers sujets actifs avec le niveau d'accès :
<?php
// Nombre d'entrées
$nblastforum = 5;
// Récupération des derniers topics actifs
$sql = mysql_query('SELECT FTT.id, FTT.titre, FTT.date, FTT.auteur, FTT.last_post, FTT.forum_id FROM ' . FORUM_THREADS_TABLE . ' AS FTT INNER JOIN ' . FORUM_TABLE . ' AS FT ON FT.id = FTT.forum_id WHERE FT.niveau <= "' . $user[1] . '" ORDER BY last_post DESC LIMIT 0, ' . $nblastforum);
// Boucle pour affichage des résultats
while ($forums = mysql_fetch_row($sql))
{
// Requête pour récupérer le dernier message posté sur le topic
$sql_reply = mysql_query('SELECT * FROM ' . FORUM_MESSAGES_TABLE . ' WHERE thread_id = '' . $forums['id'] . '' ORDER BY id DESC LIMIT 1'Wink;
$reply = mysql_fetch_assoc($sql_reply);
/*
DECLARATION DE TES VARIABLES
*/
// Exemple : titre raccourci si supérieur à 30 caractères...
$titre = (strlen($forums['titre']) > 30) ? substr($forums['titre'], 0, 30) . '..' : $forums['titre'];
// Date du dernier message posté sur le sujet
$date = nkDate($reply['date']);
// Etc etc etc...
/*
AFFICHAGE DE TON CONTENU
*/
}
J'ai modifié 2-3 choses pour l'adapter plus ou moin à tes besoins. Mais il reste des choses à adapter évidement mais j'éspère que sa t'aide déjà un peu
|
Edité par Resnova le 14/11/2013 - 09:54:23 |
|
| Posté le 14/11/2013 - 09:35:04 |
Revenir en haut | Permalien |
lguytoux
Junior Member
Messages : 31 Inscrit(e) le: 04/10/2011
|
RE : Niveau pour block derniers sujets du forum | |
Merci beaucoup Resnova, par contre j'obtiens une erreur en utilisant ton code:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in
à la ligne 17 du fichié modifié.
D'ailleur c'est quoi le Wink à la fin de la ligne ?
|
NK 1.7.9 + Patch NK_conversion + ...
|
|
| Posté le 14/11/2013 - 12:53:33 |
Revenir en haut | Permalien |
Resnova
Member
Messages : 165 Inscrit(e) le: 22/06/2013
|
RE : Niveau pour block derniers sujets du forum | |
C'est une erreur du au Smiley de l'éditeur :p
Faut que tu l'efface et le remplace par une ")" pour fermer correctement la requête
|
Edité par Resnova le 14/11/2013 - 13:02:46 |
|
| Posté le 14/11/2013 - 12:59:06 |
Revenir en haut | Permalien |
lguytoux
Junior Member
Messages : 31 Inscrit(e) le: 04/10/2011
|
RE : Niveau pour block derniers sujets du forum | |
LOL, j'ai honte, j'aurais pu voir ça tout seul.
Il n'y a plus d'erreur mais les visiteurs voient toujours les sujets des forums auxquels ils n'ont pas accès.
J'ai peut-être fais une erreur, je mets le liens vers le fichier que j'ai modifié si ça t'embête pas d'y jeter un oeil.
https://drive.google.com/file/d/0B7R2TocTtsneWHJLaFhpc3lRLVk/edit?usp=sharing
Encore merci.
|
NK 1.7.9 + Patch NK_conversion + ...
|
|
| Posté le 14/11/2013 - 13:26:10 |
Revenir en haut | Permalien |
PePeRePeRveRs
Vice-Président Association
Messages : 3672 Inscrit(e) le: 13/06/2004
|
RE : Niveau pour block derniers sujets du forum | |
Yop,
rajoute un
global $user;
avant la requête
|
Avant d'ouvrir un sujet, n'oubliez pas de lire le règlement et faire une recherche sur le forum !
|
|
| Posté le 14/11/2013 - 14:42:31 |
Revenir en haut | Permalien |
Resnova
Member
Messages : 165 Inscrit(e) le: 22/06/2013
|
RE : Niveau pour block derniers sujets du forum | |
J'allai le dire !
|
|
| Posté le 14/11/2013 - 14:48:47 |
Revenir en haut | Permalien |
lguytoux
Junior Member
Messages : 31 Inscrit(e) le: 04/10/2011
|
RE : Niveau pour block derniers sujets du forum | |
ok
J'ai due uploader le mauvais fichier sur mon site tout à l'heure car apparement j'ai toujours une erreur sur cette ligne:
$sql_reply = mysql_query('SELECT * FROM ' . FORUM_MESSAGES_TABLE . ' WHERE thread_id = '' . $forums['id'] . '' ORDER BY id DESC LIMIT 1' );
|
Edité par lguytoux le 14/11/2013 - 15:32:43 |
NK 1.7.9 + Patch NK_conversion + ...
|
|
| Posté le 14/11/2013 - 15:31:27 |
Revenir en haut | Permalien |
lguytoux
Junior Member
Messages : 31 Inscrit(e) le: 04/10/2011
|
RE : Niveau pour block derniers sujets du forum | |
Désolé pour ce post, un bug de navigateur.
|
Edité par lguytoux le 14/11/2013 - 16:07:32 |
NK 1.7.9 + Patch NK_conversion + ...
|
|
| Posté le 14/11/2013 - 16:03:59 |
Revenir en haut | Permalien |
Resnova
Member
Messages : 165 Inscrit(e) le: 22/06/2013
|
RE : Niveau pour block derniers sujets du forum | |
C'est pas impossible qu'il y ai une erreur dans mon code... :p
Je vais regarder plus sérieusement ce soir
|
|
| Posté le 14/11/2013 - 16:11:54 |
Revenir en haut | Permalien |
lguytoux
Junior Member
Messages : 31 Inscrit(e) le: 04/10/2011
|
RE : Niveau pour block derniers sujets du forum | |
Bonsoir, avez-vous pu jetter un oeil ?
Merci.
|
NK 1.7.9 + Patch NK_conversion + ...
|
|
| Posté le 17/11/2013 - 23:50:17 |
Revenir en haut | Permalien |
Resnova
Member
Messages : 165 Inscrit(e) le: 22/06/2013
|
RE : Niveau pour block derniers sujets du forum | |
Non désolé j'ai pas pu...
Par contre votre erreur c'est toujours celle-ci ? Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in
|
|
| Posté le 18/11/2013 - 09:58:52 |
Revenir en haut | Permalien |
PePeRePeRveRs
Vice-Président Association
Messages : 3672 Inscrit(e) le: 13/06/2004
|
RE : Niveau pour block derniers sujets du forum | |
Salut,
c'est juste une question de guillemets:
$sql_reply = mysql_query( "SELECT * FROM " . FORUM_MESSAGES_TABLE . " WHERE thread_id = '" . $forums['id'] . "' ORDER BY id DESC LIMIT 1" );
Là, ça devrait être bon
|
Avant d'ouvrir un sujet, n'oubliez pas de lire le règlement et faire une recherche sur le forum !
|
|
| Posté le 18/11/2013 - 16:31:11 |
Revenir en haut | Permalien |
lguytoux
Junior Member
Messages : 31 Inscrit(e) le: 04/10/2011
|
|
| Posté le 19/11/2013 - 13:41:31 |
Revenir en haut | Permalien |
PePeRePeRveRs
Vice-Président Association
Messages : 3672 Inscrit(e) le: 13/06/2004
|
RE : Niveau pour block derniers sujets du forum | |
Yop,
y'a plusieurs erreurs dans la requête et dans le traitement des variables...
$sql = mysql_query('SELECT FTT.id, FTT.titre, FTT.date, FTT.auteur, FTT.last_post, FTT.forum_id FROM ' . FORUM_THREADS_TABLE . ' AS FTT INNER JOIN ' . FORUM_TABLE . ' AS FT ON FT.id = FTT.forum_id WHERE FT.niveau < = "' . $user[1] . '" ORDER BY last_post DESC LIMIT 0, ' . $nblastforum);
Le "last_post" est ambigu. En effet, si tu utilises des alias (AS), toutes tes variables doivent être précédées de l'alias de la table correspondante. Il aurait fallu écrire ceci:
$sql = mysql_query('SELECT FTT.id, FTT.titre, FTT.date, FTT.auteur, FTT.last_post, FTT.forum_id FROM ' . FORUM_THREADS_TABLE . ' AS FTT INNER JOIN ' . FORUM_TABLE . ' AS FT ON FT.id = FTT.forum_id WHERE FT.niveau < = "' . $user[1] . '" ORDER BY FTT.last_post DESC LIMIT 0, ' . $nblastforum);
Note le FTT. avant last_post.
Ensuite, dans la boucle qui suit, tu utilises un "mysql_fetch_row". Cette fonction renvoie les variables sous forme d'un tableau avec des indexes numériques. Or, tu tentes d'appeller les variables avec un tableau associatif. Tu devrais donc appeller tes variables comme ceci:
$forums[0], $forums[1], $forums[2],...
Sinon, plus simplement, tu peux remplacer le mysql_fetch_row par un mysql_fetch_assoc.
Enfin, pour la date, tu utilises la fonction nkdate() qui, vraisemblablement, est configurée pour afficher également les heures, minutes, secondes. Tu peux vérifier ça dans les préférences générales de ton site.
Si vraiment tu ne t'en sors pas avec cette requête, dis-le nous, on essayera de l'écrire ensemble de façon correcte
PS: note que j'ai mis un espace dans la requête, entre le plus petit ou égal, il faut le supprimer.
|
Avant d'ouvrir un sujet, n'oubliez pas de lire le règlement et faire une recherche sur le forum !
|
|
| Posté le 19/11/2013 - 18:24:00 |
Revenir en haut | Permalien |