#!/usr/bin/perl -w
use CGI qw/:standard :netscape/;
use strict;
use CGI::Carp qw/fatalsToBrowser/;
use DBI;
use URI::Escape;
###############################################
# Copyright 1999 Dr Thomas Wieland
# wieland@thwieland.de
# für www.perl-stammtisch.de
###############################################
# Methode für Formular
my $method = 'POST';
# Hintergrundfarbe
my $bgrdcl = '#EEEEEE';
# Titel der Seite
my $page_title = "Linkseite";
# Bild für die Überschrift
my $title_gif = "linklogo.gif";
# Bild für den Homepagebutton
my $homepage_gif = "homepage.gif";
# Pfad zu den Bildern ausgehend vom Root Verzeichnis des httpd
my $icons = '/~wieland/eins/images';
# Adresse des Adminskripts (zum Löschen von Einträgen) Kategorien
my $kadminurl = 'http://localhost/~wieland/eins/cgi-bin2/mydir/kat_admin.cgi';
# Adresse des Linkseitenskripts
my $linkurl = 'http://localhost/~wieland/eins/cgi-bin2/links.cgi';
# Adresse des Adminskripts (zum Löschen von Einträgen) Links
my $link_adminurl = 'http://localhost/~wieland/eins/cgi-bin2/mydir/link_admin.cgi';
# Url der Homepage
my $homeurl = 'http://localhost/~wieland/eins/';
# Variablen für Datenbank
my ($dbh, $sth, $sql, $row, $rv);
my $db_type = 'mysql';
my $port = 0;
my $hostname = "localhost";
my $db_name = 'perl_stammtisch';
my $DB_DSN = "DBI:$db_type:$db_name:$hostname:$port:";
my $DB_USER = "Benutzer für die Datenbank";
my $DB_PASSWD = "Passwort des Benutzers";
my $Tab_Links = 'links';
my $Tab_Link_Kat = 'link_kat';
# Http Header, Kopf und Überschrift
&http_header;
# Datenbank Verbindung herstellen
$dbh = DBI->connect($DB_DSN, $DB_USER, $DB_PASSWD,
{ RaiseError => 1 } );
# Falls Parameter insert -> Einfügen
if (param('insert')) {
my $name = param('name');
$sql = qq[ INSERT into $Tab_Link_Kat
(gruppe) VALUES('$name') ];
$dbh->do($sql);
Delete_all();
} elsif (param('edit')) {
my $name = param('name');
my $nr = param('nr');
$sql = qq[ UPDATE $Tab_Link_Kat
SET katid='$nr', gruppe='$name'
WHERE katid='$nr' ];
$dbh->do($sql);
Delete_all();
} elsif (param('delete')) {
my $nr = param('nr');
$sql = qq[ SELECT * FROM $Tab_Links WHERE grpid='$nr' ];
$sth = $dbh->prepare($sql);
$sth->execute();
$rv = $sth->rows;
unless ($rv) {
$sql = qq[ DELETE FROM $Tab_Link_Kat WHERE katid='$nr'];
$dbh->do($sql);
} else {
print "Fehler: Zu dieser Kategorie existieren noch Einträge!! ",
"Kategorie nicht gelöscht
",hr;
}
Delete_all();
}
&links;
&formular;
# Datenbank Verbindung lösen
$dbh->disconnect(); # Datenbankverbindung lösen.
print end_html();
# Unterprogramme
###############################################
sub http_header {
###############################################
print header(),
start_html(-BGCOLOR => $bgrdcl,
-title => $page_title,
-author => 'wieland@thwieland.de',
-meta=>{'keywords' => 'Perl-Stammtisch',
'copyright'=>'copyright 1999 Dr. Thomas Wieland'}
)."\n";
print center(table({-border => 0,
-width => '95%'},
TR(td(img{-src => "$icons/$title_gif",
-alt => 'Linkseite Logo'}),
td(h4('Kategorien verwalten')),
td(a({-href=> $homeurl},
img{-src => "$icons/$homepage_gif",
-alt => 'Zur Homepage',
-border => 0}
)
)
)
)
),hr,"\n";
}
###############################################
sub formular {
###############################################
my $name = param('name');
my $nr = param('nr');
print start_form(-method => $method),
table({-border => 0},
TR(td(["Name:",
textfield(-name => 'name', -value => "$name", -size => 40)])),
),
hidden(-name => 'nr', -value => "$nr"),
table({-border => 0},
TR(td([submit (-name => 'insert',
-value => 'Eintragen'),
submit (-name => 'edit',
-value => 'Ändern'),
submit (-name => 'delete',
-value => 'Löschen')]
)
)
),
end_form()
}
###############################################
sub links {
###############################################
# Zeile mit Links zu den einzelnen Kategorien erzeugen
$sql = qq[ SELECT * FROM $Tab_Link_Kat ORDER BY gruppe ];
$sth = $dbh->prepare($sql);
$sth->execute();
my %kat = undef;
print "