| 12
 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