Sehr großes Problem

Maus_1985

Grünschnabel
Hallo ihr lieben,

so nun habe ich mich auch mal entschlossen mich hier anzumelden. Hab aber auch gleich mal eine Frage und hoffe dass Ihr mir weiter helfen könnt. Ich lerne gerade PHP zu programmieren. Hab auch mit einer Freundin ein ganz einfaches Forum auf die Reihe bekommen.

Wie die Tabelle in der Datenbank aussieht das schreibe ich gleich. Erst mal zu meinem Problem. Ich habe vor auf meiner Index Seite immer die letzten 5 neuen Threads ausgeben zu lassen also wie der heißt und wann der geschrieben worden ist also mit Zeit. Dann soll der aber gleich auf den jeweiligen Thread verlinkt werden. Mit der ganzen Geschichte komme ich einfach nicht weiter. Kann mir da von euch jemand helfen. Ach ja ich verwende eine MySQL Datenbank

So sieht meine Tabelle für die posts in der Datenbank aus.

CREATE TABLE `simple_posts` (
`postid` int(11) NOT NULL auto_increment,
`threadid` int(11) NOT NULL default '0',
`von` text NOT NULL,
`datum` text NOT NULL,
`post` text NOT NULL,
`titel` text NOT NULL,
`ip` text NOT NULL,
PRIMARY KEY (`postid`)
) TYPE=MyISAM AUTO_INCREMENT=24 ;


So sieht meine Tabelle für die Threads in der Datenbank aus:

CREATE TABLE `simple_threads` (
`threadid` int(11) NOT NULL auto_increment,
`boardid` int(11) NOT NULL default '0',
PRIMARY KEY (`threadid`)
) TYPE=MyISAM AUTO_INCREMENT=7 ;


So sieht meine Tabelle für die Foren in der Datenbank aus:

CREATE TABLE `simple_foren` (
`boardid` int(11) NOT NULL auto_increment,
`name` text NOT NULL,
`beschreibung` text NOT NULL,
PRIMARY KEY (`boardid`)
) TYPE=MyISAM AUTO_INCREMENT=21 ;
 
Einfach neben Threadname auch noch Thread-ID auslesen und auf thread.php (oder wie das File bei dir heisst) verweisen mit GET-Parameter t (oder thread) = id.
 
Hmm nee ich glaube du hast das nicht ganz verstanden was ich meine. Ich habe eine Index.php Seite da soll dann immer die Aktuellsten 5 Threads angezeigt werden also aus dem Forum. Auf der Index.php wo das ausgegeben wird, soll dann auch gleich ein richtiger Link gesetzten werden um auf den Thread dann auch gleich zu gelangen. Verstehst du was ich meine?
 
Vereinfache dir die Arbeit indem du noch in die Threads Tabelle ein weiteres Attribut einfügst wie zum Beispiel "lastpost". Immer wenn nen neuer Post kommt, wird der timestamp da aktualisiert und du kannst ganz einfach die 5 aktuellsten auslesen.

So wie es bisher ist, ist das schon etwas komplizierter zu realisieren, da du erst die posts nach den aktuellsten Datum raussuchen musst, schauen musst, ob nicht etwa die 2 letzten Posts in einem Thread waren und dann dazu den Haupthread ermitteln. Ist wie ich finde umständlicher.


WICHTIG -> Ändere das Datumsfeld in irgendetwas anderes um, aber nicht in TEXT stehen lassen, denn sonst kannst du nicht nach dem AKTUELLSTEN Datum sortieren und bekommst nur schnulli heraus.
 
Zuletzt bearbeitet:
Hallo,

ich denke ich schreib hierzu auch mal was, ist ja nen interessantes Thema :o)

Also generell fand ich den zweiten Post ziemlich sinnvoll.
Wie rufst du denn deine Treads auf? Über eine Funktion oder? dann ist der Link ja nicht das Problem, einfach Treadid mit auslesen und dann einfach auf die Tread-Funktion verlinken mit der Treadid als Variable, dann biste auf alle Fälle schonmal im richtigen Tread.

Wie ich die Sache einschätze werden deine Posts ja fortlaufend in deine Tabelle geschrieben, also könntest du einfach die letzten 5 auslesen. Einziges Problem wäre dann noch das du wenn du Pech hast 5 Posts zu 1 Tread hast, je nachdem was in deinem Forum so los ist.
Ist das ein Problem oder würde dich das nicht stören?

Für ne andere Möglichkeit noch nen Beispiel

PHP Code:

global $prefix, $dbi, $sitename;

$result = sql_query("SELECT topic_id, topic_title, forum_id FROM ".$prefix."_bbtopics ORDER BY topic_time DESC LIMIT 10", $dbi);
$content = "<br>";
while(list($topic_id, $topic_title, $forum_id) = sql_fetch_row($result, $dbi)) {
$res = sql_query("SELECT image FROM ".$prefix."_posts where topic_id='$topic_id'", $dbi);
list ($image) = sql_fetch_row($res, $dbi);
if (file_exists("images/forum/subject/$image")) {
$content .= "<img src=\"images/forum/subject/$image\" border=\"0\" alt=\"\" width=\"15\" height=\"15\">&nbsp;<a href=\"modules.php?mop=modload&name=Forum&amp;file=viewtopic&amp;topic=$topic_id&amp;forum=$forum_id\">$topic_title</a><br>";
} else {
$content .= "<img src=\"images/forum/subject/default.gif\" border=\"0\" alt=\"\" width=\"15\" height=\"15\">&nbsp;<a href=\"modules.php?mop=modload&name=Forum&amp;file=viewtopic&amp;topic=$topic_id&amp;forum=$forum_id\">$topic_title</a><br>";
}
}

Vieleicht hilfts dir ja was

PS: Sorry das der Code so im Text schwimmt :o\

Liebe Grüße
Phil
 
Zurück