Système de news utilisant un forum phpbb3

Contenu du snippet

Un code facile à adapter pour placer un système de news sur son site en utilisant un forum phpBB3.

Prêt à l'emploi et pratique pour ceux qui souhaite un système de news fiable!
Les seules choses requises sont un forum phpBB3 et 5 minutes de configuration.

Il vous suffira ainsi de créer un sujet dans le forum/sous-forum que vous aurez indiqué dans la configuration pour créer une news.

Source / Exemple :


<?
/*
Source réalisée par K-dence pour http://milleniumcraft.myriapulse.com
Disponible librement sur http://www.phpcs.com
Merci de ne pas partager directement la source.

  • /
?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>News phpBB3</title> <style type="text/css"> table.tableNews { width: 600px; border:2px solid black; margin-bottom: 50px; border-radius: 10px; -webkit-border-radius:10px; -khtml-border-radius: 10px; font-family: Verdana, serif; } .titleNews { background-color:black; color:white; border-bottom:2px solid black; border-top-left-radius: 10px; border-top-right-radius: 10px; -webkit-border-top-left-radius: 10px; -webkit-border-top-right-radius: 10px; -khtml-border-top-left-radius: 10px; -khtml-border-top-right-radius: 10px; padding:2px; padding-left:10px; font-size: 25px; font-weight: normal; text-transform: uppercase; } .contentNews { padding:5px; background-color:white; font-size: 15px; } .infoNews { background-color:black; color:white; border-top:2px solid black; border-bottom-left-radius: 10px; border-bottom-right-radius: 10px; -webkit-border-bottom-left-radius: 10px; -webkit-border-bottom-right-radius: 10px; -khtml-border-bottom-left-radius: 10px; -khtml-border-bottom-right-radius: 10px; padding:5px; font-size: 12px; font-weight: 900; } </style> </head> <body> <? /* Configuration */ // ID du forum utilisé pour les news $forumID = 2; // Chemin vers la racine du forum $forumPath = "/phpbb/"; // Prefix des tables MySQL $prefixSQL = "phpbb_"; // Connexion à la base de donnée MySQL $SQLhost = "localhost"; // Hôte $SQLuser = "user";// Nom d'utilisateur $SQLpass = "pass";// Mot de passe $SQLbase = "base";// Nom de la bases de données // Tentative de connexion $SQLconnect=mysql_connect($SQLhost,$SQLuser,$SQLpass); if (!$SQLconnect) { die('Impossible de se connecter!<br/><b>Le site est peut-être surchargé, veuillez réessayer plus tard!</b>'); } mysql_select_db($SQLbase, $SQLconnect); /* Fonctions */ // Cette fonction remplace les sauts de ligne tel que /n par <br/> function nl2brStrict($text, $replacement = '') { return preg_replace("((\r\n)+)", trim($replacement), $text); } // Cette fonction transforme quelques balises BBCode en HTML (pas toutes, juste les principales) // Les balises reconnues sont : [b] [i] [u] [url] [img] [list] [*] function BBCodetoHTML($string,$uid) { $string = preg_replace("/\[b:$uid\](.+?)\[\/b:$uid\]/s","<strong>$1</strong>", $string); // [b] $string = preg_replace("/\[i:$uid\](.+?)\[\/i:$uid\]/s","<em>$1</em>", $string); // [i] $string = preg_replace("/\[u:$uid\](.+?)\[\/u:$uid\]/s","<span style='text-decoration:underline;'>$1</span>", $string); // [u] $string = preg_replace("/\[img:$uid\](.+?)\[\/img:$uid\]/s","<img src='$1' alt='Image introuvable!'/>", $string); // [img] $string = preg_replace("/\[url:$uid\](.+?)\[\/url:$uid\]/s","<a href='$1'>$1</a>", $string); // [url] $string = preg_replace("/\[url=(.+?):$uid\](.+?)\[\/url:$uid\]/s","<a href='$1'>$2</a>", $string); // [url=] $string = preg_replace("/\[list:$uid\](.+?)\[\/list:u:$uid\]/s","<ul>$1</ul>", $string); // [list] $string = preg_replace("/\[list=1:$uid\](.+?)\[\/list:o:$uid\]/s","<ol>$1</ol>", $string); // [list] $string = preg_replace("/\[\*:$uid\](.+?)\[\/\*:m:$uid\]/s","<li>$1</li>", $string); // [list] return $string; } /* Body */ // On effectue la requête MySQL pour récupérer les 5 derniers sujet postés dans le forum dédié aux news $sql = "SELECT topic_id, topic_title, topic_time, topic_first_poster_name FROM ".$prefixSQL."topics WHERE forum_id = '$forumID' ORDER BY topic_id DESC LIMIT 0,5"; $result = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); // Puis on créer une boucle qui effectuera des actions pour chaque résultat while($row = mysql_fetch_array($result)){ // Là nous allons chercher le contenu et l'uid du BBCode du sujet qui fait office de news $sql = "SELECT post_text, bbcode_uid, bbcode_bitfield FROM ".$prefixSQL."posts WHERE topic_id = '".$row['topic_id']."' ORDER BY post_id ASC LIMIT 1"; $result2 = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); $row2 = mysql_fetch_array($result2); // On remplace les variables phpbb3 par le bon chemin $post_text = str_replace("{SMILIES_PATH}", $forumPath."images/smilies", nl2br($row2['post_text'])); $uid = $row2['bbcode_uid']; $post_text = BBCodetoHTML($post_text,$uid); // On créer le code HTML echo '<table class="tableNews">'; echo '<tr>'; echo '<td class="titleNews">'.$row['topic_title'].'</td>'; echo '</tr>'; echo '<tr>'; echo '<td class="contentNews">'.$post_text.'</td>'; echo '</tr>'; echo '<tr>'; echo '<td class="infoNews">Posté par '.$row['topic_first_poster_name'].' - le '.date('d/m/Y à H:i', $row['topic_time']).'</td>'; echo '</tr>'; echo '</table>'; } ?> </body> </html>

Conclusion :


Il y a encore plein d'amélioration à faire. Mais la base est là, je vous laisse faire la suite ;)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.