|
|
|
#*****************************************************************#
# DATENBANK: #
# Tabellendaten auflisten #
#*****************************************************************#
my $TABELLE = 'geodb_adm1';
my $SORTIERUNG = 'name';
my $ZEILEN = 6;
my $self = '/cgi-bin/pl_mysql.pl';
&datalist();
#*****************************************************************#
# Subroutine #
# Datenausgabe #
#*****************************************************************#
sub datalist()
{
my $content = "";
my $SEITE = "1";
if($cgi->param('SEITE') ne "") {
$SEITE = $cgi->param('SEITE');
}
my $START = ($SEITE * $ZEILEN) - $ZEILEN;
# anzahl zeilen
my $sql = 'SELECT count(*) FROM '.$TABELLE;
my $d = perl_mysql->select($sql, 0, 1);
my @data = @{$d->{'data'}};
my $total = int(@data->[0]->[0]);
my $ENDE = ($START + $ZEILEN);
if($ENDE > $total) {$ENDE = $total;}
$content .= '<table width="600"><tr>';
if($SEITE > 1) {
$content .= '<td width="25"><form action="'.$self.'" method="post">' .
'<input type="hidden" name="SEITE" value="'.($SEITE - 1).'">' .
'<input type="submit" value=" < ">' .
'</form></td>';
} else {
$content .= '<td width="25"> </td>';
}
if(($SEITE-1) < (($total - $ZEILEN) / $ZEILEN)) {
$content .= '<td width="25" align="left"><form action="'.$self.'" method="post">' .
'<input type="hidden" name="SEITE" value="'.($SEITE + 1).'">' .
'<input type="submit" value=" > ">' .
'</form></td>';
} else {
$content .= '<td width="25"> </td>';
}
$content .= '<td width="550">Datensätze '.($START + 1).' bis '.$ENDE . ' von '.$total.'</td>' .'</tr></table><hr>';
# zeilen ausgeben
my $sql = 'SELECT * FROM '.$TABELLE.' ORDER BY '.$SORTIERUNG;
my $d = perl_mysql->select($sql, $START, $ZEILEN);
my @titles = @{$d->{'titles'}};
my @prikey = @{$d->{'prikey'}};
my @data = @{$d->{'data'}};
$content .= '<form name="wm" action="/'.$self.'" method="post">';
$content .= '<input type="hidden" name="PKEY" value="">';
# Primärschlüssel
my $pk = 0;
for (my $i=0;$i<int(@prikey);$i++) {
if($prikey[$i] eq "1") {
$pk = $i;
}
}
$content .= '<table border="0" width="600">';
# Überschrift
$content .= '<tr>';
for (my $i=0;$iint(@titles);$i++) {
$content .= '<td class="header">'.$titles[$i].'</td>';
if($i == $pk) {
$content .= '<input type="hidden" name="PNAME" value="'.$titles[$i].'">';
}
}
$content .= '</tr>';
# Daten
for(my $i=0;$i<int(@data);$i++)
{
$content .= '<tr>';
for(my $j=0;$jint(@titles);$j++) {
if($j == $pk) {
$content .= '<td><font color="ff0000">' . @data->[$i]->[$j] .'</font></td>';
}
else {
$content .= '<td>'.@data->[$i]->[$j].'</td>';
}
}
$content .= '</tr>'."\n";
}
$content .= '</table></form>';
print $content;
}
#*****************************************************************#
# Subroutine #
# Datenbankabfrage #
#*****************************************************************#
sub select
{
my ($sql, $dbh, $cmd, $limit) = ();
$sql = $_[1];
$sql =~ s/\\/\\\\/g;
$limit = ' LIMIT '.$_[2].', '.$_[3];
$dbh = DBI->connect($datasource, $config{'user'}, $config{'pass'}, {'RaiseError' => 1});
$cmd = $dbh->prepare($sql.$limit);
$cmd->execute();
my @titles = @{$cmd->{'NAME'}};
my @prikey = @{$cmd->{'mysql_is_pri_key'}};
my (@data, @row);
while(@row = $cmd->fetchrow()) {
push(@data, [ @row ]);
}
$cmd->finish();
$dbh->disconnect();
return { 'titles' => \@titles,
'prikey' => \@prikey,
'data' => \@data };
}
}
|