#!/usr/local/bin/perl -T

use lib './module/';
use strict;
use Tie;
use CGI; my $q=new CGI;
use CGI::Carp qw(fatalsToBrowser);

#############################################

my( $tab,%TAB,%UP )=( 0 );

open OP, './dbm/tables' or die 'no file /dbm/tables';
while( <OP> ){
	s/\s*\#+.*$//;
	next if !$_ || /^\r?\n$/;

	if( /^\>(.*)/ ){ $UP{$tab}.=" $1"; next }

	0=~/(.)/; /^\=+\s?([^\s\=]+)/;
	if( $1 ){ $tab=lc $1; next }
	if( $tab ){ $TAB{$tab}.=$_ }
}
close OP;

#############################################

my $table= defined $q->param('-table') ? $q->param('-table') : '';
my $ins= defined $q->param('-ins') ? $q->param('-ins') : 0;

#############################################

print $q->header( -type=>'text/html', -charset=>'WINDOWS-1251' );
print $q->start_html( -title=>'Добавление строк в таблицу', -style=>$STYLE, "leftmargin=0 topmargin=0 marginwidth=0 marginheight=0" );

print "<div align=center><div style='border:1px solid #BBB;width:520;color:#006;background-color:#FFF;font-size:14;padding:2'>";
print $q->start_form( -method=>'GET', -action=>'insert.cgi' );
print "<a href=insert.cgi?3 title='В начало'>Добавление строк в таблицу</a><hr size=1 width=100%>";

if( !$table ){				#Вывод таблиц

	$Q->param(Q=>"SELECT DATABASE()");
	Tie();
	my $db= $A->param('A') or die 'Не могу получить имя БД на удалённом хосте!<br>'; $db=~ s/[^\w\-]//g;

	print "Таблицы на удалённом хосте. БД <u>$db</u><ul>";

	$Q->param(Q=>"SHOW TABLES FROM $db");
	Tie();
	for( $A->param('A') ){ print "<li><a href=insert.cgi?-table=$_ title='Выбрать таблицу $_'>$_</a>" };
}

elsif( $table && $ins ){	#INSERT

	my @val=();
	for( $q->param ){
		my( $key,$val )=( $_,$q->param($_) );
		push(@val, "$_=".$dbSQL->quote($val)) if $key!~/^-/;
	}

	my $sql= join',',@val;
	$Q->param(Q=>"INSERT INTO $table SET $sql");
	Tie();

	print '<code>Добавлено строк на удалённом хосте: ',$A->param('A'),'</code><br>';
	print '<code>Добавлено строк на локальном хосте: ',$dbSQL->do("INSERT INTO $table SET $sql"),'</code><br>';

	$ins=0;
}

if( $table && !$ins ){	#Вывод формы

	print "<table border=0 width=510 cellspacing=1 cellpadding=1 class=8>";
	print "<tr class=tg><td colspan=2 class=w8>Таблица $table</td>";
	print "<input type=hidden name='-table' value='$table'>";

	my( $ib,$bg )=( 0 );
	for( &fields ){
		$bg= $ib?'t1':'t2'; $ib= $ib?0:1;

		print "<tr class=$bg><td>$_</td><td><input size=75 class=box name='$_'>\n";
	}

	print "<tr><td colspan=2 align=center><input type=submit name='-ins' value=Insert class=boxG>";
	print "</table>";
}


print "</div></div></ul>";
print $q->end_form;
print $q->end_html;

exit(0);

#############################################

sub fields{

	my $val= $TAB{$table};
	my @fields=();

	for( split/\r?\n/,$val ){

		0=~/(.)/; /^\s*([^\s\(\,]+)\s+(.+)$/;
		push( @fields, $1 ) if $1 && $1!~/INDEX/i && $1!~/PRIMARY/i && $1!~/UNIQUE/i;
	}
	return @fields;
}

