Funktionsweise der Features dieses Forums
André Laugks
- programmiertechnik
Hallo!
Man, ist das schon wieder spät. Dafür schlafe ich aber morgen länger. :-)
Die Frage geht wohl ehr an die Leute, die sich mit diesem Forum auskennen.
Ich habe versucht dieses Forum nachzubauen, mit PHP. Zu meiner Freude kann ich sagen, es hat geklappt, ich bin richtig stolz auf mich. Die "Aststrukturen" bauen sich schön auf, keine Fehler, nichts. Jedes Posting findet seinen richtigen Platz. Schön :-) !!!
Ich würde es Euch gern zeigen, aber es liegt lokal. :-)
Problem, mir fehlen noch ein paar Features. Zum Beispiel der Schwanzabschneider, Suchfunktion und das die Threads unter einem Postings angezeigt werden, also wenn ich ein Posting lese, kann ich ja den Ast verfolgen, der ja unter dem Posting steht.
Über den Schwanzabschneider denke ich ein anderes mal nach.
Mich würde interessieren, wie die Suchfunktion funktioniert und das der Threadast unter einem Posting angezeigt wird. Also nur vom Prinzip. Ich komme nicht drauf, wie ich das anstellen könnte.
Vielen Dank, und mfg André
Hallo André,
das Forum ist wohl in Perl geschrieben, da könnte ich Dir gerne helfen! Aber mit PHP kenne ich mich leider nicht aus.
Reiner
Hallo!
Man, ist das schon wieder spät. Dafür schlafe ich aber morgen länger. :-)
Die Frage geht wohl ehr an die Leute, die sich mit diesem Forum auskennen.
Ich habe versucht dieses Forum nachzubauen, mit PHP. Zu meiner Freude kann ich sagen, es hat geklappt, ich bin richtig stolz auf mich. Die "Aststrukturen" bauen sich schön auf, keine Fehler, nichts. Jedes Posting findet seinen richtigen Platz. Schön :-) !!!
Ich würde es Euch gern zeigen, aber es liegt lokal. :-)Problem, mir fehlen noch ein paar Features. Zum Beispiel der Schwanzabschneider, Suchfunktion und das die Threads unter einem Postings angezeigt werden, also wenn ich ein Posting lese, kann ich ja den Ast verfolgen, der ja unter dem Posting steht.
Über den Schwanzabschneider denke ich ein anderes mal nach.
Mich würde interessieren, wie die Suchfunktion funktioniert und das der Threadast unter einem Posting angezeigt wird. Also nur vom Prinzip. Ich komme nicht drauf, wie ich das anstellen könnte.
Vielen Dank, und mfg André
HAllo!
das Forum ist wohl in Perl geschrieben, da könnte ich Dir gerne helfen! Aber mit PHP kenne ich mich leider nicht aus.
Wie würdest Du es machen? Wie würdest Du die Archivsuche aufziehen? Was würdest Du von Anfang an vorsehen, um eine Suche zu bewerkstelligen?
Das ganze ohne Perlsytax, also nur vom Prinzip her.
Wie ich die Threads in einem Posting anzeige, bin ich jetzt drauf gekommen. Irgendwie hatte ich einen Geistesblitz.
mfg, André Laugks
Hallo André,
zu der Sache mit den Threads. Schau dir mal die Forumshauptdatei an, was faellt auf? Richtig. es sind anker gesetzt. Am besten du uebergibst mit deinem Posting die Msg. Nr. auf die es sich beziehst, oeffnest dann die Hauptdatei, suchst nach dem Trennzeichen zu der Datei die du ja mit dem geschriebenen Posting uebergeben hast, und haengst dann dahinter den link des neuen Postings an. natuerlich auch wieder mit markern.
MfG Olli
Hallo Oliver!
zu der Sache mit den Threads. Schau dir mal die Forumshauptdatei an, was faellt auf? Richtig. es sind anker gesetzt. Am besten du uebergibst mit deinem Posting die Msg. Nr. auf die es sich beziehst, oeffnest dann die Hauptdatei, suchst nach dem Trennzeichen zu der Datei die du ja mit dem geschriebenen Posting uebergeben hast, und haengst dann dahinter den link des neuen Postings an. natuerlich auch wieder mit markern.
So sieht ein Teil meiner Hauptdatei aus.
---------------------------------><8-------------------------------------
<!--ende27--></ul>
<!--anfang19--><ul><a href="19.html">
<!--anfang20--><ul><a href="20.html"></a>
<!--anfang22--><ul><a href="22.html"></a>
<!--ende22--></ul>
<!--anfang21--><ul><a href="21.html"></a>
<!--anfang23--><ul><a href="23.html"></a>
<!--anfang25--><ul><a href="25.html"></a>
<!--anfang28--><ul><a href="28.html"></a>
<!--ende28--></ul>
<!--ende25--></ul>
<!--ende23--></ul>
<!--ende21--></ul>
<!--ende20--></ul>
------------------------------------8><----------------------------------
Mir ist dann nach dem Absenden des Postings eingefallen, wie ioch es machen könnte.
z.B.
1Blabla
2 Blabla
3 Blabla
4 Blabla
Im Posting 2 und 3 schleppe ich die 1 mit. Wenn ich jetzt den Threadast darstellen möchte, lese ich die Hauptdatei einfach aus, von 1 bis 4, nach dem ich die Zeile Nr.4 eingefügt habe, kopiere das und setze es einfach unter das Posting. Dann erst erstelle ich die Datei mit der Message.
mfg, André Laugks
Rehi!
z.B.
1Blabla
2 Blabla
3 Blabla
4 BlablaIm Posting 2 und 3 schleppe ich die 1 mit. Wenn ich jetzt den Threadast darstellen möchte, lese ich die Hauptdatei einfach aus, von 1 bis 4, nach dem ich die Zeile Nr.4 eingefügt habe, kopiere das und setze es einfach unter das Posting. Dann erst erstelle ich die Datei mit der Message.
Wenn ich das jetzt drüber nachdenke, ist mir doch einiges nicht so klar. Wie kann ich den beim Posting 1 wissen, wie sich der Thread entwickelt. Wenn man sich meine erste Frage anschaut http://www.teamone.de/selfaktuell/forum/messages/61477.html sieht man unter dem Posting die ganzen "Äste". Wieso, wie kommen die dahin. Werden die beim Aufruf des Postings noch nachträglich eingefügt?
mfg, André
Hi andre,
ich "skitziere dir mal wie ich das meine. Dazu ein kleines Szenario ;-)
Eine Person postet einen neun Beitrag. In der Forumshauptdatei wird oben ein neuer thread inizialisiert.
<!--anfang1-->
<a href="1.htm">posting 1</a>
<!--ende1-->
so, nun kommt eine weitere Person und will auf Posting 1 antworten. Also durchsuchst du die hauptdatei nach anfang1, suchst dann das naechste </a> und fuegst dort folgendes ein:
<!--anfang2-->
<img src="trenner.gif><a href="2.htm">posting 2</a>
<!--ende2-->
so das dann da steht:
<!--anfang1-->
<img src="trenner.gif><a href="1.htm">posting 1</a>
<!--anfang2-->
<img src="trenner.gif><a href="2.htm">posting 2</a>
<!--ende2-->
<!--ende1-->
so, nun kommt die naechste person, und antwortet wieder auf posting eins. nun suchst du wieder anch anfang1, dann wieder nach dem naechsten </a> gehst ne zeile nach unten und fuegst dann folgendes ein:
<!--anfang3-->
<img src="trenner.gif><a href="3.htm">posting 3</a>
<!--ende3-->
so das dann da steht:
<!--anfang1-->
<a href="1.htm">posting 1</a>
<!--anfang3-->
<img src="trenner.gif><a href="3.htm">posting 3</a>
<!--ende3-->
<!--anfang2-->
<img src="trenner.gif><a href="2.htm">posting 2</a>
<!--ende2-->
<!--ende1-->
So, nun antwortet eine person auf die nachricht 3. also suchst du nach anfang3, dann das naechste </a>. wieder in die naechst zeile und fuegst ein
<!--anfang4-->
<img src="trenner.gif><img src="trenner.gif><a href="4.htm">posting 3</a>
<!--ende4-->
ein. So das dann da steht:
<!--anfang1-->
<a href="1.htm">posting 1</a>
<!--anfang3-->
<img src="trenner.gif><a href="3.htm">posting 3</a>
<!--anfang4-->
<img src="trenner.gif><img src="trenner.gif><a href="4.htm">posting 3</a>
<!--ende4-->
<!--ende3-->
<!--anfang2-->
<img src="trenner.gif><a href="2.htm">posting 2</a>
<!--ende2-->
<!--ende1-->
Prinzip verstanden? ok. nun musst du natuerlich noch rausfinden, wieviele img's du als trennzeichen zur einrueckung setzen musst. Ich wuerde forschlagen, bei posting 1 ein weiters unsichtbares input feld in dem antwort feld zu machen, wo du eine "2" reinschreibst. schikcst du das dann ab, ueberprueft das script was die hauptdatei schreibt die variable, und fuegt so viele img tags ein, wie gross die var ist. anschliessend inkrementierst (erhoehst um 1) du die variable und packst sie vieder ins antwort feld in nen hidden input feld.
Ich hoffe ich hab jetzt keine denkfehler drinne ;-)
MfG Olli
, wo du eine "2" reinschreibst.
kleiner fehler ;-) du must beim ausgangsposting eine 1 reinschreiben
MfG Olli
Aso, nochwas ;-.)))
um die neu hinzugekommenden antworten auch in den hirqarchisch unter den antworten stehenden postings "einzutragen", solltest du die "reinfolge" vom threadausgangsposting bis zur antwort immer mitschleppen, also die nummern. soll heisen, du must in jedem antwortformular die nr. angeben, auf welches du antwortest, udn auf welches das wiederrum geantwortet hat, udn auf welches das wieder.... immer os weiter. halt vom ursprungsposting aus. die einzlenen nr. kannst du ja mit nem komma trenenn und dann wieder ausplitten. nun hast du alel messg nr. wo du den darin enthaltenen thread aendern musst. und d as machst du am besten so wie in der hautpdatei...
MfG Olli
Hi Olli
um die neu hinzugekommenden antworten auch in den hirqarchisch unter den antworten stehenden postings "einzutragen", solltest du die "reinfolge" vom threadausgangsposting bis zur antwort immer mitschleppen, also die nummern. soll heisen, du must in jedem antwortformular die nr. angeben, auf welches du antwortest, udn auf welches das wiederrum geantwortet hat, udn auf welches das wieder.... immer os weiter. halt vom ursprungsposting aus. die einzlenen nr. kannst du ja mit nem komma trenenn und dann wieder ausplitten. nun hast du alel messg nr. wo du den darin enthaltenen thread aendern musst. und d as machst du am besten so wie in der hautpdatei...
Ja, so macht es dieses Forum ja auch. Ich moechte nur darauf hinweisen, dass dies ein Security hole ist, denn jemand kann sich ja ein Formular zusammenbauen, in dem Nummern genannt werden, die gar nichts miteinander zu tun haben. Sieht dann halt doof aus, wenn in einem voellig anderen Posting ein Link in einen Thread steht.
So lange, Roland
Hi Roland,
ich pers. wuerde das forum auch mit DB unterstuetzung bauen, ganz einfach um nicht zig tauend dateien andauernd veraendern zu muessen. und man koennte ja auch den http_refferer auswerten.... von wo er denn das psoting abgeschickt hat, und ob das auf das ding ist wo die aw hinkommt...
MfG Olli
Hallo Oliver!
Das einfühgen der Zeieln ist kein Problem. Ich mache das so:
<!--anfang1--><ul><a href="1.html"></a>
<!--ende1--></ul>
Wir nehmen an, es möchte jemand auf Posting 1 anrufen.
Ich lese per file() die komplete Hauptdatei in ein Array ein. Dann suche ich in dem Array nach <!--anfang1-->. Habe ich es gefunden, füge ich an <!--anfang1--><a href="1.html"></a>, \n<!--anfang2--><ul><a href="2.html"></a>\n<!--ende2--></ul> an
<!--anfang1--><ul><a href="1.html"></a>
<!--anfang2--><ul><a href="2.html"></a>
<!--ende2--></ul>
<!--ende1--></ul>
Das ganze(Hauptdatei) schreibe ich in ein neues Array, welches ich dann wieder in die Datei schreibe.
Kommt ein neues Posting, lese ich die Datei wieder aus, füge zuerst das neue Zeile ein und dann wird alles wieder in die Hauptdatei geschrieben.
Mein Problem war nun, wie stelle ich den Thread unter ein Posting dar, also die Aststruktur. Michael hat ja in seinem Posting, und zwar im letzten Absatz geschrieben, wie es gemacht wird. Mal schauen wie ich das mache... Aber das werde ich auch noch schaffen.
mfg, André Laugks
Mein Problem war nun, wie stelle ich den Thread unter ein Posting dar, also die Aststruktur. Michael hat ja in seinem Posting, und zwar im letzten Absatz geschrieben, wie es gemacht wird. Mal schauen wie ich das mache... Aber das werde ich auch noch schaffen.
Wenn ich Dich richtig verstehe, dann willst Du dieselbe Link-Liste in allen Postings eines Threads sehen.
Das schreit natürlich nach "reuse".
In Deinem Falle wäre das: Lagere die Link-Liste eines jeden Threads in eine separate Datei aus (24360_links.html) und binde sie via SSI in jedes Posting des Threads ein.
Das reduziert die Arbeit für das Ändern von Dateien erheblich.
Über den Schwanzabschneider denke ich ein anderes mal nach.
Der läßt sich allerdings nicht von der Suchfunktion trennen.
Mich würde interessieren, wie die Suchfunktion funktioniert
Die Suchfunktion ist eine Phrasensuche. Sie findet also
beliebige Textstellen auch über Wort- oder Satzgrenzen
hinweg, macht dafür aber keinen Gebrauch von binären
Suchbäumen etc. Deshalb ist die Suchdauer direkt propor-
tional zur Menge der zu durchsuchenden Daten.
(Rate mal, wieso "NI" eingeführt wurde ... ;-)
Durchsucht werden nicht die HTML-Dateien mit den Postings,
sondern eine auf die Bedürfnisse der Suche optimierte
sequentielle ASCII-"Indexdatei".
Der Schwanzabschneider hat nicht nur die Aufgabe, Beiträge
aus dem Forum-"Cache" in das Archiv zu übertragen, sondern
er erzeugt dabei auch gleich die passenden Indexeinträge.
(Sofern der Beitrag nicht mit "NI" markiert ist.)
Jeder Indexeintrag (eine Zeile) enthält:
Das Such-Skript wertet seine CGI-Parameter aus,
baut sich seine Suchtermliste zusammen, liest die
komplette Indexdatei (> 40 MB) sequentiell durch und
"sucht", d. h. vergleicht die zu durchsuchenden Felder
mit den Werten der Suchterme, inklusive Regulärer
Ausdrücke, Case-Sensitivität und was auch noch alles.
(Das zu beschreiben ist eine längere Geschichte.)
Die Treffer werden in einem array gespeichert; am Ende
kann für die Ausgabe Trefferzahl und Ausgaberichtung
variabel gehandhabt werden.
Es existiert ein *sehr* viel ausführlicherer Artikel
über die Funktionsweise des Such-Skripts. Bisher ist
er noch nicht allgemein zugänglich, aber falls Stefan
nichts dagegen hat ...
Technisches Detail: Das Suchskript selbst gibt sein
Eingabeformular aus. Die Suchmaschine besteht aus genau
einem einzigen Perl-Skript, keine zusätzlichen HTML-
Dokumente oder was auch immer.
und das der Threadast unter einem Posting angezeigt wird.
Alle Dateien des Forums, die Du liest, sind statisch.
Das bedeutet, daß der "Poster" alles, was Du als features
eingebaut haben willst, während des Einfügen eines neuen
Beitrags tun muß. Er muß also alle Dateien des gesamten
Threads ändern, nicht nur den neuen Beitrag erzeugen und
die Hauptdatei anpassen. Die Vorgehensweise ist dabei
immer dieselbe, und die Verweis-Struktur enthält immer
dieselben Meta-Informationen als HTML-Kommentare.
Welche Dateien er ändern muß, das erkennst Du durch die
Thread-Struktur in der Hauptdatei, wo ja der gesamte
Thread zusammenhängend beschrieben ist.