#*****************************************************************#
  # 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=" &lt; ">' .
      '</form></td>';
    } else {
      $content .= '<td width="25">&nbsp;</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=" &gt; ">' .
      '</form></td>';
    } else {
      $content .= '<td width="25">&nbsp;</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 };
    }
  }