--- db/prgsrc/dbchgk.pm 2001/12/05 01:29:09 1.8 +++ db/prgsrc/dbchgk.pm 2008/02/08 22:49:12 1.12 @@ -26,13 +26,14 @@ use vars qw(@ISA @EXPORT); @EXPORT = qw(&getbase &getquestions &closebase &getrow $z &in2out &getall &addnf &out2in &mydo &getequalto &forbidden &getquestion &checktable &addword2task &addnest &getwordkeys &getflag &addword2task - &updateword2question &knownword &incnf &searchmark &knownnf &getnests + &updateword2question &updatew2q &knownword &incnf &searchmark &knownnf &getnests &packword &getnfnumbers &getword2question &addauthors) ; my $z; my $qbase; BEGIN {do "chgk.cnf"; $qbase = DBI -> connect ("DBI:mysql:$base",'piataev',undef); + $qbase->do("SET NAMES koi8r"); }; @@ -148,7 +149,16 @@ sub packword { my ($fieldnumber,$id,$wordnumber)=@_; die "packword: fieldnumber is $fieldnumber! -- id=$id, word=$wordnumber\n" if $fieldnumber>6; - pack("CSC",$fieldnumber,$id,$wordnumber%256) + $r=pack("CSC",$fieldnumber|(($id >> 16) << 4),$id%65536,$wordnumber%256); +} + + +sub updatew2q { + my ($n,$fieldnumber, $id,$wordnumber)=@_; + my ($z,@a); + $query="replace into w2q (wordId,questionId,fieldNumber,wordNumber) values ($n,$id,$fieldnumber,$wordnumber)"; + print "$query\n" if $debug; + $qbase->do($query); } sub updateword2question @@ -325,7 +335,7 @@ sub checktable # ΕΣΜΙ $param='delete' ΥΔ { my ($TabName,$param) = @_; my ($ans); - if (scalar(grep(/^$TabName$/i, &tablelist))) { + if (scalar(grep(/\`$TabName$\`/i, &tablelist))) { return 1 unless $param; if ($param =~ /delete/) {$ans='y';} else { @@ -350,7 +360,7 @@ sub checktable # ΕΣΜΙ $param='delete' ΥΔ sub tablelist { - $qbase->func( '_ListTables' ); + return $qbase->func('_ListTables'); } sub in2out