themen aus foren auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • themen aus foren auslesen

    Moin,

    ich möchte aus einer Anzahl bestimmter, definierter Foren eine Anzahl Themen auslesen und nachher ausgeben lassen.

    Das was ich im folgenden für mich gebastelt bzw. verändert habe, funktioniert auch bis auf einen kleinen Schönheitsfehler. Es werden aus jedem der spezifizierten Foren 10 Themen (sofern vorhanden ausgelesen).

    Ich möchte jedoch nur die 10 aktuellsten Themen insgesamt aus den spezifizierten Foren haben.

    Wo/wie müsste ich da was am Code ändern ? Hat jemand einen Tipp für mich ? Danke.

    Code:
    define('userforen', '98,97,87,72,47,81,88,96,66,85,86'); // Liste der Foren
    define('userthemen'  , 10); // Anzahl der Themen 
    
            if($seiteninfos['seiten_text'] == "[letztethemen3]")
            {
                function getLTforen2()
                {
                    global
                        $db,
                        $n,
                        $wbbuserdata
                    ;
                    
                    $boardpermissions = getPermissions();
                    
                    $res = $db->query(
                        "SELECT boardid, boardorder , parentid, parentlist
                        FROM bb".$n."_boards
                        WHERE boardid IN (".(defined('userforen') ? userforen : "-1").")
                        ORDER BY parentid ASC, boardorder ASC"
                        
                    );
    
                    
                    
                    $boardids = Array();
                    while ($row = $db->fetch_array($res))
                    {
                        if (
                            !isset($boardpermissions[$row['boardid']]['can_use_search'])
                            || $boardpermissions[$row['boardid']]['can_use_search'] != 0
                        )
                                    $boardids[] = $row['boardid'];
                    }
                    return $boardids;
                }
                
                
                if (!defined('userthemen'))
                    define('userthemen', 10);
                
                $boardids = getLTforen2();
                
                $lt_foren2 = '';
                for ($t = 0; $t < count($boardids); $t++)
                {
                    $board = $db->query_first("SELECT boardid, title FROM bb".$n."_boards WHERE boardid = ".$boardids[$t]);
                    
                    if (empty($board['title']))
                        continue;
                    
                   $res = $db->query(
                        "SELECT bb".$n."_threads.*, bb".$n."_icons.*
                        FROM bb".$n."_threads
                        LEFT JOIN bb".$n."_icons USING (iconid)
                        WHERE bb".$n."_threads.boardid = ".$boardids[$t]."
                        ORDER BY bb".$n."_threads.lastposttime DESC
                        LIMIT ".userthemen
                    );
                    
                    $lt_themen2 = '';
                    if (!$db->num_rows($res))
                        continue;
                    while ($row = $db->fetch_array($res))
                    {
                        if ($row['iconid'])
                            $row['icontag'] = makeimgtag($row['iconpath'], getlangvar($row['icontitle'], $lang), 0);
                        else
                            $row['icontag'] = '';
                            
                        $row['threaddate'] = formatdate($wbbuserdata['dateformat'], $row['starttime'], 1);
                        $row['threadtime'] = formatdate($wbbuserdata['timeformat'], $row['starttime']);
                        
                        $row['replydate'] = formatdate($wbbuserdata['dateformat'], $row['lastposttime'], 1);
                        $row['replytime'] = formatdate($wbbuserdata['timeformat'], $row['lastposttime']);
                        
                        $row['topic']      = htmlconverter($row['topic']);
                        $row['starter']    = htmlconverter($row['starter']);
                        $row['lastposter'] = htmlconverter($row['lastposter']);
                        
                        eval("\$lt_themen2 .= \"".$tpl->get("portalbox3_threadbit")."\";");
                        
                    }
                    
                    eval("\$lt_foren2 .= \"".$tpl->get("portalbox3_boardbit")."\";");
                    
                }
                eval("\$seiteninfos[seiten_text] = \"".$tpl->get("portalbox3_lastthreads")."\";");
            }
    Danke
    Andreas

  • #2
    Bitte die Forenregeln beachten!

    Wird so ohne weiteres nicht möglich sein. Ich vermute, du weißt nicht wirklich, was der Code macht. Ich auch nicht! (keine Lust zu lesen. ist ja nichtmal bunt.)

    Hab aber mal überflogen und bin der Meinung, dass du das alles viel zu umständlich ist.

    anstatt jeweils 10 threads aus den foren auszulesen (was im übrigen bei dir alleine 11 Queries erzeugt), solltest du lieber 1 mal 10 threads aus allen (ausgewählten) Foren auslesen.

    Wie das geht, überleg erstmal selbst. Sollst ja mitarbeiten

    Kommentar

    Lädt...
    X