Problem mit Perl lösen!
Maike
- perl
Hallo,
Ich setzte ein Perlscript für das Forum auf meiner Seite ein, das ich aber schon sehr stark nach meinen Wünschen geändert habe.
Ein großes Problem habe ich leider nich, dass ich bisher trotz vielem Kopfzerbrechen nicht lösen konnte.
Wenn ich mir einen Forumsbeitrag anschaue werden darunter die Links zu den Antworten angezeigt.
In einem bestimmten Fall sind das aber zuviele die angezeigt werden.
Ich habe mal einen solchen Fehlerfall konstruiert:
link antwort 00010001
link antwort 000100010001
link antwort 000100010002
link antwort 0001000100020001
link antwort 00010002
link antwort 000100020001
link antwort 0001000200010001
link antwort 000100020002
Wenn ich jetzt auf den Link 000100010002 klicke, sollte als Antwort darauf eigentlich nur 0001000100020001 angezeigt werden. Tut es aber nicht. Es wird außerdem auch noch Antwort 0001000200010001 dazu mit angezeigt. Ein sehr ärgerlicher Bug wie ich finde.
Habt Ihr eine Idee wie man dieses Problem lösen könnte? Ich hoffe ich habe es verständlich erklärt.
mfg Marcel
Moin!
link antwort 00010001
link antwort 000100010001
link antwort 000100010002
link antwort 0001000100020001
link antwort 00010002
link antwort 000100020001
link antwort 0001000200010001
link antwort 000100020002
Oh Gott! Was machst Du denn?
In einem Forum speichert man am einfachsten:
Die ID der Nachricht und, wenn es eine Antwort ist, die ID der beantworteten Nachricht, sonst NULL. Die Ausgabe kann man ja nach Datum/Uhrzeit sortieren. Dazu den sonstigen Krempel (Titel, Text, Autor...)
Natürlich ist es eine gute Idee, eine Datenbank zu verwenden.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Moin fastix®,
Oh Gott! Was machst Du denn?
In einem Forum speichert man am einfachsten:
Die ID der Nachricht und, wenn es eine Antwort ist, die ID der beantworteten Nachricht, sonst NULL. Die Ausgabe kann man ja nach Datum/Uhrzeit sortieren. Dazu den sonstigen Krempel (Titel, Text, Autor...)
Natürlich ist es eine gute Idee, eine Datenbank zu verwenden.
Tja, leider gibt es das Forum nun schon einige Zeit, und alle Beiträge wurden nach diesem Schema gespeichert. ich hab mir dieses Schema nicht ausgedacht.
Jetzt muss ich eben hierfür eine Lösung finden.
Hast du eine Idee?
mfg Maike
Moin!
Jetzt muss ich eben hierfür eine Lösung finden.
Hast du eine Idee?
Ja. Wenn ich will, daß mir jemand hilft, dann muß ich ihm vertrauen und den Quelltext zur Verfügung stellen. (Wenns viel ist als Download).
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
hiho,
Ja. Wenn ich will, daß mir jemand hilft, dann muß ich ihm vertrauen und den Quelltext zur Verfügung stellen. (Wenns viel ist als Download).
Hier kannst du die den kompletten Quelltext ansehen:
http://www.treffpage.de/forum.pl
Hier der Ausschnitt, der die Antwortlinks zum Beitrag erzeugt:
print "<p style="margin-top: 0px; margin-bottom: 5px;"><b>Antworten zu diesem Diskussionsbeitrag:</b></p>";
$zaehler=0;
$aktuelletiefe=length($aktuellenummer);
for ($z=0;$z<=$laenge;$z+=1)
{
if (length($zwischendaten[$z]) > $aktuelletiefe and substr($zwischendaten[$z],0,$aktuelletiefe) eq $aktuellenummer)
{
$zaehler=$zaehler+1;
}
}
if ($zaehler == 0)
{
print "Noch keine Antworten vorhanden.";
}
else
{
for ($z=0;$z<=$laenge;$z+=1)
{
$zlaenge=length($zwischendaten[$z]);
$zwischennummmer=$zwischendaten[$z];
if ($zlaenge > $aktuelletiefe)
{
print "<table border=0><tr align='left'>";
for ($z2=1;$z2<=($zlaenge/4-2);$z2+=1)
{
print "<td width=30> </td>";
}
open(IN,"forum/daten/$zwischendaten[$z].txt");
$titel=<IN>;
chomp($titel);
$nick=<IN>;
chomp($nick);
$email=<IN>;
chomp($email);
$oeffentlich=<IN>;
chomp($oeffentlich);
$benachrichtigung=<IN>;
chomp($benachrichtigung);
$url=<IN>;
chomp($url);
$tag=<IN>;
chomp($tag);
$monat=<IN>;
chomp($monat);
$jahr=<IN>;
chomp($jahr);
$sekunde=<IN>;
chomp($sekunde);
$minute=<IN>;
chomp($minute);
$stunde=<IN>;
chomp($stunde);
close(IN);
print "<td align='left'>";
print "<a href="$skriptpfad?action=ansehen&nummer=$zwischendaten[$z]" style="padding-left: 14px; background-image:url(/images/forum/antwort.gif); background-repeat:no-repeat; background-position: top left; ">$titel</a> von <b>$nick</b>, $tag.$monat.$jahr, $stunde:$minute";
print "</td></tr></table>";
}
}
}
print "</div></div>";
}
Moin!
Mann - Oh Mann!
Das ist eines der Beispiele, warum diese EierlegendeWollMilchSäueKraulendenAffenSkripte schlicht Unsinn sind- nicht mehr zu pflegen.
Wenn ich mal Zeit habe, setze ich wieder ran, aber heute werd ich das nicht durchgearbeitet bekommen. Ich muss ja, Dank fehlender Kommentare auch noch durch die Logik des Skriptes selber durchsteigen.
Ich weiss bis jetzt nur eines _ich_ hätte das nie so gemacht.
[ ] Du willst darüber nachdenken, das Forum in sinnvoller Form in eine Datenbank zu importieren?
Spätestens bei 10000 Beiträgen geht's nämlich eh schief.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®