Ernst: Frage zu $cgi->

Hallo, habe mit dem Modul CGI jetzt ein Formular entworfen und den einzelnen feldern werte zugewiesen.
ich schreibe die einzelnen felder in eine datei. das funktioniert ja einmal, wenn ich jetzt aber die werte aus der datei lese und diese ändern will, so bleiben stehts die alten werte erhalten. was muss ich da machen um die geänderten werte zu bekommen. auch ein print $cgi->p(&wert) liefert immer den alten wert und nicht den neuen den ich eingegeben habe.

Hier der Code dazu:
#!C:/SPECTRUM/WebApps/Report_Gateway/Perl/bin/perl.exe -w

use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use mydat;

my $cgi = new CGI;

my $ip = "10.81.0.52";
my $leer = 1;

my @zeilen=dato("daten.txt");
foreach my $zeile (@zeilen)
{
if ($zeile=~m/$ip/)
{
my ($ag,$lo0,$liegenschaft,$plz,$ort,$aort,$adresse,$kont,$tel,$fmi,$sts,$schl,$anm)=split(/;/,$zeile);
$cgi->param("routern"=>"$ag");
$cgi->param("liegenschaft"=>"$liegenschaft");
$cgi->param("plz"=>"$plz");
$cgi->param("ort"=>"$ort");
$cgi->param("adr"=>"$adresse");
$cgi->param("aufstellung"=>"$aort");
$cgi->param("kperson"=>"$kont");
$cgi->param("telefon"=>"$tel");
$cgi->param("fmi"=>"$fmi");
$cgi->param("schl"=>"$schl");
$cgi->param("sts"=>"$sts");
$cgi->param("anmerk"=>"$anm");
$leer = 2;
}
else
{
my ($ag,$lo0,$liegenschaft,$plz,$ort,$aort,$adresse,$kont,$tel,$fmi,$sts,$schl,$anm)=""
}
}

print $cgi->header(-type=>'text/html');

if ($cgi->param('absenden'))
{
print $cgi->start_html(-title => 'Anzeige',

  • author => 'Ernst Schnidar');
    auswertung($cgi);
    }
    else
    {
    print $cgi->start_html(-title => 'Ronda',
  • author => 'Ernst Schnidar',
  • bgcolor=>'#FFFFF');
    print $cgi->start_center;
    if ($leer==2)
    {
    print $cgi->h1('Änderung der Daten für: '.$cgi->param('routern').' IP: '.$ip)."\n";
    }
    else
    {
    print $cgi->h1('Neuanlage '.' IP: '.$ip)."\n";
    }
    print $cgi->end_center;
    print $cgi->br;
    print $cgi->br;
    formular($cgi);
    }
    print $cgi->end_html();

sub formular{
print $cgi->start_form().
$cgi->table({-border=>2,-width=>"75%", -cellspacing=>4, -cellpadding=>0},
$cgi->Tr([
$cgi->td([
'Name:'.
$cgi->td([
$cgi->textfield(-name=>'routern', -size=>60)
]),
]),

$cgi->td([
'Liegenschaft:'.
$cgi->td([
$cgi->textfield(-name=>'liegenschaft', -size=>60)
]),
]),
$cgi->td([
'Schlüssel:'.
$cgi->td([
$cgi->textfield(-name=>'schl', -size=>60)
]),
]),
$cgi->td([
'Adresse:'.
$cgi->td([
$cgi->textfield(-name=>'adr', -size=>60)
]),
]),
$cgi->td([
'Plz:'.
$cgi->td([
$cgi->textfield(-name=>'plz', -size=>4, -maxlength=>4)
]),
]),
$cgi->td([
'Ort:'.
$cgi->td([
$cgi->textfield(-name=>'ort', -size=>60)
]),
]),
$cgi->td([
'. '.
$cgi->td([
'. '
]),
]),
$cgi->td([
'Aufstellungsort'.
$cgi->td([
$cgi->textfield(-name=>'aufstellung', -size=>60)
]),
]),
$cgi->td([
'Kontaktperson:'.
$cgi->td([
$cgi->textfield(-name=>'kperson', -size=>60)
]),
]),
$cgi->td([
'Telefonnummer:'.
$cgi->td([
$cgi->textfield(-name=>'telefon', -size=>60)
]),
]),
$cgi->td([
'. '.
$cgi->td([
'. '
]),
]),
$cgi->td([
'zust. IKT-Service:'.
$cgi->td([
$cgi->scrolling_list(-name=>'fmi', -values=>['Wien','OÖ','Tirol','Salzburg','Kärnten','Steiermark'],-size=>6)

$cgi->textfield(-name=>'fmi', -size=>20)

]),
]),
$cgi->td([
'zust. STS:'.
$cgi->td([
$cgi->scrolling_list(-name=>'sts', -values=>['OST','SÜD','WEST'], -size=>3, -multiple=>'false')

$cgi->textfield(-name=>'sts', -size=>20)

]),
]),
$cgi->td([
'Anmerkung:'.
$cgi->td([
$cgi->textarea(-name=>'anmerk',-rows=>10, -columns=>60)
]),
]),
$cgi->td([
'. '.
$cgi->td([
'. '
]),
]),
$cgi->td([
'.'.
$cgi->td([
$cgi->submit(-name=>'absenden', -value=>'Speichern'),
]),
]),
])
).

$cgi->end_form()
}

sub auswertung{
print $cgi->h1('hier kommt die Auswertung'.$cgi->param("routern"));
my @zeilen=dato("daten.txt");
my $i=0;
foreach my $zeile (@zeilen)
{
$i++;
if ($zeile=~m/$ip/)
{
zelo($i,"daten.txt");
}
}
my $neue_zeile = $cgi->param("routern").";".$ip.";".$cgi->param("liegenschaft").";".$cgi->param("plz").";".
$cgi->param("ort").";".$cgi->param("aufstellung").";".$cgi->param("adr").";".$cgi->param("kperson").";".
$cgi->param("telefon").";".$cgi->param("fmi").";".$cgi->param("sts").";".$cgi->param("schl").";".$cgi->param("anmerk")."\n";

datr($neue_zeile,"daten.txt");
unlink("temp.txt");
dats($neue_zeile,"temp.txt");
print $cgi->p("zeile: ".$neue_zeile)."test";

print $cgi->h1("Die zeile stimmt");

}

Hat hier mal jemand eine Idee was ich da falsch mache

  1. was muss ich da machen um die geänderten werte zu bekommen. auch ein print $cgi->p(&wert) liefert immer den alten wert und nicht den neuen den ich eingegeben habe.

    Du suchst den -override Parameter.

    Struppi.