Jammer: Riesenproblem mit einer txt Datenbank

Hi Perl-Gurus,
als erstes sorry das ich mal wieder meine ganzen Scripts hierein poste, ich möchte niemanden als Debugger abstempeln, aber ich komme einfach nicht weiter.
Eintrag.cgi erstellt eine txt Datei die ungefähr so

Nun soll ein Eintrag auf wunsch des Users entfernt aussieht:
auto01.gif!!11111111
<br>111111 
auto02.gif!!2222
<br>222
<br>
 
auto01.gif!!333333
<br>3
<br>3
<br>3
 werden (über Form), was loesch.cgi bewerkstelligen soll.
Problem:
Die Eintrag.txt hat nach dem löschen eines Eintrags nicht mehr das selbe Format wie vorher, was aber nötig ist da ich sie weiterverwenden muß (wenn neue Einträge hinzugefügt werden sollen muß sie genauso aussehen wie vorher, nur ohne den zu löschenden Eintrag).
Ich kriege aber immer nur eine Leere zeile mit   (was später bei der HTML-Seiten Generation als lehre Tabelle interpretiert wird) oder ähnlichen Mist.
Angenommen der zweite Eintrag soll entfernt werden, soll Eintrag.txt danach so aussehen:
aussieht:
auto01.gif!!11111111
<br>111111 
auto01.gif!!333333
<br>3
<br>3
<br>3
 
dann wäre alles in Ordnung und ich könnte wieder aktualiesieren und weiter löschen. Ich versuchs jetzt schon Tagelang, aber ich komm nicht auf die Lösung, hat einer von Euch genug gedult mir zu helfen?

LOESCH.CGI
#!/usr/bin/perl

Löschen von Einträgen aus der Datenbank (UnderConstruktion)

require "cgi-lib.pl";
&parse_form;

$old = "e:/Xitami/webpages/eintrag/eintrag.txt";
open (OLDFILE, $old) or die "Datei existiert nicht\n";

$Satz = "";
while (<OLDFILE>)
{
chomp($Satz);
$Satz .= $_;
}
@Ergebnis = split(/ /, $Satz);
###########
#for (@Ergebnis)
#{

$_.=" ";

#}
###########
$Laenge =$#Ergebnis;

for ($i=0; $i<$Laenge; $i++)
{
  if ($in{'loeschen'} == $i+1)
   {
    $Ergebnis[$i]=substr($Ergebnis[$i], 1, 0) = "";
    
    }
    push (@NEU, $Ergebnis[$i]);
}
close (OLDFILE);
###############
$old = ">e:/Xitami/webpages/eintrag/eintrag.txt";
open (OLDFILE, $old) or die "Datei existiert nicht\n";

Versuche die Eintrag.txt wieder so hinzukriegen, wie sie vor dem löschen

formatiert war um sie später weiterzuverwenden.

#join(@NEU,"&nbsp;\n");
#push(@NEU, "&nbsp;\n");
#$Textneu=@NEU;
print OLDFILE @NEU;
close (OLDFILE);

EINTRAG.CGI
#!/usr/bin/perl

(c) 1999 by Trion Visual Concepts GmbH

written by Dairaen (dairaen@usa.net)

Dieses Script soll die Eingabe von Daten ermöglichen,

welche dann in eine .TXT gespeichert werden.

Die Daten sind:

1. ein Image-Name, der direkt auf dieses gelinkt

werden soll

2. ein Text zu dem Produkt der neben dem Bild (im HTML) stehen soll

require "cgi-lib.pl";
require "datum.pl";

&parse_form;

$date=&ctime (time);
chop($date);

print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD>\n";
print "<TITLE>Online Eintragung</TITLE>\n";
print "<BODY bgcolor=dcdcb4>\n";
print "<h3>Eintragung in die eintrag.txt</h3>\n";
print "Sie haben folgende Eintragungen vorgenommen:<br>\n";
print "<center>\n";
print "<table width=400>\n";
print "<tr><td>\n";
print "<ul>\n";
print "<li>Name des Bildes: <b> $in{'image'} </b></li>\n";
print "<li>Beschreibung: </li>\n";
print "<b> $in{'text'} </b>\n";
print "</ul>\n";
print "<br><br>\n";
print "<b><a href=/eintrag.htm>Zurück zum Eingabeformular</b></a><p>\n";
print "<form method=get action=/aktuell.htm>\n";
print "<INPUT type=submit value=Aktualisieren>\n";
print "</form>\n";
print "</BODY>\n";
print "</HTML>\n";

$outfile3 = ">>/Xitami/webpages/eintrag/eintrag.txt";
open(OUTFILE3, $outfile3);
@Ergebnis = split(/\n/, $in{'text'}); #Eingabe wird nach jedem enter zerlegt
$Textneu=join("<br>",@Ergebnis); #zwischen jedes Element einen break setzten
print OUTFILE3 "$in{'image'}!!$Textneu&nbsp;\n";
#print OUTFILE3 "$in{'image'}!!$in{'text'}\n";
close(OUTFILE3);

nach den Scripts soll dann die txt (sofern sie aussieht wie früher) benutzt werden um HTMLSeiten zu erstellen (das hab ich schon).
Nur das die eintrag.txt vor und nach dem Löschen das selbe format hat fehlt mir...
vielen vielen Dank im voraus (und bitte nicht sauer sein wegen der kompletten Scripts, ich habs echt versucht)
mfg
Jammer

  1. Hallo Jammer

    Ich versuche mal in das Problem einzusteigen, werde aber zuerst einige Verständnissfragen stellen, um mit Deinem Wissensstand gleichzuziehen:

    Nun soll ein Eintrag auf wunsch des Users entfernt aussieht:
    auto01.gif!!11111111

    111111 
    auto02.gif!!2222

    222

    auto01.gif!!333333

    3

    3

    3

    • Wie sieht die Datenstruktur der Eintrag.txt aus ?

    -Ist die Eintrag.txt eine Datensatz/Feld-orientiertes Datenbankformat ?
    D. h. ein Feld wird durch ein Feldtrennzeichen (z.B. ; oder oder eben !!) vom anderen Feld getrennt. Der Datensatz (Record, Eintrag) wird durch ein Datensatz-Endzeichen (in der Regel Zeilenwechsel, als \n unter Unix, \r\n unter Windows/Dos und \r unter Mac) vom nächsten getrennt.

    • Welche Felder sind in Deiner 'Tabelle' definiert ?

    • Welche Felddatentypen verwendest Du ?
      D. h. Welche Daten sollen in den Feldern dargestellt werden.

    Diese vielen Fragen stelle ich, weil Deine Probleme wahrscheinlich von einer ungeigneten Datenstruktur herrühren. Definere mir bitte, welche Informationen in der Eintrag.txt gespeichert und verarbeitet werden müssen.

    Vielleicht kommen wir dann der Lösung näher.

    Grüsse

    Tom