J'aurais besoin d'un script PHP, qui génère les liens vers les derniers sujets (ceux qui ont les réponses les plus récentes) du forum.
Le script ou la fonction doit prendre en paramètres :
- le nombre de sujets à lister
- la liste des forums (numéros) au sein desquels il faut chercher (cela me permettra de faire une liste des sujets RP, et une autre pour les sujets HRP)
Me contacter par MP si besoin.
Merci !
[réalisé] Script de récupération des sujets phpBB
Messages : 75
Enregistré le : sam. 7 sept. 2024 14:51
Enregistré le : sam. 7 sept. 2024 14:51
Seigneur : Elevor
Numéro du seigneur : 1012
Numéro du Commodore : 1524
Re: Script de récupération des sujets phpBB
Salut Max.
Voici un bout de code qui faut adapter :
Exemple d'appel du script :
Sortie JSON :
Résumé des champs JSON retournés
Voici un bout de code qui faut adapter :
Code : Tout sélectionner
<?php
// Paramètres de connexion
$host = 'localhost';
$dbname = 'nom_de_ta_base';
$user = 'utilisateur';
$pass = 'mot_de_passe';
// URL de base du forum
$base_url = 'https://tonsite.com/phpbb/';
// Paramètres GET
$limit = isset($_GET['limit']) ? (int)$_GET['limit'] : 10;
$forums = isset($_GET['forums']) ? explode(',', $_GET['forums']) : [];
// Sécurisation
$limit = max(1, min($limit, 100));
$forums = array_filter(array_map('intval', $forums));
if (empty($forums)) {
echo json_encode(['error' => 'Aucun ID de sous-forum fourni.']);
exit;
}
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$in_clause = implode(',', array_fill(0, count($forums), '?'));
$sql = "
SELECT
t.topic_id,
t.topic_title,
t.topic_time,
t.topic_last_post_time,
f.forum_name
FROM phpbb_topics t
JOIN phpbb_forums f ON t.forum_id = f.forum_id
WHERE t.forum_id IN ($in_clause)
AND t.topic_status <> 2
ORDER BY t.topic_last_post_time DESC
LIMIT ?
";
$stmt = $pdo->prepare($sql);
foreach ($forums as $i => $fid) {
$stmt->bindValue($i + 1, $fid, PDO::PARAM_INT);
}
$stmt->bindValue(count($forums) + 1, $limit, PDO::PARAM_INT);
$stmt->execute();
$topics = [];
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$topics[] = [
'id' => $row['topic_id'],
'title' => $row['topic_title'],
'forum' => $row['forum_name'],
'created' => date('Y-m-d H:i:s', $row['topic_time']),
'last_post' => date('Y-m-d H:i:s', $row['topic_last_post_time']),
'url' => $base_url . 'viewtopic.php?t=' . $row['topic_id']
];
}
header('Content-Type: application/json');
echo json_encode($topics, JSON_PRETTY_PRINT);
} catch (PDOException $e) {
echo json_encode(['error' => 'Erreur DB : ' . $e->getMessage()]);
}
Code : Tout sélectionner
https://tonsite.com/ton_script.php?limit=5&forums=2,5,10
Résumé des champs JSON retournés
Code : Tout sélectionner
id : ID du sujet
title : Titre du sujet
forum : Nom du forum
created : Date de création du sujet
last_post : Date du dernier message
url : Lien direct vers le sujet
Re: Script de récupération des sujets phpBB
Merci Eleven !
Je me demandais si t'étais toujours actif, j'ai ma réponse : fidèle au poste
!
Je me demandais si t'étais toujours actif, j'ai ma réponse : fidèle au poste


Messages : 75
Enregistré le : sam. 7 sept. 2024 14:51
Enregistré le : sam. 7 sept. 2024 14:51
Seigneur : Elevor
Numéro du seigneur : 1012
Numéro du Commodore : 1524
Re: [réalisé] Script de récupération des sujets phpBB
Je ne suis pas très "causant", mais je veille...
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité