Abspeichern in externe Datei

tobiasneu

Grünschnabel
Hallo zusammen,
ich habe da noch ein kleines Problem mit meinem Perl-Script. Es handelt sich um einen Online-Kalender mit einem Editor für jedes Datum:

Offen ist ein Editor Fester mit übergebenem Datum aus Javascript und einem Formularfeld. (CODE STEHT UNTEN)

Man soll nun auf den Button "Bitte speichern klicken"
und Perl soll nun den Inhalt des Formulares in eine Datei abspeichern.

Die Datei soll als das jeweilige Datum abgespeichert werden.

Falls diese Datei schon existiert, soll der alte Inhalt einfach überschrieben werden. Falls sie nicht existiert, soll sie erstellt werden. Das geht ja einfach mit
open (DATEI, "> $dateiname").


Mein Problem ist jetzt, wie ich das aktuelle Datum aus der Seite herausbekomme sodass er mir die Datei mit dem richtigen Datum abspeichert.

--------ZUR INFO -------
dieses ist das vorherige script mit dem eingebundenem HTML code

use CGI qw:)standard);
use strict;

my $daten = $ENV{'QUERY_STRING'};
my @datum = split(",", $daten);

my $datum_gesamt = $datum[0].$datum[1].$datum[2];

my $file = '../htdocs/kalender/daten/'.$datum_gesamt;

my $inhalt;

if (-T $file) {
my $datei = "../htdocs/kalender/daten/".$datum_gesamt;
open(DATEN, "+< $datei")
or die "\nDatei $datei konnte nicht geoeffnet werden\n";
$inhalt = <DATEN>;
}
else {}

my $antwort = <<HERE_ANTWORT;

<html>
<head>
<title>Online-Kalender</title>
</head>
<body>
<h1 align=center>Kalender-Editor</h1>
<form action="/cgi-bin/termin_speichern.pl" method="post">
<table border="0" cellspacing="0" cellpadding="10" align=center>
<tr>
<td align="left" valign="top">Datum:</td>
<td>$datum[0].$datum[1].$datum[2]</td> --> hier das datum
</tr>
<tr>
<td align="left" valign="top">Eintragung(en):</td>
<td><textarea name="termin" rows="9" cols="50">$inhalt</textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" value="Speichern und zurück!" />
<input type="reset" value="Ohne speichern zurück" /></td>
</tr>
</table>
</form>
</body>
</html>
HERE_ANTWORT
 
Also dein Problem ist, wenn man einen Eintrag editiert bzw. erstellt hat und man dann auf speichern klickt, das Script, das jetzt den neuen Eintrag machen sollte, nicht weis, auf welchen Tag sich das bezieht? Hab ich das soweit richtig verstanden? :D

Ich würde dir als erstes mal das Modul CGI ans herz legen. Damit kommste leichter an die Daten ran, die ein Formular per POST oder GET an dein Script übermitteln.

Beispiel:

Code:
Dein Script wird so aufgerufen:
http://www.domain.tld/cgi-bin/script.cgi?name=blub&alter=14&ort=buxdehude

Dann kannst du an die übergebenen Werte ganz leicht so ran kommen:
use CGI;
my $q = new CGI;
print "Name: ".$q->param('name');
print "Alter: ".$q->param('alter');
print "Ort: ".$q->param('ort');

Mit diesem wissen, würde ich dir dazu raten, das durch JavaScript übermittelte Datum einfach in ein <input type="hidden"...> Feld zu packen. Also z.B.:

Code:
<form action="deinscript.pl">
<textarea name="termin"></textarea>
<input type="hidden" name="datum" value="$datum[0].$datum[1].$datum[2]">
<input type="submit" value="und weg damit">

So würde dann beim Absenden das Datum mit übermittelt und du könntest im Script das die neue Eingabe verwaltet dann mit

Code:
my $datum = $q->param('datum');

Das übergebene Datum empfangen und entsprechend deinen Dateinamen aufbauen.

Eigentlich ganz einfach! ;)

Infos zum CGI Modul gibts in Perldoc: CGI

Hoffe geholfen zu haben,
Sven
 
Hi, schreibe hier alles nochmal neu, habe gerade ein wenig rumgebastelt und mir wird von der datu.pl (code steht oben) schon das datum weitergeleitet:
Wenn ich auf "Speichern" klicke, wird mir das zur termin.speichern.pl übergeben (steht oben in der url)

http://localhost/cgi-bin/termin_speichern.pl?datum=13.1.2004

Nur wie nimmt sich termin_speichern.pl jetzt diese Infos und und speichert die datei als 1312004 ab

mit my $datum = param('datum');


Wie seiht der ganze code denn dann aus
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück