.| Autor | Beitrag |
|---|---|
|
000 06.05.2007, 02:05 kingduevel |
Hallo erstmal. Ich überlege derzeit, ob ich für meine Homepage ein einfaches Kommentarsystem mit PHP und mySQL programmiere. Die Struktur meiner tabelle "news" ist derzeit:
Eine andere Möglichkeit um die eigentlichen News von den - eventuell vielen - Kommentaren zu trennen (empfinde ich als übersichtlicher) wäre, dass ich eine neue Tabelle "news_comments" erstelle mit ähnlichen Feldern wie oben. Diese Tabelle frage ich halt dann immer pro News ab und gut ist. Wie handhabt ihr euer Kommentarsystem? Welche Vor- oder Nachteile bieten die beiden Systeme oder habe ich andere Möglichkeiten komplett vergessen? Wäre froh Feedback zu bekommen, auch wenn es nur eins wie "ich nutze erste Option" ist. -- |
|
Profil || Suche |
|
001 06.05.2007, 04:36 dp Administrator |
http://de.wikipedia.org/wiki/Normalisierung_%28Datenbank%29 -- |
|
Profil || Suche |
|
002 06.05.2007, 08:48 Megge |
Wenn du Kommentare auf der Seite für mehr als nur News brauchst, kannst du z.B. das hier anlegen: Quellcode:id unter type speicherst du dann z.B. "news","image_gallery" oder ähnliches.unter parent_id speicherst du die eindeutige id der news/image_gallery_eintrag etc -- |
|
Profil || Suche |
|
003 07.05.2007, 11:17 kingduevel |
Daran, dass man ja auch andere Sachen kommentieren könnte, hätte ich erstmal nicht gedacht. Vielen Dank dafür und werde es genau so machen, Megge. Jetzt aber grade nochmal ne andere Frage: Der Wert für die Anzahl der Kommentare zu einer News, würdet ihr den immer ermitteln lassen, indem die entsprechenden Einträge in der Kommentartabelle gezählt werden? Oder würdet ihr in der Newstabelle ein neues Feld "kommentare" mit standardmäßig "0" anlegen und diese, wenn ein Kommentar getätigt wird, hochzählen? Letztere Methode scheint mir serverseitig schneller auszugeben sein, erstere ist aber irgendwie auch sehr bequem... -- |
|
Profil || Suche |
|
004 07.05.2007, 11:30 hausi |
Die erste Methode ist die DB-technisch korrekte. Am besten schaust du dir noch kurz SQL JOINs an, dann kannst du die Zählung der Kommentare in einem Statement machen. Kurzum: Nur, falls sehr viele Abfragen nötig sind, solltest du die zweite Lösung überhaupt in betracht ziehen. Im zweifelsfalle ist aber nicht diese Abfrage der Punkt, der die Leistung der DB in die Knie und dich somit zum HW-update zwingt... -- |
|
Profil || Suche |
|
005 07.05.2007, 17:09 Megge |
Das ThWBoard benutzt z.B. die zweite Variante, um auf der Boardindex Seite die Anzahl Posts und Threads pro Board anzuzeigen. Würde es jeweils voll durchzählen, so würde das bei 600'000 Posts 55'000 Threads eine Ewigkeit dauern.. aber bei kleinen Scripten ist die erste Variante absolut der Favorit -- |
|
Profil || Suche |
|
006 07.05.2007, 18:14 kingduevel |
Hab zwar irgendwie nicht alles verstanden, was du da geschrieben hast, hausi. Aber ich denke ich sollte die Kommentaranzahl schon direkt in der DB ablegen. Und damit es keine Probleme in der Anzahl gibt, mache ich das jetzt wohl so, dass der bei jedem Absenden oder Löschen eines Kommentares die Tabelle auf passende Kommentare zum grade ausgewählten Newsbeitrag durchsucht und so den aktuellen Wert erkennt. Damit habe ich quasi eine ständige Kontrolle und es kann nichts durch das stupide Hochzählen schief gehen... Vielen Dank für die Antworten. -- |
|
Profil || Suche |
|
007 07.05.2007, 21:41 n0Brain |
Also wenn ich das jetzt richtig verstanden habe, willst du einfach die Anzahl der Kommentare zu irgendeinem Foo (zB News) wissen? http://www.w3schools.com/sql/func_count_ast.asp einfach where hinten drann und du hast deinen Zähler -- |
|
Profil || Suche |
|
008 09.05.2007, 19:38 kingduevel |
Ja, genau das möchte ich, nobrain. Mein bisheriger Code will aber net so richtig und der kann das nicht richtig zählen oder speichern:
|
|
Profil || Suche |
|
009 09.05.2007, 20:03 scus |
mysql_query gibt dir ein Result zurück, das musst du erst noch weiter bearbeiten, bevor du die Zahl speichern kannst... --sincères amitiés scus |
|
Profil || Suche |
|
010 09.05.2007, 20:17 n0Brain |
Ich hab in meinem Leben noch kein Kommentarsystem benutzt... Aber dein Aufbau sieht mir nicht falsch aus. btw schon mit Google probiert? Ansonsten, je mehr Infos du postest, desto leichter kann man dir helfen. Wie geht denn der Code weiter? -- |
|
Profil || Suche |
|
011 09.05.2007, 20:31 kingduevel |
Klar surfe ich in Google rum. Aber es will einfach net. Wie scus das sagt, muss ich noch irgendwie das Result umwandeln. Darum weiß ich ja leider net, wie es weiter geht. Ich kenn das jetzt nur mit ner while-Schleife, aber ich dachte durch den Count hab ich nur ein Ergebnis und zwar eine Zahl... wie bringe ich datt nun dazu, die Tabelle nach bestimmten Einträgen zu durchsuchen, diese zu zählen und den Wert in eine andere Tabelle zu speichern? Ich raff das mal grad gar net... Arbeitsblindheit oder so :| :
|
|
Profil || Suche |
|
012 09.05.2007, 20:38 n0Brain |
Meine PHP-Kenntnisse sind sehr eingerostet, aber probiers mal mit Von der Seite hab ich mir früher sehr viel abgeschaut. -- |
|
Profil || Suche |
|
013 09.05.2007, 21:02 kingduevel |
Ich raff dieses olle COUNT irgendwie net. Hab es jetzt so umgesetzt:
|
|
Profil || Suche |
|
014 09.05.2007, 21:50 hausi |
Dieser Beitrag wurde am 09.05.2007 um 21:52 von hausi bearbeitet. |
|
Profil || Suche |
|
015 10.05.2007, 11:19 oxff |
Normalisieren kann man so standard Kommentarsysteme, für die es eigentlich nichtmals eine Datenbank bräuchte, meistens ohnehin ohne Geschwindigkeitsprobleme -- Problematisch wird es erst bei richtigen Datenmengen, wo man locker mal 1M rows pro Woche hat. Ursprünglich hatte ich mich da auch für ein normalisiertes Design entschieden, dass performed jetzt aber nichtmehr. Kurzum: Denk nichtmals über Performance-Optimierung nach, solange du einen Datenheap wie MySQL nutzt. Mach dir dann lieber ein ordentliches Design. --mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik |
|
Profil || Suche |
|
016 10.05.2007, 17:11 n0Brain |
no.plan, schau dir einfach SQL bisschen mehr an, es lohnt sich. V. a. kannst du durch SQL viele Zeilen PHP-Code sparen. Die Performance wirst du nicht spüren, da es bei ein paar Einträgen in der DB keine Unterschiede macht, ob du 2 Kommentare, oder 200 hast. Schau lieber, dass deine Scripts sauber gestaltet sind, der Rest kommt dann von allein :) -- |
|
Profil || Suche |
|
017 11.05.2007, 16:38 scus |
Ich weiss nicht, obs noch erwünscht ist, aber no.plan hatte mich per PN nach ner Lösung gefragt: sincères amitiés scus Dieser Beitrag wurde am 11.05.2007 um 16:39 von scus bearbeitet. |
|
Profil || Suche |

