#!/usr/bin/perl
###################################################
# WebInterfaceDB 1.0 вебинтерфейс SQL к базам данных
# Все права на программу принадлежат Головкину Александру
# Email: algol@hatmail.ru
# http://trampico.virtualave.net/
####################################################
$drv='mysql';#драйвер БД (mysql, DB2, Oracle, Xbase, ODBS, Sybase, Informix, File, TextFile, Proxy, Solid, mSQL)
$basename='test';# имя Вашей БД
$host='localhost';#имя хоста
$port='';#Номер порта
$user="root";#Имы юзера
$password = "";#Пароль


$dsn="DBI:".$drv.":".$basename.":".$host;
$dsn.=":$port" if ($port);
use DBI;
use CGI qw(:standard);
print $dns;
&connekt;

print h3('Сделать запрос SQL'), startform('POST', 'test.cgi'),textfield('sql','','60'), submit, endform, "\n\n";
if (param('sql')){
                 $statement=param('sql');
                 $sth=$dbh->prepare($statement);
                 $rv=$sth->execute;
                 $cap=$sth->{NAME}; $i=0;
                 print"<br><hr><table border=1 widht=100%><caption><b>Результат выполнения запроса, строк-$rv</b></caption><tr>\n";
                 while($cap->[$i]){print "<td align=center><b>",$cap->[$i],"</b></td>"; $i++;}                      
                 print"</tr>";
                 for($a=0; $a<$rv; $a++){
                                        @row = $sth->fetchrow_array;
                                        print"<tr>"; for($b=0; $b<$i; $b++){ print"<td>$row[$b]</td>";}
                                        print"</tr>\n";
                                        }
                 print"</table>";
                 }
&end;
exit;

sub connekt{
print header, start_html('Web Interfase to Database'); 
$dbh = DBI->connect($dsn, $user, $password);
if( !defined $dbh ){
	print "$DBI::errstr\n";
        exit 1;
}
print a({-href=>'http://trampico.virtualave.net/'},'<b><i>My HomePage</i></b>'),"<br> Connected to datebase <b>$basename</b>!<hr>";
  @names = $dbh->tables;
print "<table bgcolor=\"#D0D0FF\" border=1 width=100%><caption><b>Таблицы в базе данных и их поля</b></caption>";
foreach $name (@names){
                      $sth=$dbh->prepare("select * from $name");
                      $rv=$sth->execute;
                      $cap=$sth->{NAME};
                      print "<tr><td><b>$name:</b></td><td>"; $i=0;
                      while($cap->[$i]){print $cap->[$i],", "; $i++;}
                      
                      print"</td></tr>\n";
                      }
print"</table>\n<hr>\n";
$sth->finish;

}


sub end{
$dbh->disconnect;
print end_html;
exit;
}