[Résolu] Niveau pour block derniers sujets du forum< Sujet précédent  Sujet suivant >
Index du Forum -> THEMES - RESSOURCES GRAPHIQUES -> Aide et questions

Page : [1] 2
AuteurMessage
France.gif 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
France.gif 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 Smile



Edité par Resnova le 14/11/2013 - 09:54:23
Posté le 14/11/2013 - 09:35:04   Revenir en haut | Permalien
France.gif 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
France.gif 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 Wink



Edité par Resnova le 14/11/2013 - 13:02:46
Posté le 14/11/2013 - 12:59:06   Revenir en haut | Permalien
France.gif 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
Belgium.gif 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 Wink



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
France.gif 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
France.gif 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
France.gif 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
France.gif 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 Wink



Posté le 14/11/2013 - 16:11:54   Revenir en haut | Permalien
France.gif 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
France.gif 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
Belgium.gif 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 Wink



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
France.gif lguytoux
Junior Member



Messages : 31
Inscrit(e) le: 04/10/2011
RE : Niveau pour block derniers sujets du forum

Bonjour,

 

Effectivement les guillemets supprime l'erreur citée plus haut mais voilà ce que ca donne:

 au lieu de 

 

Visible sur le site http://www.mms-team.com/

 

Je me suis peut-être trompé sur la partie affichage du contenu.

Ci-dessous le fichier du block:

https://drive.google.com/file/d/0B7R2TocTtsneamZuc2RhMk9KYlE/edit?usp=sharing

 

Merci.



Edité par lguytoux le 19/11/2013 - 13:49:24

NK 1.7.9 + Patch NK_conversion + ...

Posté le 19/11/2013 - 13:41:31   Revenir en haut | Permalien
Belgium.gif 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 Wink

 

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
Page : [1] 2