löschen funktion im script einfügen
andi
- perl
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
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 );
#------------------------------------
&ReadParse;
$fct=$in{fct};
#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";
$dl=";";
#------------------------------------ AUSGABE HEADER
#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>";
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
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>";
}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;
print "</FORM></BODY></HTML>";
1;
Was soll den gelöscht werden? ==> ${data_tmp}????
Die wird doch umbenannt. Ist mir ein wenig schleierhaft.
Zum löschen von Datein verwende ich unlink("URI")!!
GVT
RE:
es sollen die eingaben die gemacht werden können wieder durch die löschen option wieder gelöscht werden.
ich bin gerade in einer prüfung, und komme hier aber nicht drauf wie ich sie löschen kann. bin heil froh das das programm wenigstens so wieder läuft. kannst mir deinen vorschlag gerne unterbreiten wenn es funktioniert.
sag auf jedenfall schon mal
vielen dank
andi
ich bin gerade in einer prüfung, und komme hier aber nicht drauf wie ich sie löschen kann.
Beim Schummeln hilft hier aber keiner. Erst recht nicht mit solch einer anmaßenden Aufforderung "Mach mal einer das rein da!".
- Sven Rautenberg