• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Wir haben den Frühjahrsputz beendet, Ihr auch? Welches Foto zu dem Thema hat Euch dann am Besten gefallen? Hier geht es lang zur Abstimmung --> Klick

Ziel ist eigene Web-Community ... Weg?

Delicioso

Bismarckapfel
Registriert
20.10.08
Beiträge
143
noch ne frage *schmunzel* ... sind smileys urheberrechtlich geschützt ... muss ick die dinger selber malen ?
 

Salzi

Prinzenapfel
Registriert
29.08.06
Beiträge
555
Da du dich ja recht resistent dagegen wehrst, etwas "Fertiges" einzusetzen, solltest du vielleicht dein Vorhaben etwas gliedern und nach Prioritäten ordnen. Ob die Smilies jetzt dann schon wirklich ein Thema sind wage ich jetzt einmal zu bezweifeln ;)

Viel Erfolg.
 

Delicioso

Bismarckapfel
Registriert
20.10.08
Beiträge
143
... korrekt!

ick bin dabei php und MySQL zu pauken ... und das erste fertige Zwischenprodukt soll ein GB werden und in dem Zusammenhang fielen mir die Smileys ein ... war nur ne Zwischenfrage *schmunzel* ... muss ja och ma Pause machen :) Bis jetzt find ick ditt aber noch alles recht fluffig ... zumindest war noch nix schwierig ...

Also wir werden sehen was bei rum kommt ;)
 

Schniko

Reinette Coulon
Registriert
01.08.08
Beiträge
954
Achte darauf, dass du eine eigene Funktion hat, die generell den Text aus einem Feld der DB in Anzeigetet umwandeln kann. Der muss also die Formatierungen wie [ B] [ /B] in HTML umwandeln können. Der kann dann auch gleichzeitig Doppelpunkte und Klammern durch Bilder ersetzen. Wichtig ist meines Erachtens nur, dass dieser Teil irgendwo zentral liegt, damit du den nur einmal ändern musst, wenn Änderungen anstehen. Die Funktion kannst du dann beim Beiträge anzeigen, im GB und in der Vorschau von Anträgen benutzen.

Achte generell darauf, dass du so viel wie möglich auslagerst! Nur so ist gewährleistet, dass Seite, die die gleiche Sache tun sollen auch immer auf denselben Code zurückgreifen.
 

Delicioso

Bismarckapfel
Registriert
20.10.08
Beiträge
143
Schniko ... danke auf jede Fall für den Tipp, wenn ich zu gegebener Zeit dazu noch eine Frage habe werde ich mich an Dich wenden :)
 

Maluku

Finkenwerder Herbstprinz
Registriert
10.05.08
Beiträge
464
Also ich würde weniger den PHP weg gehen (Aus persönlichen Vorlieben) und eher ein anständiges Framework benutzen, wie Ruby on Rails, Django oder ähnliches. Die haben sehr gute Tutorials und sind im Allgemeinen sehr viel sauberer als PHP. Du kannst die Sachen in Komponenten zerlegen, einzeln testen, brauchst dich nicht darum zu kümmern welche Datenbank du benutzt, Templates sind schon mit eingebaut und sehr mächtig (besonders mag ich da Django). Mit diesen Frameworks kann man sehr schnell Webseiten bauen und die Struktur erzwingt saubere Programmierung, sonst kommst du in 3 Jahren nicht mehr hinter deinen eigenen Code.

