Aide à la création d'un menu derniers posts
ohemeg Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre ohemeg
- Inscrit le : 09/12/2010
Je suis tout nouveau sur PhpBoost et je tiens à féliciter ceux qui l'ont développer

Je cherche à créer un menu qui regrouperait les 10 derniers topics du forum mis à jour avec en infobulle le nom du membre et la date / heure.
En regardant un peu les docs et ce qui se fait j'ai compris qu'il faut que je créé dans /menus l'arborescence suivantes :
/menus/lastpost
/menus/lastpost/lastpost.php
/menus/lastpost/templates
/menus/lastpost/templates/lastpost.tpl
j'ai déjà ma requête SQL qui me retourne les information nécessaire, à savoir :
Titre_du_topic
id_du_dernier_message_du_topic
timestamp_du_dernier_message
nombre_de message_dans_le_topic
nom_du_posteur
Je n'arrive pas à comprendre comment associer le .php avec le .tpl, c'est certains que je n'ai pas regardé toutes les pages du forum, mais où pourrais je trouver un template tpl et php avec les informations de base.
et ensuite comment afficher les résultat de ma requête dans le tpl.
Merci à tous
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
Pour la gestion du template il faut procéder ainsi :
Code PHP :
$tpl = new Template('lastpost/lastpost.tpl'); $tpl->assign_vars(array( 'MA_VAR' => 'ma variable tpl !', )); $tpl->parse();
Et dans ton template :
Code TPL :
[MA_VAR}
ReidLos
ohemeg Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre ohemeg
- Inscrit le : 09/12/2010
Citation :
<?php
function menu_lastpost_lastpost($position, $block)
{
global $CONFIG, $Sql;
$tpl = new Template('menus/lastpost/lastpost.tpl');
import('core/menu_service');
$req=$sql->query_while("SELECT t.title,t.idtopic,msg2.id,t.max_timestamp,t.nbr_msg, msg2.user_id,mem.login
FROM phpboost_forum_msg msg2
JOIN (SELECT tpc.title,msg.idtopic,max(msg.timestamp) AS max_timestamp, tpc.nbr_msg
FROM phpboost_forum_msg msg, phpboost_forum_topics tpc
where tpc.id=msg.idtopic
GROUP BY msg.idtopic
ORDER BY max(msg.timestamp) DESC
LIMIT 0,10
) AS t
ON msg2.idtopic = t.idtopic AND msg2.timestamp = t.max_timestamp,
phpboost_member mem
where msg2.user_id=mem.user_id
ORDER BY t.max_timestamp DESC");
while ($data = $sql->fetch_assoc($req)) {
$title = $data[0];
$id_tpc = $data[1];
$id_msg = $data[2];
$timest = $data[3];
$nbr_msg = $data[4];
$id_user = $data[5];
$login = $data[6];
$req1=mysql_query("select from_unixtime($timest,'%d/%m/%Y à %H:%i:%s')");
while ($data1=mysql_fetch_array($req1)) {
$date_f=$data1[0];
$page=ceil($nbr_msg/15);
$tpl->assign_vars('lastpost', array(
'TITLE' => $title
));
//echo "<a href=http://www.team-adlo.fr/~teamadlo/forum/topic.php?pt=$page&id=$id_tpc#m$id_msg title='$login - $date_f'>$title</a><br>";
return $tpl->parse(TEMPLATE_STRING_MODE);
}
}
}
?>
function menu_lastpost_lastpost($position, $block)
{
global $CONFIG, $Sql;
$tpl = new Template('menus/lastpost/lastpost.tpl');
import('core/menu_service');
$req=$sql->query_while("SELECT t.title,t.idtopic,msg2.id,t.max_timestamp,t.nbr_msg, msg2.user_id,mem.login
FROM phpboost_forum_msg msg2
JOIN (SELECT tpc.title,msg.idtopic,max(msg.timestamp) AS max_timestamp, tpc.nbr_msg
FROM phpboost_forum_msg msg, phpboost_forum_topics tpc
where tpc.id=msg.idtopic
GROUP BY msg.idtopic
ORDER BY max(msg.timestamp) DESC
LIMIT 0,10
) AS t
ON msg2.idtopic = t.idtopic AND msg2.timestamp = t.max_timestamp,
phpboost_member mem
where msg2.user_id=mem.user_id
ORDER BY t.max_timestamp DESC");
while ($data = $sql->fetch_assoc($req)) {
$title = $data[0];
$id_tpc = $data[1];
$id_msg = $data[2];
$timest = $data[3];
$nbr_msg = $data[4];
$id_user = $data[5];
$login = $data[6];
$req1=mysql_query("select from_unixtime($timest,'%d/%m/%Y à %H:%i:%s')");
while ($data1=mysql_fetch_array($req1)) {
$date_f=$data1[0];
$page=ceil($nbr_msg/15);
$tpl->assign_vars('lastpost', array(
'TITLE' => $title
));
//echo "<a href=http://www.team-adlo.fr/~teamadlo/forum/topic.php?pt=$page&id=$id_tpc#m$id_msg title='$login - $date_f'>$title</a><br>";
return $tpl->parse(TEMPLATE_STRING_MODE);
}
}
}
?>
et mon fichier tpl
Citation :
<div class="module_mini_container">
<div class="module_mini_top">
<h5 class="sub_title">Dernières révélations</h5>
<div class="module_mini_top">
<h5 class="sub_title">Dernières révélations</h5>
<div class="module_mini_contents">
<p style="padding-top: 5px;">
# START lastpost #
<tr>
<td class="row2" style="text-align:center;">
{lastpost.TITLE}
</td>
</tr>
# END lastpost #
</p>
</div>
</form>
<div class="module_mini_bottom">
</div>
</div></div>
je dois avouer que je suis parti du module toparticles et j'ai essayé à ma sauce.
au final je voudrais que ça m'affiche un truc dans le genre dans mon module
Citation :
<a href=http://www.team-adlo.fr/~teamadlo/forum/topic.php?pt=$page&id=$id_tpc#m$id_msg title='$login - $date_f'>$title</a><br>
merci d'avance
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
Ça donne quoi?
ohemeg Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre ohemeg
- Inscrit le : 09/12/2010
je pense que j'ai passé trop de temps aujourd'hui et je sature

la seule dont je soit sûre c'est que mon code php suivant me retourne l'information,maintenant reste à le mettre à la sauce phpboost
<?php
$host = "localhost"; //Adresse serveur MySQL - MySQL server address
$user = "root"; //Login
$passwd = ""; //Mot de passe - Password
$base = "teamadlo2904"; //Nom de la base de données - Database name
// Connexion au serveur
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($base) or die("erreur de connexion a la base de donnees");
$req=mysql_query("SELECT t.title,t.idtopic,msg2.id,t.max_timestamp,t.nbr_msg, msg2.user_id,mem.login
FROM phpboost_forum_msg msg2
JOIN (SELECT tpc.title,msg.idtopic,max(msg.timestamp) AS max_timestamp, tpc.nbr_msg
FROM phpboost_forum_msg msg, phpboost_forum_topics tpc
where tpc.id=msg.idtopic
GROUP BY msg.idtopic
ORDER BY max(msg.timestamp) DESC
LIMIT 0,10
) AS t
ON msg2.idtopic = t.idtopic AND msg2.timestamp = t.max_timestamp,
phpboost_member mem
where msg2.user_id=mem.user_id
ORDER BY t.max_timestamp DESC");
while ($data = mysql_fetch_array($req)) {
$title = $data[0];
$id_tpc = $data[1];
$id_msg = $data[2];
$timest = $data[3];
$nbr_msg = $data[4];
$id_user = $data[5];
$login = $data[6];
$req1=mysql_query("select from_unixtime($timest,'%d/%m/%Y à %H:%i:%s')");
while ($data1=mysql_fetch_array($req1)) {
$date_f=$data1[0];
$page=ceil($nbr_msg/15);
echo "<a href=http://www.team-adlo.fr/~teamadlo/forum/topic.php?pt=$page&id=$id_tpc#m$id_msg title='$login - $date_f'>$title</a><br>";
}
}
?>
$host = "localhost"; //Adresse serveur MySQL - MySQL server address
$user = "root"; //Login
$passwd = ""; //Mot de passe - Password
$base = "teamadlo2904"; //Nom de la base de données - Database name
// Connexion au serveur
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($base) or die("erreur de connexion a la base de donnees");
$req=mysql_query("SELECT t.title,t.idtopic,msg2.id,t.max_timestamp,t.nbr_msg, msg2.user_id,mem.login
FROM phpboost_forum_msg msg2
JOIN (SELECT tpc.title,msg.idtopic,max(msg.timestamp) AS max_timestamp, tpc.nbr_msg
FROM phpboost_forum_msg msg, phpboost_forum_topics tpc
where tpc.id=msg.idtopic
GROUP BY msg.idtopic
ORDER BY max(msg.timestamp) DESC
LIMIT 0,10
) AS t
ON msg2.idtopic = t.idtopic AND msg2.timestamp = t.max_timestamp,
phpboost_member mem
where msg2.user_id=mem.user_id
ORDER BY t.max_timestamp DESC");
while ($data = mysql_fetch_array($req)) {
$title = $data[0];
$id_tpc = $data[1];
$id_msg = $data[2];
$timest = $data[3];
$nbr_msg = $data[4];
$id_user = $data[5];
$login = $data[6];
$req1=mysql_query("select from_unixtime($timest,'%d/%m/%Y à %H:%i:%s')");
while ($data1=mysql_fetch_array($req1)) {
$date_f=$data1[0];
$page=ceil($nbr_msg/15);
echo "<a href=http://www.team-adlo.fr/~teamadlo/forum/topic.php?pt=$page&id=$id_tpc#m$id_msg title='$login - $date_f'>$title</a><br>";
}
}
?>
ohemeg Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre ohemeg
- Inscrit le : 09/12/2010
Maintenant sur quoi je dois m'appuyer pour que les derniers posts ne soient visibles que par ceux qui y ont accès ?
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
Édité par ReidLos Le 24/12/2010 à 18h08
ohemeg Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre ohemeg
- Inscrit le : 09/12/2010
par exemple si je suis admin je peux voir les 10 derniers posts de tous le forum par contre si je suis membre je ne peux voir que les 10 derniers post de l'ensemble des topics auquels j'ai accès.
j'espère être plus claire
ohemeg Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre ohemeg
- Inscrit le : 09/12/2010
Randwic Membre non connecté
Booster Bazooka
-
Booster Bazooka
- Voir le profil du membre Randwic
- Inscrit le : 22/03/2010
Merki
ohemeg Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre ohemeg
- Inscrit le : 09/12/2010
Randwic Membre non connecté
Booster Bazooka
-
Booster Bazooka
- Voir le profil du membre Randwic
- Inscrit le : 22/03/2010
ohemeg :
ok je te posterais ça pas de souci par contre elle ne sert à rien tant que le niveau de sécurité n'est pas pris en compte
Des news?
ohemeg Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre ohemeg
- Inscrit le : 09/12/2010
bonne année à tous !
bon si quelqu'un pouvait répondre pour la partie sécurité que je finalise pour mettre à disposition de tous le module
Randwic Membre non connecté
Booster Bazooka
-
Booster Bazooka
- Voir le profil du membre Randwic
- Inscrit le : 22/03/2010
ohemeg Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre ohemeg
- Inscrit le : 09/12/2010
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie