Schrift
[thread]7673[/thread]

Daten werden nicht in database gespeichert... (Seite 3)



<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten
GwenDragon
 2006-02-10 13:32
#62602 #62602
User since
2005-01-17
14608 Artikel
Admin1
[Homepage]
user image
So , nachdem du mich um Hilfe gebenten hast, habe ich mich hingesetzt und das Ganze nochmals durchgesehen.

Jetzt geht deine am Anfang angegebene Frage.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/bin/perl -w

$| = 1; # Pufferung de Ausgabe ausschalten

use strict;
use warnings;

use CGI qw( :all *form );
use CGI::Carp qw( fatalsToBrowser );

my $cgi = new CGI;

my $DEBUG=1;

my $database   = "database.dat";

my $eingabefeld  = $cgi->param('eingabefeld');

my $operation = $cgi->param('operation') || '';
my $eintragen = 'eintragen';

my $parameterok = 0;
$parameterok = ( defined $cgi->param('new')  or defined $cgi->param('operation')
            and not defined $cgi->param('sosenden')  );
            

if ( $parameterok ) {
 print $cgi->header(),
    $cgi->start_html ( -title   => "Test" );
    
 if ( $DEBUG ) {
    print '--------------', $cgi->br(),
    join $cgi->br(), $cgi->param('eingabefeld'), $cgi->param('operation'), $cgi->param('new'), $cgi->param('sosenden'),
     '--------------', $cgi->br();
 }

}
else {
 print $cgi->redirect( url() . "?operation=anzeigen" );    
}

    
if ($operation eq $eintragen) { eintragen(); }
elsif ($operation  eq 'anzeigen') { anzeigen(); }
elsif (defined $cgi->param('new') ){ sosenden(); }
elsif (defined $cgi->param('sosenden') ) {
 datenlesenschreiben();
 
  $cgi->delete_all();
  print $cgi->redirect( url() . "?operation=anzeigen" );    
 exit;
}

if ( $parameterok ) {
    print $cgi->end_html();
}

exit;

sub anzeigen {
# nicht benötigte Parameter löschen, wegen sticky Modus bei CGI!
 $cgi->delete_all();
 
 print $cgi->a( { -href    => $cgi->url() . '?' . "operation=$eintragen" }, 'Eintragen' );
 print $cgi->br();
 
 open DATABASE, '<', $database or die "$database kann leider nicht geoeffnet werden, weil $!";
 flock DATABASE, 2;
 while ( my $inLine = <DATABASE> ) {
     chomp( $inLine );
     my ( $eingabefeld ) = split /\|/, $inLine;
     print "$eingabefeld";
     $inLine ++;
 }
 close DATABASE;
}

sub eintragen {
# nicht benötigte Parameter löschen, wegen sticky Modus bei CGI!
 $cgi->delete('operation');
 $cgi->delete('sosenden');
 
 print $cgi->start_form( -action=>url() ),
   $cgi->textfield( -name=>'eingabefeld' ),
   $cgi->submit( -name=>'new', -value=>'go'),
   $cgi->end_form();
}

sub sosenden {
 # nicht benötigte Parameter löschen, wegen sticky Modus bei CGI!
 $cgi->delete('operation');
 $cgi->delete('new');
 
 print $cgi->start_form(  -action=>url() ),
   $cgi->submit( -name=>'sosenden', value=>'Ja, so senden'), $cgi->br(),
   $cgi->hidden( -name=> 'eingabefeld', -value=>$eingabefeld, -override=>1),
   "$eingabefeld",
   $cgi->end_form();
}

sub datenlesenschreiben {
 open DATABASE, '>>', $database or die "$database kann leider nicht geoeffnet werden, weil $!"; # Anhängen
 flock DATABASE, 2;
 print DATABASE "$eingabefeld\n";
 close DATABASE;
}

1;

So geht es sicher ohne doppelte Einträge beim Reload.\n\n

<!--EDIT|GwenDragon|1139571282-->
gregor
 2006-02-10 16:06
#62603 #62603
User since
2006-02-03
24 Artikel
BenutzerIn
[default_avatar]
SUPER!!! läuft einfach perfekt!!! sehr vielen dank für hilfe. erkenntlich zeigen kann ich mich sicherlich nicht mit perl-ideen, aber würde es dennoch gerne. gruß gregor
GwenDragon
 2006-02-10 16:43
#62604 #62604
User since
2005-01-17
14608 Artikel
Admin1
[Homepage]
user image
Es reicht uns schon, wenn du ein bisschen Perl lernst ;)
<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten



View all threads created 2006-02-03 16:23.