#!/usr/bin/perl -w # # get geometry from mysql db and create svg for selected countries # klaus.foerster@uibk.ac.at, v0.1b ######################################################################## use DBI; use CGI; use strict; my $q = new CGI; my (@domains, $geom); my $width = "480"; my $height = "360"; # check for query_string if (!$q->param('query')) { print $q->header(); print "Please select at least one country :(\n"; exit (0); } # parse query @_ = split(/_/, $q->param('query')); for my $dom (@_) { $dom =~ m/^[a-z]{2}$/ or next; push @domains, "countrygeom.tld='$dom'"; } if (!@domains) { print $q->header(); print "Sorry, incorrect query string :(\n"; exit (0); } # generate sql query, connect to database and execute query my $sql = qq{ select countrygeom.tld, countrygeom.geom, countrynames.cnameen }; $sql .= qq{ from countrygeom, countrynames }; $sql .= qq{ where countrygeom.tld = countrynames.tld and (}; $sql .= join " or ", @domains; $sql .= ")"; my $dbh = DBI->connect("dbi:mysql:database=XXX;host=XXX","XXX","XXX"); if ( !defined $dbh ) { local $SIG{__DIE__} = sub { print STDERR "[" .scalar localtime (time) . "] [error] [client $ENV{REMOTE_HOST}] "; print STDERR $DBI::errstr . " "; print $q->header(); print $DBI::errstr; print "
Sorry. Database could not be reached. Please try again later
\n";
};
die;
}
my $sth = $dbh->prepare($sql);
$sth->execute || execute_failed($DBI::errstr);
# get results and create svg-code
while (my @row = $sth->fetchrow) {
$geom .= qq*
\n";
}