1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| #!/bin/perl
use strict;
use warnings;
use DBI;
use CGI;
my $cgi = new CGI;
my %in = $cgi->parse_form_data;
my $dbh = DBI->connect("DBI:mysql:produit", 'root', '');
###################################################
# Ecriture du produit dans la table générant l'Id #
###################################################
my $ins_Tpdt = $dbh->prepare(qq(insert into t_pdt (CAS, purete, unite_purete, forme) values(?, ?, ?, ?)));
my $CAS = $in{'CAS'};
my $purete = $in{'purete'};
my $unite_purete = $in{'unite_purete'};
my $forme = $in{'forme'};
$ins_Tpdt->execute($CAS, $purete, $unite_purete, $forme) || die "Pb à l'insertion : $DBI::errstr";
$ins_Tpdt->finish;
##########################################
# Récupération de l'Id nouvellement créé #
##########################################
my $sel= $dbh->prepare('select max(ID_produit) from t_pdt');
$sel->execute();
my $Id_pdt = $sel;
###############################################################
# Ecriture des propriétés du produit dans la table T_prop_pdt #
###############################################################
my $sth = $dbh->prepare("select * from T_prop_pdt");
$sth->execute;
my @ListeNomsColonnesDeMaTable = @{$sth->{NAME}};
#Création d'un tableau associatif pour tenir compte des champs optionnels non renseignés par l'utilisateur
my %valeurs_prop_pdt = map {$_ => "(NC)"} @ListeNomsColonnesDeMaTable;
foreach my $f (%in) {
$f =~ s/\s+$//; #suppression des espaces en fin de texte
#reste à supprimer les < > / et \ enlever ces caractères de la chaîne =>sécurité oblige
$valeurs_prop_pdt{'$f'} = $in{'$f'}; #remplacement de la valeur NC par celle rentrée par l'utilisateur
}
#Création de la liste des attributs que l'on va renseigner dans la table T_prop_pdt
my $ListeNomsColonnesVirgules = join(", ", @ListeNomsColonnesDeMaTable);
my $ListePlaceHolders = join(", ", map {'?'} @ListeNomsColonnesDeMaTable);
#Création de la liste de valeurs que l'on va rentrer dans la table T_prop_pdt
my $ListeValeursPdtVirgules = join(", ", %valeurs_prop_pdt); #ça peut marcher avec un tableau associatif?
my $ins_Tproppdt = $dbh->prepare("insert into T_prop_pdt ($ListeNomsColonnesVirgules) values($ListeValeursPdtVirgules) where T_prop_pdt.ID_produit = T_pdt.ID_produit");
$ins_Tproppdt->execute || die "Pb insertion : $DBI::errstr";
$ins_Tproppdt->finish;
$dbh->disconnect; |
Partager