Page 1 sur 1

[réalisé] Script de récupération des sujets phpBB

Posté : sam. 10 mai 2025 22:07
par Max
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 !

Re: Script de récupération des sujets phpBB

Posté : dim. 11 mai 2025 10:59
par Eleven
Salut Max.

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()]);
}
Exemple d'appel du script :

Code : Tout sélectionner

https://tonsite.com/ton_script.php?limit=5&forums=2,5,10
Sortie JSON :
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

Posté : mar. 13 mai 2025 08:52
par Max
Merci Eleven !
Je me demandais si t'étais toujours actif, j'ai ma réponse : fidèle au poste 8-) :lol: !

Re: [réalisé] Script de récupération des sujets phpBB

Posté : mar. 13 mai 2025 20:19
par Eleven
Je ne suis pas très "causant", mais je veille...