Leser: 2
![]() |
![]() |
8 Einträge, 1 Seite |
DBI. Hier besonders auf die ?-Schreibweise achten (siehe auch
hier). Wie man Datenbanken ausliest kannst Du hier nachlesen.
CGI anschauen. Das Modul ist auch sehr hilfreich, wenn Du Formulareingaben auslesen willst. Wie Du auch
hier und hier nachlesen kannst.
CGI und
DBI.print header(-type=>'text/plain');
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
#!d:/Programme/Perl/bin/perl -w
use strict;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
use DBI;
my $DBH;
my $STH;
my $CGI;
my $antwort;
$CGI = new CGI();
### Suche oder Eintrag ###
if ($CGI->param("suchanfrage")){
suche($CGI, $DBH, $STH);
}
elsif($CGI->param("eintrag")){
eintragen($CGI, $DBH, $STH);
}
### Start Subroutine Suche ###
sub suche{
my $nachname = param("nachname");
my $abteilung = param("abt");
$DBH = DBI->connect("DBI:CSV:Kunden.mdb=c:/Programme/ApacheGroup/Apache/cgi-bin")
or die "Konnte keine Verbindung zur Datenbank herstellen:$!";
$STH = $DBH->prepare("SELECT Tabelle1.Kundennummer, Tabelle1.Name, Tabelle1.Telefon, Tabelle2.Rechnungsbetrag FROM Tabelle2 JOIN Tabelle1 WHERE Tabelle2.Kundennummer = Tabelle1.Kundennummer ")
or die "Konnte SQL-Statement nicht bereitstellen:$!";
$STH->execute()
or die "Ausfuehren nicht moeglich:$!";
### Treffer ###
if ($STH->rows != 0){
print <<HERE_TEXT1;
Content-type:text/html
<HTML>
<HEAD>
<TITLE> Antwort </TITLE>
</HEAD>
<BODY>
<CENTER>
<H1>Suchergebnis:</H1>
<HR>
<TABLE BORDER>
<TR>
<TD WIDTH="200"><B>Kundennummer:</B></TD>
<TD WIDTH="200"><B>Adresse:</B></TD>
<TD WIDTH="200"><B>Name:</B></TD>
<TD WIDTH="200"><B>Telefonnummer:</B></TD>
<TD WIDTH="200"><B>Rechnungsbetrag:</B></TD>
</TR>
HERE_TEXT1
my @data;
while (@data = $STH->fetchrow_array()) {
my $kundennummer = $data[0];
my $adresse = $data[1];
my $name = $data[2];
my $telefonnummer = $data[3];
my $rechnungsbetrag = $data[3];
print qq§<TR>\n<TD><B>$kundennummer</B></TD>\n<TD>$adrese</TD>\n<TD>$name</TD>\n<TD>$telefonnummer</TD>\n</TR>\n§;
</BODY>
</HEAD>
$DBH->disconnect;
}
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
#! d:/Programme/Perl/bin/perl
use strict;
use warnings;
use CGI ();
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
use DBI;
use vars qw($CsvPath);
$CsvPath = 'c:/Programme/ApacheGroup/Apache/cgi-bin';
# oder besser, wenn Readonly vorhanden ist:
# use Readonly $CsvPath => 'c:/Programme/ApacheGroup/Apache/cgi-bin';
my $cgi = CGI->new();
my %params = $cgi->Vars();
print $cgi->header();
if ( exists $params{suchanfrage} ) { &Suche ($cgi, \%params) }
elsif( exists $params{eintrag} ) { &Eintragen($cgi, \%params) }
else { &Startseite($cgi, '...') }
print $cgi->end_html();
# ------------------------------------------------------------
sub Suche {
my ($cgi, $params) = @_;
my $dbh = &ConnectToDB();
$cgi->start_html('Antwort');
my $sqlStatement = qq~SELECT Tabelle1.Kundennummer, Tabelle1.Name,
Tabelle1.Telefon, Tabelle2.Rechnungsbetrag
FROM Tabelle2 JOIN Tabelle1
WHERE Tabelle2.Kundennummer = Tabelle1.Kundennummer~;
my $sth = &FireSql($dbh, $sqlStatement);
if ($sth->rows < 1) {
print $cgi->p("Keine Daten gefunden");
return;
} # if
print qq~
<center>
<h1>Suchergebnis:</h1>
<hr />
<table border="2">
<tr>
<td width="200"><b>Kundennummer:</b></td>
<td width="200"><b>Adresse:</b></td>
<td width="200"><b>Name:</b></td>
<td width="200"><b>Telefonnummer:</b></td>
<td width="200"><b>Rechnungsbetrag:</b></td>
</tr>\n~;
while( my @data = $sth->fetchrow() ) {
printf qq~
<tr>
<td><b>%s</b></td>
<td><b>%s</b></td>
<td><b>%s</b></td>
<td><b>%s</b></td>
</tr>\n~,
@data[0, 1, 2, 3];
} # while
$sth->finish();
$dbh->disconnect();
} # Suche
# ------------------------------------------------------------
sub Eintragen {
} # Eintragen
# ------------------------------------------------------------
sub ConnectToDB {
my $dsn = "DBI:CSV:Kunden.mdb=$CsvPath";
my $dbh = DBI->connect($dsn)
or die "Error: couldn't connect to '$dsn': $DBI::errstr\n";
return $dbh;
} # ConnectToDb
# ------------------------------------------------------------
sub FireSql {
my ($dbh, $sqlStatement, @values) = @_;
my $sth = $dbh->prepare($sqlStatement)
or die "Error: couldn't prepare sql: $DBI::errstr\n$sqlStatement\n";
$sth->execute(@values)
or die "Error: couldn't execute sql: $DBI::errstr\n$sqlStatement\n";
return ($sth);
} # FireSql
# ------------------------------------------------------------
![]() |
![]() |
8 Einträge, 1 Seite |