hallo dies ist mein perl script.
kann mir bitte jemand schnell die löschen funktion einfügen in mein script.
dies schaff ich leider nicht. danke
#####################mein script ohne löschen funktion##########
#!/usr/bin/perl
cgi-funktionen laden
require "./cgi-lib.pl";
#array + hash werden hier ausgegeben.
#der hash wird im formtext verschiedene schreibstile festgelegt
@formfeld=qw( vn name str plz ort land email );
%formtext=qw( vn Vorname name Name str Straße plz PLZ ort Ort land Land email Email );
#------------------------------------
jetzt %in auffüllen
&ReadParse;
die gewünschte funktion
$fct=$in{fct};
datendatei
#hier werden die daten die man eingibt in verschiedene .db gespeichert
$data="/tmp/formdaten.db";
$data_tmp="/tmp/formdaten.db_tmp";
$id_file="/tmp/formdaten.id";
delimiter (trennzeichen);
$dl=";";
#------------------------------------ AUSGABE HEADER
gebe content + html-header aus
#html grundgerüst
print "Content-type: text/html\n\n";
print "<HTML><BODY BGCOLOR=#808080>\n";
print "<FORM ACTION=$ENV{SCRIPT_NAME} >\n";
print "<h2>Herzlich Willkommen auf XXX</h2><BR>
<FONT SIZE=7>$ENV{QUERY_STRING}</FONT><BR><HR>";
nur zur kontrolle
print "Verfügbare Daten:<BR>";
print "<TABLE bgcolor=red>";
#hier werden die daten einzeln aufgeführt
foreach $key (keys %in ){
print "<TR><TD>$key:<TD> $in{$key}<BR>";
}
print "</TABLE>";
#----------------------------------- FUNKTIONEN
sub menu{
print "
<HR>
<H1>Menü $ENV{SCRIPT_NAME}</H1><BR>
<TABLE>
<TR><TD>Funktion:<TD>
<SELECT NAME=fct>
<OPTION VALUE=>nichts
<OPTION VALUE=neuanlage>Neuanlage
<OPTION VALUE=loeschen>Loeschen
<OPTION VALUE=suchen SELECTED>Suchen
</SELECT><BR>
";
for $i (0..$#formfeld){
print "<TR><TD>$formtext{$formfeld[$i]}<TD><INPUT TYPE=text NAME=$formfeld[$i] ><BR>";
}
print "
<TR><TD><TD> <INPUT TYPE=submit VALUE=ok>
</TABLE>
<HR>
"
}
#---------------------------------- ID lesen
sub alt_id{
# lesen alte id
open (IN, "$id_file");
while (<IN>){ chomp; $alt_id=$_;}
close IN;
# wenn alte id < 10000
if ( $alt_id < 10000 || $alt_id eq "" ){
# id=10000
$alt_id=10000;
}
# gebe wert zurück
# testen letzter wert aus db
open (IN, "$data_dir/$db");
while (<IN>){
chomp;
local (@feld)=split(/$dl/,$_);
if ( $alt_id < $feld[0]){
$alt_id=$feld[0];
}
}
return ($alt_id);
}
#---------------------------------- ID speichern
sub save_id{
# abspeichern id_nr
local ( $letzt_id )=@_;
open (ID, ">$id_file");
print ID "$letzt_id";
close ID;
}
#---------------------------------- Löschen Datensatz
sub loeschen_id{
local ($zuloeschen_id)=@_;
open ( IN, "$data" );
open ( OUT, ">$data_tmp" );
while (<IN>){
chomp;
if ( !( $_ =~ /^$zuloeschen_id;/ ) ){
print OUT "$_\n";
print "NICHT LÖSCHEN: $_<BR>";
}else{
print "LÖSCHEN: $_<BR>";
}
}
close IN;
close OUT;
system ("mv ${data_tmp} $data");
}
#---------------------------------- Schreiben
sub neuanlage{
# hier sollten die vars aus dem formular
# abgespeichert werden
# letzte id
# 1. letzte id überprüfen
local $neu_id=&alt_id;
# 2. letzte id erhöhen
$neu_id++;
if ( $in{id_nr} <= $neu_id ){ $in{id_nr}=$neu_id;}
# letzte id speichern
&save_id($neu_id);
# datensatz zusammenstellen (fängt mit $id an);
local $out="$neu_id$dl";
for $i (0..$#formfeld){
$out=$out."$in{$formfeld[$i]}$dl";
}
# öffnen der datei
open ( OUT, ">>$data");
print "OUT> $out<BR>";
# satz schreiben
print OUT "$out\n";
# schließen
close OUT;
}
#----------------------------------- LESEN DATEI
sub lesen {
local ( $feldnr, $muster, @daten )=@_;
local $i=0;
local @zeile="";
if ( $daten[0] eq "" ){
open ( IN, "$data" );
while (<IN>){
chomp;
local @feld=split( /$dl/, $_ );
if ( $feld[$feldnr]=~/$muster/ ){
$zeile[$i]=$_;
$i++;
}
}
close IN;
}else{
while ( <@daten> ){
local @feld=split( /$dl/, $_ );
if ( $feld[$feldnr]=~/$muster/ ){
$zeile[$i]=$_;
$i++;
}
}
}
return ( @zeile );
}
#----------------------------------- SUCHEN
sub suchen{
@ausgabe0=&lesen(0,"$in{vn}");
@ausgabe1=&lesen(1,"$in{name}", @ausgabe0);
@ausgabe2=&lesen(2,"$in{email}",@ausgabe1);
return @ausgabe2;
}
#----------------------------------- AUSGABE
sub ausgabe {
local ($schalter, @zeile)=@_;
local @feld="";
local $j,$i,$out;
# template einlesen
open ( IN, "./tab.tmpl");
while (<IN>){
$template=$template.$_;
}
close IN;
for $i (0..$#zeile){
$eintrag=$template;
# aufteilen in Felder
@feld=split(/$dl/,$zeile[$i]);
$eintrag=~s/XXXFELD0XXX/$feld[0]/g;
$eintrag=~s/XXXFELD1XXX/$feld[1]/g;
$eintrag=~s/XXXFELD2XXX/$feld[2]/g;
$eintrag=~s/XXXFELD3XXX/$feld[3]/g;
$eintrag=~s/XXXFELD4XXX/$feld[4]/g;
$eintrag=~s/XXXFELD5XXX/$feld[5]/g;
$out=$out.$eintrag;
}
return $out;
}
sub ausgabe2 {
local ($schalter, @zeile)=@_;
local @feld="";
local $j,$i,$out;
$out="<TABLE BGCOLOR=yellow>\n";
for $i (0..$#zeile){
# aufteilen in Felder
@feld=split(/$dl/,$zeile[$i]);
$out=$out."<TR>";
for $j (0..$#feld){
$out=$out."<TD>$feld[$j]</TD>";
}
if ( $schalter eq "l" ){
$out=$out."<TD><A HREF=$ENV{SCRIPT_NAME}?fct=loeschen2&zuloeschen_id=$feld[0]>Löschen</A>";
}
$out=$out."</TR>\n";
}
$out=$out."</TABLE>\n";
return $out;
}
#----------------------------------- HAUPTPROGRAMM
wenn script ohne optionen aufgerufen wird
dann
if ( $fct eq "" ){
# gebe auswahlformular aus
print "Bitte wählen Sie eine Funktion!<BR>";
print "Zum Neueintrage wählen Sie bitte die Funktion: <font color='red'><B>NEUEINTRAG</B></font>";
print"<BR>";
print "Zum suchen wählen Sie bitte die Funktion:<font color='green'><B>SUCHEN</B></font>";
ansonsten, wenn die funktion gleich "neuanlage"
}elsif ( $fct eq "neuanlage" ){
# aufruf der funktion "neuanlage"
&neuanlage;
# kommentar
print "Ihre Eingabe lautet wie folgt: ";
print "$in{vn};$in{name};$in{email};$in{gebdatum};\n";
print "Vielen Dank<BR>";
}elsif ( $fct eq "suchen" ){
print "<HR>suchen nach vn <B>und</B> name <B>und</B> email";
print &ausgabe("" , &suchen);
print "<HR>";
}elsif ( $fct eq "loeschen" ){
# selektieren nach vn, name, email
@select=&suchen;
# auflisten und möglichkeit zum löschen geben
print &ausgabe("l",@select);
# (folgefct = loeschen2)
}elsif ( $fct eq "loeschen2" ){
# loeschen eines datensatzes
&loeschen_id($in{zuloeschen_id});
}else{
# gebe die gewünschte funktion aus
print "<H2>--- $fct --- soll ausgeführt werden</H2><br>";
}
&menu;
html footer
print "</FORM></BODY></HTML>";
1;