Löschen?
dairaen
- perl
0 Stefan Muenz0 David
Hallo, ich bin mir schon fast sicher das in diesem Forum jemand mir helfen kann:
Ich habe ein Script, das aus Daten in einer .txt Datei eine HTML seite produziert. Diese Html Seite besteht aus einer tabelle (links ein gif, rechts der Text). So, nun möchte ich wissen wie jemand aus dieser Site per Browser einzelne Inhalte wieder löschen kann (BSP: Es sind 10 Autos (Bild+Text) eingetragen und er möchte Nr. 6 nicht mehr drin haben). Jemand eine Idee??
Hallo Dairaen,
So, nun möchte ich wissen wie jemand aus dieser Site per Browser einzelne Inhalte wieder löschen kann (BSP: Es sind 10 Autos (Bild+Text) eingetragen und er möchte Nr. 6 nicht mehr drin haben). Jemand eine Idee??
Eigentlich ist das eher ein typischer Anwendungsfall fuer client-seitige Programmierung. Denn irgendwie ist es doch ein ziemlicher Luxus, wegen der anders anzuzeigenden Seite gleich wieder ein Server-Script aufzurufen, dass dann die HTML-Seite wieder komplett neu an den Browser senden muss.
Was du da erreichen willst, ist meines Erachtens ein klassischer Fall fuer DHTML. Wenn die einzelnen Produktzeilen (Bild+Text) innerhalb eines Layers bzw. <div>-Bereichs stehen, kannst du sie onIrgendwas z.B. ein- oder ausblenden. Die massgeblichen JavaScript-Objekte dafuer sind document.all[.style] (<../../tecbba.htm> und <../../tecbbaa.htm>) beim MSIE und layers (<../../tecbbf.htm>) bei Netscape. Bei MSIE die Eigenschaft document.all.ElementID.style.display, bei Netscape document.Layername.visibility.
viele Gruesse
Stefan Muenz
Moin Stefan,
Eigentlich ist das eher ein typischer Anwendungsfall fuer client-seitige Programmierung. Denn irgendwie ist es doch ein ziemlicher Luxus, wegen der anders anzuzeigenden Seite gleich wieder ein Server-Script aufzurufen, dass dann die HTML-Seite wieder komplett neu an den Browser senden muss.
Was du da erreichen willst, ist meines Erachtens ein klassischer Fall fuer DHTML. Wenn die einzelnen Produktzeilen (Bild+Text) innerhalb eines Layers bzw. <div>-Bereichs stehen, kannst du sie onIrgendwas z.B. ein- oder ausblenden. Die massgeblichen JavaScript-Objekte dafuer sind document.all[.style] (<../../tecbba.htm> und <../../tecbbaa.htm>) beim MSIE und layers (<../../tecbbf.htm>) bei Netscape. Bei MSIE die Eigenschaft document.all.ElementID.style.display, bei Netscape document.Layername.visibility.
Du gehst anscheinend davon aus, daß irgendwelche Elemente auf wunsch einfach nicht mehr angezeigt werde sollen. Ich glaub jedoch, Dairaen möchte, daß die Daten dann auch aus der Txt-Datei gelöscht werden, was mit DHTML sicher nicht geht.
Mein Vorschlag dazu an Dairaen: Nimm Datenbanken. Wenn der Server ein Apache ist und unter Unix/Linux läuft, kann er auch automatisch PHP3 und MySQL. Damit sollte das alles kein Problem sein.
Gruss,
David
Ansonsten...
du kannst doch rausfinden, welcher Text bzw. welche Zeile gelöscht werden soll. Die übergibst du per Parameter ans Perlscript, findest mit dem raus, wo sie steht und löschst sie. Kann doch nicht schwer sein?! Dummerweise kann ich PERL überhaupt nicht aber es dürfte ja nicht allzu schwer sein... vielleicht mit s/zu_löschende_zeile/leerer_string ? :)
Danke erstmal, also David liegt schon richtig die Daten sollen aus der Txt verschwinden. Mit Datenbanken kann ich leider nicht arbeiten, da das nicht zum Auftrag gehört (ist ein Kundenprojekt). Allerdings soll der Kunde einfach über den Browser (FORM) z.B. 1 eingeben und der erste Datensatz soll verschwinden (danach wird die Html neu erstellt, dass hab ich (mit davids hilfe!) schon realisiert).
Der Inhalt der TXT sieht folgendermaßen aus:
auto01.gif!!Dies ist ein sogenannter TEST!
auto02.gif!!Noch ein AUDO
auto03.jpg!!Schönes neues Auto!
Bei den !! splite ich den Kram um ihn als Tabelle in der Html Datei ausgeben zu können.
Es sollen bis ca. 50 Einträge vorgenommen werden können.
Danke Euch!
Hi,
Danke erstmal, also David liegt schon richtig die Daten sollen aus der Txt verschwinden. Mit Datenbanken kann ich leider nicht arbeiten, da das nicht zum Auftrag gehört (ist ein Kundenprojekt). Allerdings soll der Kunde einfach über den Browser (FORM) z.B. 1 eingeben und der erste Datensatz soll verschwinden (danach wird die Html neu erstellt, dass hab ich (mit davids hilfe!) schon realisiert).
wenn ich das richtig sehe ist Dein Problem, aus einer Datei eine bestimmte Zeile zu löschen (was völlig unabhängig von einer möglichen Ausgabe geschieht). Nun, dazu gibt es keinen Befehl oder so. Was Du tun mußt, ist die gesamte Datei einlesen und komplett (bzw. ohne die eine Zeile) wieder speichern. In etwa so:
open(READ,$datei) or die "Kann $datei nicht oeffnen: $!";
my @array = <READ>;
close(READ);
open(WRITE,">$datei") or die "Kann $datei nicht zum Schreiben oeffnen: $!";
foreach (@array) {
print unless (!/Pattern für zu löschende Zeile/);
}
close(WRITE) or die "Kann $datei nicht schliessen: $!";
Cheatah
Hi, ja so ähnlich meine ich das. Allerdings kenne ich die genaue Eingabe nicht. Ich weiß ja leider nicht welchen text der Kunde eingibt. Mein KuddelMuddel sieht so aus (und läuft nicht!):
require "cgi-lib.pl";
&parse_form;
$old = "<e:/Xitami/webpages/eintrag/eintrag.txt";
$new = ">e:/Xitami/webpages/eintrag/autos.htm";
open(INFILE, $old) or die "Datei existiert nicht!";
open(NEW, $new);
while (<INFILE>)
{
$all = $_;
@lines = split(/!!/, $all);
$all = '';
if ($in{'löschen'} == '1')
{
$lines[0] = '';
$lines[1] = '';
}
if ($in{'löschen'} == '2')
{
$lines[1] = '';
$lines[2] = '';
}
if ($in{'löschen'} == '3')
{
$lines[3] = '';
$lines[4] = '';
}
print NEW "<HTML>\n";
print NEW "<HEAD>\n";
print NEW "<TITLE>Caravan Auto</TITLE>\n";
print NEW "<HEAD>\n";
print NEW "<BODY bgcolor=dcdcb4>\n";
print NEW "<table width=450 border=1><tr><td>\n";
print NEW "<img src=e:/Xitami/webpages/eintrag/img/$lines[0]> \n";
print NEW "</td>\n";
print NEW "<td>\n";
print NEW " $lines[1] \n";
print NEW "</td></tr></table>\n";
}
close(INFILE);
close(NEW);
Wie gesagt, er soll die alte Datei Leeren und eine neue erzeugen in der der zu löschende Eintrag nicht mehr vorhanden ist.
hi!
Mein Vorschlag dazu an Dairaen: Nimm Datenbanken. Wenn der Server ein Apache ist und
unter Unix/Linux läuft, kann er auch automatisch PHP3 und MySQL. Damit sollte das alles
kein Problem sein.
Das ist falsch. Apache kann standardmäßig kein PHP3 und mit Datenbanken hat der Webserver schon gar nichts zu tun. Und MySQL ist keineswegs der einzige Datenbank-Server, den es gibt.
bye, Frank!