#!/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 "
|"; while ($row = $sth->fetchrow_arrayref) { print b(" "), a({href => url()."?name=".uri_escape($row->[1])."&nr=".$row->[0]},$row->[1]), b(" |"); $kat{"$row->[1]"} = $row->[0]; } print b(" "),a({href => $link_adminurl}, 'Links verwalten'),b(" |"); print b(" "),a({href => $linkurl}, 'Links anzeigen'),b(" |"); print "
",hr; $sth->finish; }