Les archives de FluxBB.fr
Vous n'êtes pas identifié(e).
Bonjour,
voici une fonction que j'ai développé (en ce basent sur le fichier search.php) pour afficher les derniers news :
<?
//-------------------------------------------------//
//--Fonctions pour recuperer les messages recents--//
//-------------------------------------------------//
define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';
//requete pour récuperer le nombre de ligne
$sql = 'SELECT t.id FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_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) AND t.moved_to IS NULL ORDER BY t.posted DESC LIMIT 0,3';
$result = $db->query($sql) or error('Unable to fetch topic list', __FILE__, __LINE__, $db->error());
$num_hits = $db->num_rows($result);
$search_ids = array();
while ($row = $db->fetch_row($result))
$search_ids[] = $row[0];
$db->free_result($result);
$search_results = implode(',', $search_ids);
//requete pour récuperer les derniers messages
$sql = 'SELECT t.id AS tid, t.poster, t.subject, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.closed, t.forum_id FROM '.$db->prefix.'topics AS t WHERE t.id IN('.$search_results.') ORDER BY t.last_post';
$result = $db->query($sql) or error('Unable to fetch search results', __FILE__, __LINE__, $db->error());
$search_set = array();
while ($row = $db->fetch_assoc($result))
$search_set[] = $row;
?>
<div id="vf" class="blocktable">
<h2><span>Discussions récents</span></h2>
<div class="box">
<div class="inbox">
<table cellspacing="0">
<thead>
<tr>
<th class="tcl" scope="col"><?php echo $lang_common['Topic']; ?></th>
<th class="tc2" scope="col"><?php echo $lang_common['Forum'] ?></th>
<th class="tc3" scope="col"><?php echo $lang_common['Replies'] ?></th>
<th class="tcr" scope="col"><?php echo $lang_common['Last post'] ?></th>
</tr>
</thead>
<tbody>
<? // Fetch the list of forums
$result = $db->query('SELECT id, forum_name FROM '.$db->prefix.'forums') or error('Unable to fetch forum list', __FILE__, __LINE__, $db->error());
$forum_list = array();
while ($forum_list[] = $db->fetch_row($result))
;
// Finally, lets loop through the results and output them
for ($i = 0; $i < count($search_set); ++$i)
{
@reset($forum_list);
while (list(, $temp) = @each($forum_list))
{
if ($temp[0] == $search_set[$i]['forum_id'])
$forum = '<a href="viewforum.php?id='.$temp[0].'">'.pun_htmlspecialchars($temp[1]).'</a>';
}
$icon = '<div class="icon"><div class="nosize">'.$lang_common['Normal icon'].'</div></div>'."\n";
$icon_text = $lang_common['Normal icon'];
$item_status = '';
$icon_type = 'icon';
$subject = '<a href="viewtopic.php?id='.$search_set[$i]['tid'].'">'.pun_htmlspecialchars($search_set[$i]['subject']).'</a> <span class="byuser">'.$lang_common['by'].' '.pun_htmlspecialchars($search_set[$i]['poster']).'</span>';
if ($search_set[$i]['closed'] != '0')
{
$icon_text = $lang_common['Closed icon'];
$item_status = 'iclosed';
}
if (!$pun_user['is_guest'] && $search_set[$i]['last_post'] > $pun_user['last_visit'])
{
$icon_text .= ' '.$lang_common['New icon'];
$item_status .= ' inew';
$icon_type = 'icon inew';
$subject = '<strong>'.$subject.'</strong>';
$subject_new_posts = '<span class="newtext">[ <a href="viewtopic.php?id='.$search_set[$i]['tid'].'&action=new" title="'.$lang_common['New posts info'].'">'.$lang_common['New posts'].'</a> ]</span>';
}
else
$subject_new_posts = null;
$num_pages_topic = ceil(($search_set[$i]['num_replies'] + 1) / $pun_user['disp_posts']);
if ($num_pages_topic > 1)
$subject_multipage = '[ '.paginate($num_pages_topic, -1, 'viewtopic.php?id='.$search_set[$i]['tid']).' ]';
else
$subject_multipage = null;
// Should we show the "New posts" and/or the multipage links?
if (!empty($subject_new_posts) || !empty($subject_multipage))
{
$subject .= ' '.(!empty($subject_new_posts) ? $subject_new_posts : '');
$subject .= !empty($subject_multipage) ? ' '.$subject_multipage : '';
}
?>
<tr<?php if ($item_status != '') echo ' class="'.trim($item_status).'"'; ?>>
<td class="tcl"> <div class="intd">
<div class="<?php echo $icon_type ?>">
<div class="nosize"><?php echo trim($icon_text) ?></div>
</div>
<div class="tclcon"> <?php echo $subject."\n" ?> </div>
</div></td>
<td class="tc2"><?php echo $forum ?></td>
<td class="tc3"><?php echo $search_set[$i]['num_replies'] ?></td>
<td class="tcr"><?php echo '<a href="viewtopic.php?pid='.$search_set[$i]['last_post_id'].'#p'.$search_set[$i]['last_post_id'].'">'.format_time($search_set[$i]['last_post']).'</a> '.$lang_common['by'].' '.pun_htmlspecialchars($search_set[$i]['last_poster']) ?></td>
</tr>
<? } echo "\t\t\t".'</tbody>'."\n\t\t\t".'</table>'."\n\t\t".'</div>'."\n\t".'</div>'."\n".'</div>'."\n\n"; ?>Hors ligne
Et le fichier extern.php il ne serait pas plus utile dans ce cas là ?
Hors ligne
non il ne donne pas la meme chose, le fichier que j'ai proposé donne un tableau comme si on clique sur "Afficher les messages récents".
Hors ligne
Quelle(s) est(sont) alors la(les) différence(s) avec :
include('http://host.com/forums/extern.php?action=active');Ce qui affiche les 15 discussions les plus récemment actives depuis tous les forums.
Hors ligne
Et bien comme dit ci-dessus, ça les affiche dans un tableau, pas sous forme de liste.
(s) MT
ex-Apupv
:faq: :recherche:
Gra.
Hors ligne
Ahhh ! Merci j'avais compris "tableau" dans le sens "array()" 
Sur ces précisions, je retourne à ma bière.
:biere:
Hors ligne
non je ne croie pas que ce soit la meme chose sa affiche la meme chose que search.php?action=show_24h
Hors ligne
fete l'include du fichier dans la page index du forum est tu verra. 
Hors ligne
fete l'include du fichier dans la page index du forum est tu verra.
Effectivement, l'"include" de extern.php sur une page du site (index ou autre) pose problème...
De nombreux posts et/ou topics font état de cela.
Du coup, des méthodes "alternatives" ont été proposées ici ou là pour "contourner" le problème (et ça marche...).
Mais pour ma culture personnelle, j'aimerais bien savoir POURQUOI on ne peut pas faire un "include('extern.php')" ????
(Note: je sais qu'à l'origine, ce n'est pas prévu pour, extern.php est censé gérer les flux RSS sortants, mais je ne vois pas pourquoi on ne pourrait pas l'utiliser "en interne").
Hors ligne
bonjour,
Acteur : jolie petite fonction.
je souhaite l'insérer entre le bloc navlink et le premier forum mais je ne sais pas dans quel fichier faire l'include et à quel niveau ???
merci
Hors ligne
j'ai trouvé : dans le fichier main.tpl, placer
<pun_include "recent.php">juste avant
<pun_announcement>et pour éviter une erreur de "double-include", enlever ligne 7 :
require PUN_ROOT.'include/common.php';ensuite, pour avoir les 5 derniers messages en ordre croissant, j'ai modifier :
ligne 10
LIMIT 0,3 par LIMIT 0,5et la ligne 48 :
for ($i = 0; $i < count($search_set); ++$i)par
for ($i = count($search_set)-1; $i >=0; $i--)a+ pour la suite ...
Romain.
Dernière modification par romano42 (04-07-2007 11:27:12)
Hors ligne
Il faut éviter de mettre [c]<?[/c], utilisez plutôt : [c]<?php[/c] 
Dernière modification par Herbivor (12-07-2007 10:28:13)
Hors ligne
Il faut éviter de mettre [c]<?[/c], utilisez plutôt : [c]<?php[/c]
Ca change quoi d'essentiel ? 
Hors ligne
le pb quand j'insert l'include dans le fichier main.tpl, c'est que le cadre s'affiche sur toutes les pages du forum.
or, je souhaite mettre le tableau des plus recents messages uniquement sur la page d'accueil du forum.
est-ce quelqu'un aurait une solution ????
merci à tous,
Romano.
Hors ligne
Dans index.php, avant l'appel à header.php, tu rajoutes un
define('PAGE_INDEX', 1)et dans ton recent.php tu englobes le code par un test
if (defined('PAGE_INDEX'))
{
... code ...
}Hors ligne
çà marche super,
merci Mpok.
Hors ligne
Bonjour
Je viens d'installer le code de acteur et j'ai juste un truc qui cloche... le resultat obtenu n'est pas rewrité. J'utilise le mod rewrite trouvé ici http://www.punbb.fr/mods/mod.php?id=68 qui semble bien fonctionner.
Qulqu'un peut im m'aider pour rewriter cette derniere svp.
Merci
Hors ligne
C'est 100% normale ! Les mods ne "rewrite" pas tous les fichiers comme cà ! Pour celà, il faut modifier le fichier .htacess . 
M@x.
...
Hors ligne
Merci pour la reponse
Seul hic, je ne sais pas faire de rewriting:( et je debute (depuis 2 heures environ) dans le monde de punBB. Alors un petit coup de pouce serait bienvenue:).
D'autr part, y a t'il un plugin dispo pour avoir la meme boite de message que lorsque que j'ecrit en ce moment ?
Merci
Hors ligne
? Poue l'Url rewriting, je ne sais pas. Pour la boite, je suppose que tu parle de la Puntoolbar ?
http://www.punbb.fr/mods/mod.php?id=7
M@x.
...
Hors ligne
Bon dommage pour le rewriting, j'espere que l'auteur du topic va passer dans le coin. Pour la "boite", je ne sais pas si sait sa, il n'y a pas de previsualisation ou d'image pour voir à quoi sa ressemble mais sa a l'air d'etre ce que je cherche
. En gros, c'est la "boite" qui permet d'ecrire une reponse avec les smileys,la couleur,gras,italic,souligné paragraphe, etc...
Merci pour tes reponses 
Hors ligne
C'est ça alors. La boite ! 
M@x.
...
Hors ligne
Merci M@x:D
Sympa de t'etre attardé sur le petit nouveau que je suis
!
Hors ligne
Personnellement, j'avais non seulement la flemme de chercher un tel module, mais je préférais aussi et surtout le faire à la main.
Je me suis attardé sur le fameux fichier extern.php
Mon but étant d'afficher non seulement le titre et le lien du topic contenant le message le plus récent, mais aussi d'afficher le dit message et le nom du posteur.
c'est tout bête pour ceux qui se cassent la tête pour rien.
Suffit de récupérer en plus des info du topic la valeur de last_post_id, puis de faire une requete sql pour récupérer le dit post et son auteur.
Ne plas oublier aussi de parser le dit message avant affichage au niveau du bbcode.
En pratique, il faut éditer le fichier extern.php.
En début de code, à l'appel des fonctions, il faut appeler parser.php qui nous servira pour le bbcode
remplacer donc
ligne 132-133
// Load the functions script
require PUN_ROOT.'include/functions.php';par ceci :
// Load the functions script
require PUN_ROOT.'include/functions.php';
require PUN_ROOT.'include/parser.php';puis vers la fin du fichier (ligne 252), remplacer :
// Fetch $show topics
$result = $db->query('SELECT t.id, t.subject FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL'.$forum_sql.' ORDER BY '.$order_by.' DESC LIMIT '.$show) or error('Unable to fetch topic list', __FILE__, __LINE__, $db->error());
while ($cur_topic = $db->fetch_assoc($result))
{
$pstid = $cur_topic['last_post_id'];
if ($pun_config['o_censoring'] == '1')
$cur_topic['subject'] = censor_words($cur_topic['subject']);
if (pun_strlen($cur_topic['subject']) > $max_subject_length)
$subject_truncated = pun_htmlspecialchars(trim(substr($cur_topic['subject'], 0, ($max_subject_length-5)))).' ...';
else
$subject_truncated = pun_htmlspecialchars($cur_topic['subject']);
echo '<a href="'.$pun_config['o_base_url'].'/viewtopic.php?id='.$cur_topic['id'].'&action=new" title="'.pun_htmlspecialchars($cur_topic['subject']).'">'.$subject_truncated.'</a>."\n";
}par ceci :
// Fetch $show topics
$result = $db->query('SELECT t.id, t.subject, t.last_post_id FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL'.$forum_sql.' ORDER BY '.$order_by.' DESC LIMIT '.$show) or error('Unable to fetch topic list', __FILE__, __LINE__, $db->error());
while ($cur_topic = $db->fetch_assoc($result))
{
$pstid = $cur_topic['last_post_id'];
if ($pun_config['o_censoring'] == '1')
$cur_topic['subject'] = censor_words($cur_topic['subject']);
if (pun_strlen($cur_topic['subject']) > $max_subject_length)
$subject_truncated = pun_htmlspecialchars(trim(substr($cur_topic['subject'], 0, ($max_subject_length-5)))).' ...';
else
$subject_truncated = pun_htmlspecialchars($cur_topic['subject']);
echo '<a href="'.$pun_config['o_base_url'].'/viewtopic.php?id='.$cur_topic['id'].'&action=new" title="'.pun_htmlspecialchars($cur_topic['subject']).'">'.$subject_truncated.'</a><br />';
$pstq1 = 'SELECT poster, message FROM '.$db->prefix.'posts WHERE id = "'.$pstid.'"';
$pstq2 = $db->query($pstq1);
while ($pstaff = $db->fetch_assoc($pstq2))
{
$pstmsg = $pstaff['message'];
$pstmsg = preparse_bbcode($pstmsg, &$errors, $is_signature = false);
$pstmsg = do_clickable($pstmsg);
$pstmsg = do_bbcode($pstmsg);
$pattern = array("\n", "\t", ' ', ' ');
$replace = array('<br />', ' ', ' ', ' ');
$pstmsg = str_replace($pattern, $replace, $pstmsg );
echo '<br /><div>'.$pstmsg.'<br /> ~ par <b><i>'.$pstaff['poster'].'</i></b></div><br /><br />'."\n";
}Hors ligne
Salut à tous moi j'ai mis le code dans index mais jai une erreur
<?
//-------------------------------------------------//
//--Fonctions pour recuperer les messages recents--//
//-------------------------------------------------//
define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';
//requete pour récuperer le nombre de ligne
$sql = 'SELECT t.id FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_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) AND t.moved_to IS NULL ORDER BY t.posted DESC LIMIT 0,3';
$result = $db->query($sql) or error('Unable to fetch topic list', __FILE__, __LINE__, $db->error());
$num_hits = $db->num_rows($result);
$search_ids = array();
while ($row = $db->fetch_row($result))
$search_ids[] = $row[0];
$db->free_result($result);
$search_results = implode(',', $search_ids);
//requete pour récuperer les derniers messages
$sql = 'SELECT t.id AS tid, t.poster, t.subject, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.closed, t.forum_id FROM '.$db->prefix.'topics AS t WHERE t.id IN('.$search_results.') ORDER BY t.last_post';
$result = $db->query($sql) or error('Unable to fetch search results', __FILE__, __LINE__, $db->error());
$search_set = array();
while ($row = $db->fetch_assoc($result))
$search_set[] = $row;
?>
<div id="vf" class="blocktable">
<h2><span>Discussions récents</span></h2>
<div class="box">
<div class="inbox">
<table cellspacing="0">
<thead>
<tr>
<th class="tcl" scope="col"><?php echo $lang_common['Topic']; ?></th>
<th class="tc2" scope="col"><?php echo $lang_common['Forum'] ?></th>
<th class="tc3" scope="col"><?php echo $lang_common['Replies'] ?></th>
<th class="tcr" scope="col"><?php echo $lang_common['Last post'] ?></th>
</tr>
</thead>
<tbody>
<? // Fetch the list of forums
$result = $db->query('SELECT id, forum_name FROM '.$db->prefix.'forums') or error('Unable to fetch forum list', __FILE__, __LINE__, $db->error());
$forum_list = array();
while ($forum_list[] = $db->fetch_row($result))
;
// Finally, lets loop through the results and output them
for ($i = 0; $i < count($search_set); ++$i)
{
@reset($forum_list);
while (list(, $temp) = @each($forum_list))
{
if ($temp[0] == $search_set[$i]['forum_id'])
$forum = '<a href="viewforum.php?id='.$temp[0].'">'.pun_htmlspecialchars($temp[1]).'</a>';
}
$icon = '<div class="icon"><div class="nosize">'.$lang_common['Normal icon'].'</div></div>'."\n";
$icon_text = $lang_common['Normal icon'];
$item_status = '';
$icon_type = 'icon';
$subject = '<a href="viewtopic.php?id='.$search_set[$i]['tid'].'">'.pun_htmlspecialchars($search_set[$i]['subject']).'</a> <span class="byuser">'.$lang_common['by'].' '.pun_htmlspecialchars($search_set[$i]['poster']).'</span>';
if ($search_set[$i]['closed'] != '0')
{
$icon_text = $lang_common['Closed icon'];
$item_status = 'iclosed';
}
if (!$pun_user['is_guest'] && $search_set[$i]['last_post'] > $pun_user['last_visit'])
{
$icon_text .= ' '.$lang_common['New icon'];
$item_status .= ' inew';
$icon_type = 'icon inew';
$subject = '<strong>'.$subject.'</strong>';
$subject_new_posts = '<span class="newtext">[ <a href="viewtopic.php?id='.$search_set[$i]['tid'].'&action=new" title="'.$lang_common['New posts info'].'">'.$lang_common['New posts'].'</a> ]</span>';
}
else
$subject_new_posts = null;
$num_pages_topic = ceil(($search_set[$i]['num_replies'] + 1) / $pun_user['disp_posts']);
if ($num_pages_topic > 1)
$subject_multipage = '[ '.paginate($num_pages_topic, -1, 'viewtopic.php?id='.$search_set[$i]['tid']).' ]';
else
$subject_multipage = null;
// Should we show the "New posts" and/or the multipage links?
if (!empty($subject_new_posts) || !empty($subject_multipage))
{
$subject .= ' '.(!empty($subject_new_posts) ? $subject_new_posts : '');
$subject .= !empty($subject_multipage) ? ' '.$subject_multipage : '';
}
?>
<tr<?php if ($item_status != '') echo ' class="'.trim($item_status).'"'; ?>>
<td class="tcl"> <div class="intd">
<div class="<?php echo $icon_type ?>">
<div class="nosize"><?php echo trim($icon_text) ?></div>
</div>
<div class="tclcon"> <?php echo $subject."\n" ?> </div>
</div></td>
<td class="tc2"><?php echo $forum ?></td>
<td class="tc3"><?php echo $search_set[$i]['num_replies'] ?></td>
<td class="tcr"><?php echo '<a href="viewtopic.php?pid='.$search_set[$i]['last_post_id'].'#p'.$search_set[$i]['last_post_id'].'">'.format_time($search_set[$i]['last_post']).'</a> '.$lang_common['by'].' '.pun_htmlspecialchars($search_set[$i]['last_poster']) ?></td>
</tr>
<? } echo "\t\t\t".'</tbody>'."\n\t\t\t".'</table>'."\n\t\t".'</div>'."\n\t".'</div>'."\n".'</div>'."\n\n"; ?>Merci pour votre aide
Hors ligne