Avatar

Datenbankabfrage für die Startseite (General)

by Milo ⌂, Friday, November 04, 2016, 22:14 (323 days ago) @ hintersatz

Hallo,

Eine Korrektur bitte: ich wollte die x-neuen Themen anzeigen lassen, nicht die x-letzten Postings.

Ich habe auf einer Seite eine Liste, welche immer die letzten x unterschiedlichen Postings zeigt. Hier das Script dazu Vielleicht könnt Ihr es für Eure Dinge umbiegen.


<?php
 if (realpath($_SERVER['SCRIPT_FILENAME'])==realpath("recentForum.php")) {
  die("Kein Direktaufruf!");
 }
 
$forumfolder = "myforum";
$topic_length = 25;
$topic_limit  = 5;
$forumuri =  "http://".$_SERVER["HTTP_HOST"]."/".$forumfolder."/";
$content = "";
 
function setCurrentLength($str, $maxlen){
    $words = explode(" ",$str);
    $str = "";
    for ($i=0; $i<count($words); $i++){
        if (strlen($str)>$maxlen){
            return trim($str)."&hellip;";  
        }
        else {
            $str .= trim($words[$i])." ";
        }
    }
    return trim($str);
}
 
include_once "../".$forumfolder."/config/db_settings.php";
 
$conForumDB = mysqli_connect($db_settings['host'], $db_settings['user'], $db_settings['password']) OR die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysqli_error());
mysqli_query($conForumDB,'SET NAMES utf8');
mysqli_select_db($conForumDB,$db_settings['database']) OR die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysqli_error());
 
// Kategorien bestimmen und deren Status abfragen
$Categorys = array();
$sql = "SELECT `id`, `accession` FROM `".$db_settings['category_table']."`";
$result = mysqli_query($conForumDB, $sql) or die("Query failed : " .mysqli_error());
if (mysqli_num_rows($result)){
    while($row = mysqli_fetch_array( $result )) {
        $Categorys[''.$row['id'].''] = $row['accession'];
    }
    mysqli_free_result($result);
}
 
// Letzten X-Beiträge aus der EintragsDB holen
$sql = "select `id`, UNIX_TIMESTAMP(time), `subject`, `name`, `user_id`, `category` from (select `tid`, `time`, `id`, `subject`, `name`, `user_id`, `category` from `".$db_settings['forum_table']."` WHERE `spam` = 0 order by `time` desc) g1 group by `tid` order by `time` desc limit 0, ".$topic_limit."";
$result = mysqli_query($conForumDB, $sql);
if (mysqli_num_rows($result)){
 $content .= "<ul>\n";
    while($row = mysqli_fetch_array( $result )) {
  if ($row['user_id'] != 0 && empty($row['name'])) {
   $sql_name = "select `user_name` from `".$db_settings['userdata_table']."` WHERE `user_id` = ".$row['user_id']."";
   $result_name = mysqli_query($conForumDB, $sql_name);
   $row_name = mysqli_fetch_array( $result_name );
   $row["name"] = $row_name["user_name"];
   mysqli_free_result( $result_name ); 
  }
 
 
        if ($Categorys[ $row['category'] ] != 0){
            $content .=  "\t<li><a title=\"Forum: ".$row["subject"]." (Nur registrierte Benutzer oder Mitglieder)\" href=\"".$forumuri."index.php?id=".$row['id']."\">";
            $content .=  setCurrentLength($row["subject"], $topic_length);
            $content .=  "</a> von ".$row["name"]." am ".date('d.m.Y - H:i', $row["UNIX_TIMESTAMP(time)"])." Uhr <img style=\"margin:0; padding:0; border:none;\" src=\"".$forumuri."themes/default/images/registered.gif\" alt=\"f&uuml;r registrierte Nutzer\" title=\"\" /></li>\n";
        }
        else {
            $content .=  "\t<li><a title=\"Forum: ".$row["subject"]."\" href=\"".$forumuri."index.php?id=".$row['id']."\">";
            $content .=  setCurrentLength($row["subject"], $topic_length);
            $content .=  "</a> von ".$row["name"]." am ".date('d.m.Y - H:i', $row["UNIX_TIMESTAMP(time)"])." Uhr</li>\n";
        } 
 
    }
    $content .=  "</ul>\n";
 
    mysqli_free_result($result);    
}
echo $content;
?>

Gruß Micha

--
Surveyor-Software: Geodetic Network Adjustment & Deformation-Analysis and Transformation


Complete thread:

 RSS Feed of thread

powered by my little forum