Ich selber programmiere in Perl ganz gerne, aber ich hab mir schon zwei, drei eigene Frameworks geschrieben, was sehr sehr viel Arbeit ist (aber auch Spass). Und für ein Forum hab ich beim letzten mal 3 Tage gebraucht (allerdings ist das kein phpBB, sondern nur sehr klein: http://plasma.maluku.de:8081/plasma-bin/forum/forum.pl ). Aber wenn du gar nicht programmieren kannst ist ein Gästebuch mal ein guter Einstieg.

Hier mal meine Forum-Tabellenstruktur (nur zum Spass)
Code:
--
-- Für PM-s
--

CREATE TABLE `forum_pn` (
  `pn_id` int(11) NOT NULL AUTO_INCREMENT, -- Primäre Nummer der PN zur identifizierung
  `creation` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, --Wann gesendet
  `user_id` int(11) NOT NULL, --An Wen (aus der Benutzer-Tabelle)
  `from_user_id` int(11) NOT NULL, -- Vom wem (aus der Benutzer-Tabelle)
  `title_id` int(11) NOT NULL, -- PM-Titel nummer (aus forum_title)
  `text_id` int(11) NOT NULL, -- PM-Text nummer (aus forum_text)
  `is_html` tinyint(1) NOT NULL DEFAULT '0', -- HTML wird angezeigt bei der ausgabe
  `is_bbcode` tinyint(1) NOT NULL DEFAULT '0', -- BBCode wird übersetzt bei der ausgabe
  `is_linebreak` tinyint(1) NOT NULL DEFAULT '0', -- Zeilenumbrüche werden angezeigt bei der ausgabe
  `read` tinyint(1) NOT NULL DEFAULT '0', -- Der Empfänger hat die PM gelesen
  `deleted` tinyint(1) NOT NULL DEFAULT '0', -- Der Empfänger hat die PM gelöscht
  `removed` tinyint(1) NOT NULL DEFAULT '0', -- Der Sender hat die PM aus dem Postausgang entfernt.
  PRIMARY KEY (`pn_id`), 
  KEY `user_id` (`user_id`),
  KEY `from_user_id` (`from_user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Hält alle Posts und Edits. Ein Post kann editiert werden und alle versionen eines Posts (mit der selben Post_ID) ist hier drin gespeichert
--

CREATE TABLE `forum_post` (
  `post_id` int(11) NOT NULL, -- Aus forum_thread
  `text_id` int(11) NOT NULL, -- aus forum_text
  `title_id` int(11) NOT NULL, -- aus forum_title
  `user_id` int(11) NOT NULL, -- Aus der Benutzer Tabelle 
  `creation` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, -- Wann reingestellt/geändert
  `is_html` tinyint(1) NOT NULL DEFAULT '0', -- HTML wird angezeigt bei der ausgabe
  `is_bbcode` tinyint(1) NOT NULL DEFAULT '1', -- BBCode wird übersetzt bei der ausgabe
  `is_linebreak` tinyint(1) NOT NULL DEFAULT '1', -- Zeilenumbrüche werden angezeigt bei der ausgabe
  `has_signature` tinyint(1) NOT NULL DEFAULT '0', -- Die Signatur des Posters wird angezeigt
  KEY `post_id` (`post_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Hält den Inhalt der Signaturen der Benutzer
--

CREATE TABLE `forum_signatures` (
  `signature_id` int(11) NOT NULL AUTO_INCREMENT, -- Aus forum_user
  `signature_text` text COLLATE utf8_unicode_ci NOT NULL, -- Inhalt der Signatur
  PRIMARY KEY (`signature_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


--
-- Speichert einen Forum-Thread mit allen Posts 
-- (Die Tabelle hält eigentlich nur Posts, aber auch informationen zu dem Thread (locked, views, u.s.w.) 
-- So spare ich eine Tabelle und kann sehr einfach Posts verschieben und hab nie leere Threads
--

CREATE TABLE `forum_thread` (
  `post_id` int(11) NOT NULL AUTO_INCREMENT, -- Nummer des Posts
  `thread_id` int(11) NOT NULL, -- Nummer des Threads (Gruppierung)
  `forum_id` int(11) NOT NULL, -- In welchen Forum ist der Thread/Posts
  `views` bigint(20) NOT NULL, -- Anzahl der Ansichten
  `sticky` tinyint(1) NOT NULL, -- Ist der Thread sticky
  `closed` tinyint(1) NOT NULL, -- Ist der Thread geschlossen
  `deleted` tinyint(1) NOT NULL, -- Ist der Post gelöscht.
  PRIMARY KEY (`post_id`),
  KEY `thread_id` (`thread_id`),
  KEY `forum_id` (`forum_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- forum_title und forum_text halten den Text/Titel für die Posts und PMs. 
-- Diese Informationen könnten auch in die forum_post Tabelle rein, aber es gibt zwei Gründe die dagegen sprechen:
-- 1. Die Länge ist dynamisch, so müsste die forum_post Tabelle auch dynamische Längen haben. Das ist langsamer in den meisten Datenbanken.
-- 2. Es spart ein bisschen Platz, wenn ein Benutzer bei einem Post nur den Titel ändert wird der unveränderte Inhalt nicht ein zweites Mal gespeichert.
--

CREATE TABLE `forum_title` (
  `title_id` int(11) NOT NULL AUTO_INCREMENT,
  `title` text COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`title_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `forum_text` (
  `text_id` int(11) NOT NULL AUTO_INCREMENT,
  `text` text COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`text_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

-- Hält Zusatzinformationen zum Benutzer, die nur in der Benutzertabelle stehen (bedingt durch die Struktur meiner Seite, das Forum ist nur ein Addon)

CREATE TABLE `forum_user` (
  `user_id` int(11) NOT NULL, -- Aus der Benutzertabelle 
  `forum_posts` int(11) NOT NULL, -- Anzahl der posts
  `forum_title` varchar(32) COLLATE utf8_unicode_ci NOT NULL, -- Extra Titel für den Benutzer
  `signature_id` int(11) NOT NULL, -- Nummer der Signatur
  `signature_attach` tinyint(1) NOT NULL DEFAULT '0', -- Wird die Signatur immer angehängt?
  `avatar` text COLLATE utf8_unicode_ci NOT NULL, -- URL zum Avatar.
  `forum_last_visited` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, -- Letzter Besuch (Damit threads als neu markiert werden können)
  `postsperpage` int(10) unsigned NOT NULL DEFAULT '0', -- Anzahl der Posts auf einer Seite 
  PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Diese Tabelle hält die Forenstruktur.
--

CREATE TABLE `forums` (
  `forum_id` int(11) NOT NULL AUTO_INCREMENT, -- Zugewiesende Nummer
  `forum_top_id` int(11) NOT NULL, -- Forum das drüber liegt (0 == Toplevel forum)
  `title_id` int(11) NOT NULL, -- Titel des Forums (wieder forum_title)
  `text_id` int(11) NOT NULL, -- Kurze beschreibung (wieder forum_text)
  `special` int(11) NOT NULL, -- Bitmaske mit erweiterten Optionen (z.Z: 1: Gruppierungsforum)
  `sort` int(11) NOT NULL DEFAULT '0', -- Sortierung
  `read_permission` varchar(64) COLLATE utf8_unicode_ci NOT NULL, -- Rechte zum lesen
  `post_permission` varchar(64) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'USER', -- Rechte zum schreiben (USER==angemeldet)
  `mod_permission` varchar(64) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Mod', -- Rechte zum moderieren (editiern/verschieben/zusammenfügen von threads, u.s.w.)
  PRIMARY KEY (`forum_id`),
  KEY `forum_top_id` (`forum_top_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;