--- convert.pl 2001/06/12 12:07:37 1.3 +++ convert.pl 2001/06/19 13:39:05 1.7 @@ -45,7 +45,7 @@ # $dt = "NULL"; $dt = undef; } - return $pgdbh->quote($dt); + return $dt; } sub ConvertBool { @@ -60,13 +60,14 @@ $str =~ s/[\x00-\x1F]+//gs; $str =~ s/\s*\x8D?\s*\r?\s*\n\s*/\n/gs; $str =~ s/(^\s+|\s+$)//gs; - $str =~ s/(^"|"$)//g; + $str =~ s/(^["']|["']$)//g; # char recoding #$str =~ s/đ/ð/g; #$str =~ s/č/è/g; #$str =~ s/ý/¾/g; $str =~ tr/{|`~}[\\@^]/¹ð¾èæ©Ð®ÈÆ/; - return $pgdbh->quote($str); +# return $pgdbh->quote($str); + return $str; } sub Progress { @@ -81,21 +82,30 @@ } sub CondInsert { - my ($table, $name, $key, $fields, $values) = @_; - my $sql = "SELECT $name FROM $table WHERE ($name = $key)"; - my $cnt = $pgdbh->do($sql); - return 0 if ($cnt > 0); - $sql = "INSERT INTO $table $fields VALUES $values"; - my $ret = $pgdbh->do($sql); + my $table = shift @_; + my $name = shift @_; + my $key = shift @_; + my $fields = shift @_; + my @values=@_; # chop argument(s) are values array + my $sql = "SELECT count($name) FROM $table WHERE ($name = ?)"; + my $sth = $pgdbh->prepare($sql); + my $ret = $sth->execute($key); + my ($cnt) = $sth->fetchrow_array(); + return 0 if (!$cnt == 0); + my @valtpl; + for (my $i=0; $i<=$#values; $i++) { push @valtpl,"?" } + $sql = "INSERT INTO $table $fields VALUES (".join(",",@valtpl).")"; + $sth = $pgdbh->prepare($sql); + $ret = $sth->execute(@values); my $err = $pgdbh->errstr; - print &Log("[$sql] ".$err) if ($err); + print &Log("[$sql] [".join(",",@values)."]".$err) if ($err); return $ret; } sub tblATK { my ($table, $fields, $data) = @_; my $count = 0; - my $sth = $pgdbh->prepare("INSERT INTO atk_inn (sifra, naziv, razno) VALUES (?, ?, ?)"); + my $sth = $pgdbh->prepare("INSERT INTO $table (sifra, naziv, razno) VALUES (?, ?, ?)"); unless ($sth) { print &Log("[$table-prepare] ".$pgdbh->errstr); return 0; @@ -219,25 +229,25 @@ $oprez = &ConvertString($oprez); $tel = &ConvertString($tel); $fax = &ConvertString($fax); - CondInsert("atk_inn", "sifra", $sif_atk, - "(sifra, naziv, razno)", "($sif_atk, $naz_atk, '')"); - CondInsert("atk_inn", "sifra", $sif_inn, - "(sifra, naziv, razno)", "($sif_inn, $naz_inn, '')"); + CondInsert("atk", "sifra", $sif_atk, + "(sifra, naziv, razno)", ($sif_atk, $naz_atk, '')); + CondInsert("inn", "sifra", $sif_inn, + "(sifra, naziv, razno)", ($sif_inn, $naz_inn, '')); CondInsert("proizvodjaci", "sifra", $sif_proizvodjac, "(sifra, naziv, drzava, zastupnistvo, mjesto, zip, ulica_i_broj, razno, telefon, fax)", - "($sif_proizvodjac, $naz_proizvodjac, $drzava, $zastupnistvo, $mjesto, '', $ulica_i_broj, '', $tel, $fax)"); + ($sif_proizvodjac, $naz_proizvodjac, $drzava, $zastupnistvo, $mjesto, '', $ulica_i_broj, '', $tel, $fax)); CondInsert("nacin_izdavanja", "sifra", $sif_nacin_izdavanja, - "(sifra, opis)", "($sif_nacin_izdavanja, $naz_nacin_izdavanja)"); + "(sifra, opis)", ($sif_nacin_izdavanja, $naz_nacin_izdavanja)); CondInsert("list_fond", "sifra", $sif_list_fond, - "(sifra, opis)", "($sif_list_fond, $naz_list_fond)"); + "(sifra, opis)", ($sif_list_fond, $naz_list_fond)); CondInsert("trudnoca", "sifra", $sif_trudnoca, - "(sifra, opis)", "($sif_trudnoca, $naz_trudnoca)"); + "(sifra, opis)", ($sif_trudnoca, $naz_trudnoca)); CondInsert("dojencad", "sifra", $sif_dojencad, - "(sifra, opis)", "($sif_dojencad, $naz_dojencad)"); + "(sifra, opis)", ($sif_dojencad, $naz_dojencad)); CondInsert("vozac", "sifra", $sif_vozac, - "(sifra, opis)", "($sif_vozac, $naz_vozac)"); + "(sifra, opis)", ($sif_vozac, $naz_vozac)); CondInsert("droga", "sifra", $sif_droga, - "(sifra, opis)", "($sif_droga, '')"); + "(sifra, opis)", ($sif_droga, '')); my $tmp = $sth->execute($sifra, $naziv, $sif_atk, $sif_inn, $sif_proizvodjac, $pakovanje, $sastav_1, $sastav_2, $sif_nacin_izdavanja, $sif_list_fond, $sif_trudnoca, @@ -312,22 +322,22 @@ my $tmp = 0; if ($code eq "06") { $tmp += CondInsert("nacin_izdavanja", "sifra", $sifra, - "(sifra, opis)", "($sifra, $naziv)"); + "(sifra, opis)", ($sifra, $naziv)); } elsif ($code eq "07") { $tmp += CondInsert("list_fond", "sifra", $sifra, - "(sifra, opis)", "($sifra, $naziv)"); + "(sifra, opis)", ($sifra, $naziv)); } elsif ($code eq "08") { $tmp += CondInsert("trudnoca", "sifra", $sifra, - "(sifra, opis)", "($sifra, $naziv)"); + "(sifra, opis)", ($sifra, $naziv)); } elsif ($code eq "09") { $tmp += CondInsert("dojencad", "sifra", $sifra, - "(sifra, opis)", "($sifra, $naziv)"); + "(sifra, opis)", ($sifra, $naziv)); } elsif ($code eq "10") { $tmp += CondInsert("vozac", "sifra", $sifra, - "(sifra, opis)", "($sifra, $naziv)"); + "(sifra, opis)", ($sifra, $naziv)); } elsif ($code eq "11") { $tmp += CondInsert("droga", "sifra", $sifra, - "(sifra, opis)", "($sifra, $naziv)"); + "(sifra, opis)", ($sifra, $naziv)); } else { # UNKNOWN CODE!!! print &Log("[WARNING: unknown code \"$code\"]");