GaBs34 Posté 27 Décembre 2008 Posté 27 Décembre 2008 (modifié) Salut a tous J'ai donc installé un forum sur mon site GaB-MOBILE qui propose des astuces, des codes et des images pour mobiles. Ce forum est propulsé par MercuryBoard [v1.1.5] et il est disponible à l'adresse http://lesitedegab.free.fr/forum/index.php. Et j'aimerais donc récuperer la liste des 5 derniers message du forum pour la mettre a gauche de mon site. Cependant je ne m'y connais pas du tout et j'aurais besoin de votre aide si vous vous y connaissez Voici le code de la page new_posts <?php /** * MercuryBoard * Copyright © 2001-2003 The Mercury Development Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * $Id: new_posts.php,v 1.2 2006/08/10 18:50:17 jon Exp $ **/ /** * Creates a list of topics which contain new posts since your last visit * - based off forum.php - * * _AT_author Jonathan West <jon_AT_quicksilverforums.com> * _AT_since 1.1.5 **/ class new_posts extends mercuryboard { function execute() { if ($this->user['user_group'] == USER_GUEST) { return $this->message($this->lang->new_posts_error, $this->lang->new_posts_guest); } $n = isset($this->get['num']) ? intval($this->get['num']) : $this->sets['topics_per_page']; $min = isset($this->get['min']) ? intval($this->get['min']) : 0; $new_topics = $this->check_new_posts($n, $min); $topicCount = $this->countTopics(); $pagelinks = $this->get_pages($topicCount, 'a=recent', $min, $n); $forumjump = $this->select_forums($this->forum_grab(), 0, 0, null, true); if (!$new_topics) { $new_topics = eval($this->template('NO_NEW_POSTS')); } return eval($this->template('NEW_POSTS')); } /** * Show new topics - based of topics.php * * _AT_param int $min First entry to display * _AT_param int $n Number of entries to display * _AT_since 1.1.5 * _AT_return string html output in template form **/ function check_new_posts($n, $min) { $return = null; $query = $this->db->query(" SELECT DISTINCT(t.topic_id), t.topic_modes, t.topic_starter, t.topic_replies, t.topic_edited, t.topic_description, t.topic_moved, t.topic_forum, t.topic_last_poster, t.topic_icon, t.topic_title, f.forum_id, f.forum_name, g.group_format, p.post_author as dot, s.user_name AS topic_starter_name, m.user_name AS topic_last_poster_name FROM ({$this->pre}topics t, {$this->pre}users m, {$this->pre}users s, {$this->pre}groups g, {$this->pre}forums f) LEFT JOIN {$this->pre}posts p ON (t.topic_id = p.post_topic AND p.post_author = {$this->user['user_id']}) WHERE t.topic_edited >= {$this->user['user_lastvisit']} AND m.user_id = t.topic_last_poster AND s.user_id = t.topic_starter AND m.user_group = g.group_id AND f.forum_id = t.topic_forum ORDER BY (t.topic_modes & " . TOPIC_PINNED . ") DESC, t.topic_edited DESC LIMIT $min, $n"); while ($new_post = $this->db->nqfetch($query)) { $icon = null; $state = null; $Pages = $this->get_pages_topic($new_post['topic_replies'], 'a=topic&t=' . $new_post['topic_id'], ', ', 0, $this->sets['posts_per_page']); if ($new_post['topic_last_poster'] != USER_GUEST_UID) { $new_post['topic_starter'] = "<a href='$this->self?a=profile&w={$new_post['topic_last_poster']}'>" .sprintf($new_post['group_format'], $new_post['topic_last_poster_name'])."</a>"; } else { $new_post['topic_starter'] = 'Guest'; } if ($new_post['topic_modes'] & TOPIC_MOVED) { $state = 'moved'; $new_post['topic_id'] = $new_post['topic_moved']; } elseif ($new_post['topic_modes'] & TOPIC_LOCKED) { $state .= 'locked'; } elseif ($new_post['topic_modes'] & TOPIC_PINNED) { $state .= 'pinned'; }else{ $state .= 'new'; if (($this->user['user_id'] != USER_GUEST_UID) && $new_post['dot']) { $state .= 'dot'; } if ($new_post['topic_replies'] < $this->sets['hot_limit']) { $state .= 'open'; } else { $state .= 'hot'; } } $icon = "<img src='./skins/{$this->skin}/images/{$state}.gif'>"; if ($new_post['topic_icon']) { $new_post['topic_icon'] = '<img src="./skins/' . $this->skin . '/mbicons/' . $new_post['topic_icon'] . '" alt="" />'; } $new_post['topic_title'] = $this->format($new_post['topic_title'], FORMAT_CENSOR | FORMAT_HTMLCHARS); if ($new_post['topic_modes'] & TOPIC_PINNED) { $new_post['topic_title'] = "<b><a href='$this->self?a=topic&t={$new_post['topic_id']}&z={$new_post['forum_id']}'>{$new_post['topic_title']}</a></b>"; }else{ $new_post['topic_title'] = "<a href='$this->self?a=topic&t={$new_post['topic_id']}&z={$new_post['forum_id']}'>{$new_post['topic_title']}</a>"; } if ($new_post['topic_replies'] >= $this->sets['posts_per_page']) { $min = floor($new_post['topic_replies'] / $this->sets['posts_per_page']) * $this->sets['posts_per_page']; $jump = "&min=$min#p" . ($new_post['topic_replies'] - $min); } else { $jump = '#p' . $new_post['topic_replies']; } if (!empty($new_post['topic_description'])) { $new_post['topic_description'] = $this->format($new_post['topic_description'], FORMAT_CENSOR | FORMAT_HTMLCHARS); } $new_post['topic_starter'] .= '<br/>' . $this->mbdate('g:i a, M j, Y', $new_post['topic_edited']); if ($this->perms->auth('forum_view', $new_post['forum_id'])) { $return .= eval($this->template('NEW_POSTS_CONTENT')); } } return $return; } /** * Get a count of all the topics available since the user's last visit * * _AT_author Geoffrey Dunn <geoff_AT_warmage.com> * _AT_since 1.1.5 * _AT_return int count of topics **/ function countTopics() { $query = $this->db->fetch(" SELECT COUNT(topic_id) AS count FROM {$this->pre}topics WHERE topic_edited >= {$this->user['user_lastvisit']}"); return $query['count']; } }?> C'est possible ? Merci encore et bonnes fetes Modifié 27 Décembre 2008 par Monique Merci d'utiliser codebox pour plus de 10 lignes de code :)
dexmon Posté 27 Décembre 2008 Posté 27 Décembre 2008 Oui c'est possible, pour ça il faudrait avoir la structure des tables de ton forum. Puis faire une requete sql via php qui récupère les 5 derniers messages avec un ORDER BY colonne_date DESC LIMIT O,5 et voilà.
GaBs34 Posté 27 Décembre 2008 Auteur Posté 27 Décembre 2008 (modifié) Erf mais je ne m'y connais pas du tout en PHP et SQL Comment je peux faire pour montrer la structure des tables du forum ? J'ai ça dans ma base SQL Merci encore Modifié 27 Décembre 2008 par GaBs34
LiFi Posté 27 Décembre 2008 Posté 27 Décembre 2008 Salut, je pense qu'il va falloir que tu t'y mettes parce que là tu demandes un truc tout fait, donc le mieux est de s'adresser au forum de ton script de forum ou alors si tu as vraiment beaucoup de chances tu auras la réponse qui te convient ici. Je suis nouveau mais cela m'étonnerait quand même que quelqu'un qui n'ai pas lui même eu un jour besoin de ça pour ce forum en particulier passe du temps à te créer un script sur mesure tout prêt en te disant où le coller. Ils te donnent des pistes, après à toi d'essayer de comprendre mysql et php, ca te servira toujours pour la suite de ta vie de webmaster.
dexmon Posté 27 Décembre 2008 Posté 27 Décembre 2008 (modifié) Salut, je pense qu'il va falloir que tu t'y mettes parce que là tu demandes un truc tout fait, donc le mieux est de s'adresser au forum de ton script de forum ou alors si tu as vraiment beaucoup de chances tu auras la réponse qui te convient ici. Je suis nouveau mais cela m'étonnerait quand même que quelqu'un qui n'ai pas lui même eu un jour besoin de ça pour ce forum en particulier passe du temps à te créer un script sur mesure tout prêt en te disant où le coller.Ils te donnent des pistes, après à toi d'essayer de comprendre mysql et php, ca te servira toujours pour la suite de ta vie de webmaster. +1 Erf mais je ne m'y connais pas du tout en PHP et SQL happy.gif Comment je peux faire pour montrer la structure des tables du forum ? base-toi sur la table mb_topics pour récupérer les sujets avec un code comme ceci (c'est un exemple, a toi d'adapter...): <?php$sql = "SELECT id, subject, posted, poster FROM mb_topics ORDER BY posted DESC LIMIT 0, 5"; $res = mysql_query($res) or die(mysql_error()); if(mysql_num_rows($res) > 0) { while($data = mysql_fetch_assoc($res)) { echo '<a href="http://'.$_SERVER['HTTP_HOST'].'/forum/voirtopic.php?id='.$data['id'].">$data['subject'].' '.$data['posted'].' '.$data['poster'].'</a><br/>'; } } else { echo 'Aucun sujet sur le forum actuellement.'; }?> Bonne chance. Modifié 28 Décembre 2008 par dexmon
GaBs34 Posté 28 Décembre 2008 Auteur Posté 28 Décembre 2008 Merci beaucoup de votre aide, je vais essayer de me mettre au php pour adapter l'aide de dexmon, avez vous des sites a me conseiller ?
LiFi Posté 28 Décembre 2008 Posté 28 Décembre 2008 Il parait que ce site est très pédagogique et part vraiment de zéro : http://www.siteduzero.com/tutoriel-3-14668...e-avec-php.html
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant