In diesem Tutorial möchte ich euch zeigen, wie man ganz leicht an ein einfaches Forum, realisiert in PHP und MySQL, gelangt.
Wichtig ist hierbei, dass ihr wisst, dass das im Folgenden beschriebene Forum als Grundlage dienen soll, jedoch kann man es auch so einsetzen.
Benötigt wird:
- PHP
- MySQL
- Editor deiner Wahl
- Zeit!
Zwischen Info: Ich werde nur die wichtigsten Codeausschnitte direkt einfügen, das gesamte Script könnt ihr euch dann über den Link (vor und nach den wichtigsten Teilen des Scripts) anschauen. Falls ihr also vorhabt, das Script zu kopieren, so tut dies bitte im Pastebin, oder ladet euch das Script am Ende des Tutorials runter.
Bevor wir anfangen, möchte ich mit euch kurz durchgehen, was außer den technischen Sachen noch benötigt wird, dass man es überhaupt benutzen kann (Sicherlich ist ein Forum ohne Anzeige der geschriebenen Beiträge wenig sinnvoll =] )
Welche Funktionen werden benötigt?
- Forenübersicht: Auflistung aller Foren mit Forenbeschreibung und Anzeige des letzten Beitrags
- Threadübersicht: Auflistung aller geschriebenen Themen mit Anzeige des letzens Beitrags
- Neues Thema erstellen: In den jeweiligen Foren möchte man natürlich auch neue Themen starten
- Beiträge lesen: Auflistung der in ein Thema geschriebenen Beiträge inklusive Anzeige des Benutzernamens
- Auf Beitrag antworten: Antwortfeld am Ende des Themas (nach der letzen Antwort) Das Löschen, Bearbeiten und Schließen von Themen bzw. Beiträgen wird über phpmyadmin geregelt. In dieser Version gibt es auch keine festen Benutzer(namen).
Welche Tabellen werden benötigt?
forum_categories
- eindeutige ID der Forenkategorie
- Position der Kategorie
- Name/Titel der Kategorie
- Beschreibung der Kategorie
- Typ der Kategorie (vllt. ein wenig irreführend; 0 = Kategorie; 1 = Forum)
- Falls Forum: Hauptkategorie
- Status der Kategorie (0 = unsichtbar; 1 = sichtbar)
Der dazugehörige SQL-Code lautet wie folgt:
CREATE TABLE IF NOT EXISTS `forum_categories` (
`ID` int(255) unsigned NOT NULL AUTO_INCREMENT,
`position` int(255) NOT NULL,
`name` varchar(150) NOT NULL,
`description` varchar(255) NOT NULL,
`type` int(1) NOT NULL COMMENT '0 = Categorie; 1 = Forum',
`main_categorie` int(255) NOT NULL,
`active` int(1) NOT NULL COMMENT '0 = not visible; 1 = visible',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
forum_threads- eindeutige ThreadID
- ForenID von dazugehörigem Forum (wo wurde das Thema erstellt?)
- Titel des Themas
- Thema für Antworten geschlossen/geöffnet (0 = geschlossen; 1 = geöffnet)
- Erstelldatum in Form eines Timestamps (Beispiel: 2010-05-04 20:21:16)
CREATE TABLE IF NOT EXISTS `forum_threads` (
`ID` int(255) unsigned NOT NULL AUTO_INCREMENT,
`fid` int(255) NOT NULL,
`topic` varchar(60) NOT NULL,
`closed` int(11) NOT NULL COMMENT '0 = open; 1 = closed',
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
forum_posts
- eindeutige BeitragsID
- ThemenID des dazugehörigen Themas (in welchem Thema wurde dieser Beitrag geschrieben?)
- ForenID des dazugehörigen Forums (nicht unbedingt notwendig, aber sicherheitshalber mal da)
- Benutzername des jeweiligen Autors (keine festen Benutzernamen vergeben, sprich ohne Login-Funktion, o.ä)
- Emailadresse des Nutzers (ebenfalls für "Gravatar")
- Titel des Beitrags
- Eigentlicher Beitrag
- Erstelldatum des Beitrags in Form eines Timestamps
CREATE TABLE IF NOT EXISTS `forum_posts` (
`ID` int(255) unsigned NOT NULL AUTO_INCREMENT,
`tid` int(255) NOT NULL,
`fid` int(255) NOT NULL,
`username` varchar(60) NOT NULL,
`email` varchar(40) NOT NULL,
`topic` varchar(60) NOT NULL,
`text` text NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
Nachdem wir die 3 Tabellen angelegt haben machen wir uns an den eigendlichen Code ran.
Wir beginnen bei der Forenübersicht und arbeiten uns bis zur Antwortenfunktion runter. Um auf die Datenbank zugreifen zu können erstellen wir erstmal eine config.php, in welcher wir die Verbindung zur Datenbank herstellen und in einer globalen Variablen speichern, sodass wir schnell und einfach darauf zugreifen können.
config.php
<?php
$cfg = array(
'db' => array(
'host' => 'localhost', // Datenbankhost, meist localhost
'user' => 'root', // Datenbank-Benutzername
'pass' => 'PASSWORT', // Datenbankpasswort
'base' => 'mein_forum' // Datenbankname
)
);
$cfg['db'] = new mysqli($cfg['db']['host'], $cfg['db']['user'], $cfg['db']['pass'], $cfg['db']['base']);
if(mysqli_connect_errno()) {
die('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
}
$GLOBALS['db'] =& $cfg['db']; // Globale Variable $db anlegen
?>
(nopaste)Ich denke, diese Datei ist selbst erklären. Später müssen wir aus unserem Timestamp in der Datenbank noch ein anständiges Format machen, dies können wir mit folgender Funktion:
functions.php
<?php
/* Funktion zum Konvertieren des Timestamps in "normales" Format */
function convertdate($date) {
$expDate = explode(" ", $date); // zuerst das Leerzeichen (" ") als Trennzeichen benutzen und jeweils als Arrayelement speichern
$d = explode("-", $expDate[0]); // dann den Bindestrich ("-") als Trennzeichen auf der erste Element des Arrays $expDate, also unseres davor schon einmal geteilten Timestamps, anwenden
$t = explode(":", $expDate[1]); // nun den Doppelpunkt (":") als Trennzeichen auf das zweite Element des Arrays $expDate, also unseres davor schon einmal geteilten Timestamps, anwenden
// $d[2] = Tag; $d[1] = Monat; $d[0] = Jahr;
// $t[0] = Minuten; $t[1] = Stunden
return $d[2].'.'.$d[1].'.'.$d[0].' um '.$t[0].':'.$t[1].' Uhr'; // Ausgabe: "TT.MM.JJJJ um mm:hh Uhr"
}
(nopaste)Diese Dateien werden wir in Zukunft in jedes unserer Forenscripts includieren.
Okay, die config.php und die functions.php alleine bringen uns noch nicht wirklich viel, darum machen wir auch gleich weiter und fangen mit der Forenübersicht an.
Diese könnte mit ein wenig Grafik dann zum Beispiel so aussehen:
Doch bis dahin ist's noch ein wenig Code, darum verlieren wir am Besten keine Zeit!
overview.php
[...]
$get_cats = 'SELECT * FROM `forum_categories` WHERE `active` = 1 && `type` = 0'; // SQL-Query zum Abfragen der Hauptkategorien
$res = $db->query($get_cats); // Speichert das Ergebnis des oberen Querys in $res
[...]
$subs = 'SELECT * FROM `forum_categories` WHERE `main_categorie` = '.$row['ID'].' && `type` = 1 && `active` = 1 ORDER BY `position`'; // Sucht beschreibbare Foren
$sub_res = $db->query($subs);
$counter = 0; // Zähler-Variable
while($sub = $sub_res->fetch_assoc()) {
switch($counter) { // Sorgt für "Zebra-Effekt"
case 0: $bg = '#e6e6e6'; // Wenn Zähler-Variable auf 0, dann Zeilenhintergrund = #363636
$counter++; // Zähler-Variable + 1
break;
case 1: $bg = '#d9d9d9'; // Wenn Zähler-Variable auf 1, dann Zeilenhintergrund = #d9d9d9
$counter--; // Zähler-Variable - 1
break;
}
?>
[...]
<?php
$latest_post = 'SELECT * FROM `forum_posts` WHERE `fid` = '.$sub['ID'].' ORDER BY `ID` DESC LIMIT 1'; // letzen Beitrag auslesen
$result = $db->query($latest_post);
if(!$result->num_rows) { // Falls keine Beiträge vorhanden sind
echo 'Keine Beiträge vorhanden';
} else {
$post = $result->fetch_assoc(); // Letzen Beitrag in $post speichern
$get_topic = 'SELECT `topic`, `fid`, `ID` FROM `forum_threads` WHERE `ID` = '.$post['tid'].''; // dazugehöriges Thema für Link finden
$t_res = $db->query($get_topic);
$topic = $t_res->fetch_assoc();
echo 'Letzter Beitrag in <[a href="showposts.php?fid='.$topic['fid'].'&tid;='.$topic['ID'].'">';
if(strlen($topic['topic']) >= 15) { // Kürzen, falls Titel länger als 14 Zeichen
echo substr($topic['topic'], 0, 15).'...';
} else {
echo $topic['topic'].'';
}
echo ' von '.$post['username'].' am '.convertdate($post['created']); // Hier wandelt convertdate() unseren timestamp in eine "normale" Angabe um
}
[...]
(nopaste)
Das sieht ohne unsere CSS-Datei natürlich nicht sonderlich schön aus, daher gibts diese gleich dazu:
standard.css - nopaste
Das Hintergrundsbild für die Kategorien gibts hier:
(einfach Rechtsklick -> speichern unter und anschließend in den richtigen Ordner kopieren (images).)
Um zu testen ob alles funktioniert könnt ihr nun ein paar Kategorien sowie Foren einrichten, geht dazu wie folgt vor:
Ruft euer phpmyadmin auf und ruft die Tabelle forum_categories auf.
Klickt nun in der oberen Navigation auf "Einfügen", füllt die Felder wie folgt:
ID: (freilassen)
position: Positionsnummer, 1 ganz oben, 999 ganz unten.
name: Titel der Kategorie/des Forums
description: kurze Beschreibung des Forums / Für Kategorie freilassen
type: 0 = Kategorie; 1 = Forum
main_categorie: ID der dazugehörigen Kategorie (nicht die Position)
active: 0 = unsichtbar/inaktiv; 1 = sichtbar/aktiv
Hier ein Beispiel für eine Kategorie und anschließend eins für ein Forum:
Kategorie
ID:
position: 1
name: Community
description:
type: 0
main_categorie:
active: 1
Forum
ID:
position: 1
name: Vorstellen
description: Neu hier? Hier können Sie sich vorstellen.
type: 1
main_categorie: 1
active: 1
Aussehen könnte es dann so:
(natürlich etwas größer ;) )
Nun kannst du weitere Kategorien und Foren nach Lust und Laune hinzufügen bzw. löschen.
Soweit sieht's doch schon richtig gut aus, aber funktionieren tut noch nicht viel, darum machen wir uns nun an eine Themenübersicht in den einzelnen Unterforen.
Doch zuvor müssen wir eine neue Funktion erstellen, um die Benutzereingaben, bzw. die von Benutzer änderbaren Daten abzusichern, um eventuelle Hackangriffe oder SQL-Injections zu verhindern.
Dazu erweitern wir in die Datei "functions.php" um folgende Funktion:
/* Funktion zum Überprüfen der Benutzereingaben um Hackangriffe und SQL-Injections zu verhindern */
function checkinput($input) {
global $db;
$input = mysqli_real_escape_string($db, htmlspecialchars($input)); // Die als Parameter übergebene Zeichenkette wird auf potentiell gefährliche Zeichen durchsucht und gegebenfalls unschädlich gemacht.
return $input; // Die Funktion gibt die "gesicherte" Zeichenkette zurück
}
(nopaste)
Diese Funktion wenden wir von nun an auf jede Benutzereingabe, beziehungsweise auf jeden von Benutzern änderbaren Wert an.
Hier nun die Datei zum Anzeigen der verschiedenen Themen in einem Forum:
showthreads.php
[...]
$fid = checkinput(trim($_GET['fid'])); // Überprüft die übergebene Forenid und löscht überflüssige Leerzeichen
$get_name = 'SELECT `name` FROM `forum_categories` WHERE `ID` = '.$fid.''; // SQL-Query zum Auslesen des Namens des Forums
$name = $db->query($get_name);
$f_name = $name->fetch_assoc();
[...]
$sql = 'SELECT * FROM `forum_threads` WHERE `fid` = '.$fid.' ORDER BY `created` DESC'; // SQL-Query zum Auslesen der erstellen Themen
$res = $db->query($sql);
if($res->num_rows) { // Falls Themen vorhanden sind
[...]
while($row = $res->fetch_assoc()) {
$last_post_q = 'SELECT * FROM `forum_posts` WHERE `tid` = '.$row['ID'].' ORDER BY `ID` DESC LIMIT 1'; // SQL-Query zum Auslesen der Daten des letzen Beitrags eines Themas
$l_p_res = $db->query($last_post_q);
$last_post = $l_p_res->fetch_assoc();
[...]
}
[...]
} else { // Falls keine Themen vorhanden
echo '
Keine Themen vorhanden';
}
?>
(nopaste)
Doch ohne erstellbare Themen und Beiträge bringt uns auch all das nichts, daher gibts gleich die Datei zum Erstellen neuer Themen dazu:
createthread.php
<?php
session_start(); // Sitzung/Session starten (wird später benötigt)
?>
[...]
$fid = checkinput(trim($_GET['fid'])); // Überprüfen der übergebenen Forenid
if(!empty($fid)) { // Wenn $fid nicht leer ist
$cat_name_q = 'SELECT `name` FROM `forum_categories` WHERE `ID` = '.$fid.' && `type` = 1'; // Name des Forums auslesen
$t_res = $db->query($cat_name_q);
$t_name = $t_res->fetch_assoc();
echo '<[a href="overview.php">Forum » <[a href="showthreads.php?fid='.$fid.'">'.$t_name['name'].' » <[a href="createthread.php?fid='.$fid.'">Thema erstellen
';
if(isset($_POST['create'])) { // Wenn Formular abgeschickt
[...]
$cat_stat = 'SELECT `active`, `name` FROM `forum_categories` WHERE `ID` = '.$fid.''; //SQL-Query: Status und Name des Forums auslesen
$stat = $db->query($cat_stat);
[...]
if(isset($_SESSION['lastpost'])) { // Falls Session-Eintrag mit vorkurzem geschriebenemn Beitrag existiert
$diff = $_SESSION['lastpost'] + 60; // Zeitpunkt des letzen Beitrags + 60 Sekunden
} else {
$diff = false; // Kein Eintrag vorhanden
}
[...]
$sql2 = 'INSERT INTO
`forum_threads`
(fid, topic)
VALUES
(\''.$fid.'\', \''.$title.'\')'; //SQL-Query zum einfügen des Themas in die Datenbank
$insert2 = $db->query($sql2);
$get_id = 'SELECT max(ID) AS max FROM forum_threads'; // Größte ID (ID des letzen Eintrags) der Themen auslesen
$res = $db->query($get_id);
$row = $res->fetch_assoc();
$tid = $row['max']; // ID des gerade angelegten Themas in $tid speichern
$sql = 'INSERT INTO
`forum_posts`
(tid, fid, username, email, topic, text)
VALUES
(\''.$tid.'\', \''.$fid.'\', \''.$username.'\', \''.$email.'\', \''.$title.'\', \''.$message.'\')'; // SQL-Query zum Einfügen des Posts
$insert = $db->query($sql);
[...]
} else {
echo 'Es wurde keine ForenID übergeben.';
}
?>
(nopaste)
Probiert es ruhig aus, und erstellt einige Themen, ihr werdet sie im nächsten Schritt benötigen. ;)
Nun machen wir uns nämlich an das Anzeigen der Beiträge:
showposts.php
[...]
$tid = checkinput(trim($_GET['tid'])); // ThemenID aus URL
$fid = checkinput(trim($_GET['fid'])); // ForenID aus URL
[...]
if($f_name) { // Wenn keine Fehler aufgetreten sind
[...]
$sql = 'SELECT * FROM `forum_posts` WHERE `fid` = '.$fid.' && tid = '.$tid.' ORDER BY `ID`'; // Beiträge auslesen
$res = $db->query($sql);
if($res->num_rows) { // Falls Beiträge vorhanden
while($row = $res->fetch_assoc()) { // Anzahl der Beiträge = Anzahl der Durchläufe; Listet die Beiträge auf
[...]
}
$thread_stat = 'SELECT `closed`, `topic` FROM `forum_threads` WHERE `ID` = '.$tid.''; //SQL-Query: Status und Titel des Themas
$stat = $db->query($thread_stat);
$stats = $stat->fetch_assoc();
if($stats['closed'] == 0) { // Falls Thema nicht geschlossen Antwortformular anzeigen
[...]
}
}
} else { // Falls Thema nicht existiert
echo 'Dieses Thema existiert nicht (mehr).';
}
?>
(nopaste)
Wie ganz am Anfang angesprochen nutze ich hier "Gravatar" als Avatar im Forum.
Hier wird über die Emailadresse der bei Gravatar eingetragene Avatar angezeigt, alternativ wird ein zufälliger Avatar angezeigt.
Jetzt wird es spannend, schon über 26000 Zeichen wurden geschrieben, wir sind nun an der letzen Datei angelangt, wir brauchen noch das Script, das beim Drücken auf Antworten auch den Beitrag in der Datenbank speichert.
Doch auch dies sollte kein Problem sein:
answer.php
[...]
if(isset($_SESSION['lastpost'])) { // Falls letzer Beitrag in Sitzung gespeichert
$diff = $_SESSION['lastpost'] + 60; // $diff = Zeitpunkt von Abschicken des Beitrags + 60 Sekunden
} else { // Falls kein letzer Beitrag gespeichert wurde
$diff = false;
}
[...]
$sql = 'INSERT INTO
`forum_posts`
(tid, fid, username, email, topic, text)
VALUES
(\''.$tid.'\', \''.$fid.'\', \''.$username.'\', \''.$email.'\', \''.$title.'\', \''.$message.'\')';
$insert = $db->query($sql);
echo $db->error.'
';
if($insert) {
$_SESSION['lastpost'] = time();
echo '<[meta http-equiv="refresh" content="0; URL=showposts.php?fid='.$fid.'&tid;='.$tid.'">';
} else {
echo 'Es ist ein Fehler beim Erstellen Ihrer Antwort aufgetreten, bitte versuchen Sie es später erneut und sollte sich dieses Problem nicht beheben, so melden Sie dies bitte über das Kontaktformular';
}
[...]
?>
(nopoaste)
So, das war's eigendlich auch schon, mit jetzt schon fast 30.000 Zeichen denke ich ist das Tutorial auch mehr als lang genug geworden.
Ich hoffe es hat euch gefallen, ihr habt etwas daraus gelernt und ihr habt viel Erfolg mit eurem neuen Forum.
Auf Wunsch werde ich das Tutorial natürlich weiter ausarbeiten, sprich mit Login, Admin, und so weiter, einfach einen Kommentar hinterlassen. =)
Forum-Script downloaden
Das komplette Forum gibt's auch als Download: HIER DOWNLOADEN
10371 Mal gelesen

Kommentare
Foren sind out, Blogs sind in :) Spaß bei Seite, dein Tutorial ist eine gute Starthilfe für alle Anfänger. Eins muss man aber bedenken, IRL werden heute fast ausschließlich Frameworks wie CakePHP und Template-Engines wie Smarty benutzt. Kein Mensch will das Rad neu erfinden. Aber man sollte unbedingt es mal versuchen auch von Null etwas wie Forum oder Blog zu programmieren. Nur so kann man auch fremde Frameworks verstehen.
Sehr gutes Tutorial. Wäre schon cool wenn du es weiter ausarbeiten könntest.
Was da beschrieben wird, ist kein Forum, sondern ein Board!
Innerhalb eines Forums kann man auf jeden Kommentar antworten und es entsteht eine Baumstruktur.
In einem Board eröffnet jemand einen Thread und alle Antworten folgen dann Zeitlich sortiert untereinander.
Leider funktioniert der Download-Link nicht :(
Sorry, dass es so lange gedauert hat, hab den Quellcode eben nochmal hochgeladen. Hoffe jetzt gehts!
Im Moment sieht das Tutorial noch extrem wild aus, weil der Editor mir extreme Probleme bereitet, komische Sache…
Nett nett aber was mir pers. Fehlt ist ggf eine install.php worüber die Datenbanksätze angelegt werden und evtl. noch die Funktion zum Anlegen von Foren und deren Kats. Denn bei deiner Anleitung steht nie bei welche Funktion erteilt werden soll bei der Erstellung eines Forum oder einer Kategorie, Anfänger stehen denn da und wissen nicht weiter.
Naja, wer sich mit PHP noch nicht beschäftigt hat und sich selbst als Anfänger bezeichnet, der sollte wohl besser auf "Hallo Welt"-Scripte setzen und keine Foren, Gästebücher etc. installieren, die angepasst werden müssen, gewartet werden müssen usw. Denn schließlich kommt über ein schlechtes PHP-Script auch bösartiger Code zum einsatz. Von daher sollten Anfänger besser die Finger davon lassen und dafür sorgen, dass sie PHP richtig beherrschen, bevor sie ihre Werke auf WebSpace oder gar einem Rootserver laufen lassen.
Guten Tag
An sich fehlen doch nur 3 Dinge die in das Tutorial mit rein sollten.
Die Seite welche das Forum (in Tutorialform) aufruft(es fehlt eine Index).
desweiteren ein simpler Adminbereich.
Man kann eine Install für die DB mit vorstellen.
Sieht schon nicht schlecht aus.
Was mich aber (leider) immer wieder stört: Warum ordnet man den Code nicht so an, sodass man später besser durchblicken kann? Gut ich arbeite mit PHP bereits seit über 7 Jahren. Ich habe mir halt eine gewisse Struktur angewöhnt, was das setzen von Tabspaces, etc. angeht. Sinnvoll ist es, wenn es so programmiert wird, dass man auch später Fehler schneller finden kann und auch noch diverse Erweiterungen durchführen kann.
Generell finde ich ein Forum auf OOP-Basis übersichtlicher. Naja, jedenfalls bist du so schlau gewesen und setzt die geschweiften Klammern nicht seperat in einer Zeile. Dies empfinde ich als Platzverschwendung der Codezeilen :-P
Mal schauen, vielleicht setz ich auch mal ein Tutorial auf, dann aber auf PHP-Basis.
Aulus, wozu benötigst du eine install.php? wozu gibt es PHPMyAdmin. Außerdem ist eine "Installation" schnell geschrieben. Du brauchst doch einfach nur eine Verbindung aufbauen und dann des Query durchführen — Nichts anderes, was PHPMyAdmin auch machen würde.
Bitte was? Wie soll man denn einem Laien ansonsten klar machen, wie der Code in die Tabelle kommt? Nicht jeder hat direkt die uneingeschränkte Ahnung von PHP. Daher finde ich das Anlegen der Tabellen und das Ausfüllen der Tabelle über eine "install.php" schon nicht schlecht.
Jetzt mal zu deinem Kommentar generell. Ich zitiere Dich mal eben: "vielleicht setz ich auch mal ein Tutorial auf, dann aber auf PHP-Basis." Was ist denn das hier angebotene Script für eine Basis? Etwa JavaScript? HTML5? JSP?
Übrigens, die geschweiften Klammern hinter den Code oder vor anderen Code zu setzen macht zwar ein schmales Dokument, versaut einem Einsteiger aber den Einblick und das Verständnis. Außerdem vergisst man so als Anfänger mal ganz schnell ne Klammer zu schließen. Und wenn Du Dich wirklich mit PHP auskennst, kennst Du auch die Fehlermeldungen von PHP, die nicht immer das aussagen, was wirklich falsch ist. Also sucht man wie ein Bekloppter.
Alles in allem muss ich Dir sagen, dass dein Geschreibe Dich als Anfänger und Wichtigtuer enttarnt. 7 Jahre PHP? Rausgeworfene Zeit für jemanden, der sich als Spezialist fühlt, aber höchstens ein kleiner Fisch im Teich ist.
Hey, das Tutorial an sich ist klasse. Das ist genau so etwas was ich suche… Allerdings habe ich jetzt ein Problem. Obwohl ich den Script runtergeladen habe und auf meinen Server gespielt habe und wirklich Foren und Kategorien wie du als Beispiel gemacht hast angelegt habe, werden zwar die Kategorien angezeigt aber nicht die Foren?
Kannst du mir da weiter helfen?
Hi Juarez, sorry, dass ich mich so spät melde!
Hast du beim Erstellen der Kategorie und Foren auch immer darauf geachtet, dass "type" auf 0 für eine Kategorie bzw. 1 für ein Forum, sowie — falls nötig — die "main_categorie" mit der ID des Eintrags für die jeweilige ID, angegeben ist?
Grüße
Klener
Hallo ich finde das Forum echt gut aber warum geht das nicht das ich mehrere Kategorien hab die erste ist ja wunderbar aber wenn ich ne zweite erstelle haut er die immer in die erste ob wohl ich die Positionen angegeben hab!
Was mache ich falsch?
Kommentieren