Système de news utilisant un forum phpbb3

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 858 fois - Téléchargée 15 fois

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

Ajouter un commentaire

Commentaires

Bonjour,

Jai un message d'erreur sur votre code :

Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /htdocs/index.php on line 338

Apparement obsolète, comment convertir votre code ?
Merci d'avance
ce script est trop ancien, c'est pour ça qu'il indique d'utiliser mysqli, faut refaire le code..... bonjour...
est il possible de limiter le nombres de caracteres dans la new et d'envoyer un lien vers le sujet du forum ?
jadu
Messages postés
225
Date d'inscription
mercredi 26 juillet 2006
Statut
Membre
Dernière intervention
16 août 2018

<?

on doit mettre
<?php

non ????????????

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.