lami20j | Salut,
tu crées un module et dans ton script tu peux utiliser
Code :
- use lib "/chemin/vers/ton/module";
- use Module::DBConnect; # dans /chemin/vers/ton/module/Module on trouve le module DBConnect.pm
|
Voilà mon exemple. Pour ne par répeter les même lignes j'ai créé 3 fonctions et je les appelles.
Code :
- #! /usr/bin/perl -w
- package Module::DBConnect;
- require Exporter;
- our @ISA = qw(Exporter);
- our @EXPORT = qw(connexion selection insertion);
- use strict;
- use DBI;
- # utilisation : connexion("nom_base" )
- sub connexion {
- my $db = $_[0];
- my $db_connexion = DBI->connect("DBI:mysql:database=$db;host=localhost;mysql_socket=/tmp/mysql.sock",
- "root","xxxxxxxx",{ RaiseError => 1 } );
- return $db_connexion;
- }
- # utilisation : selection("nom_base","nom_table",tableau_champs)
- sub selection {
- my ($db,$tbl,@champ) = @_;
- my $champ;
- if(@champ){
- if(@champ==1){
- $champ=$champ[0];
- }else{
- $champ = join ",", @champ;
- }
- }else{
- $champ='*';
- }
- my $db_ = connexion($db);
- my $query = $db_->prepare("SELECT $champ FROM $tbl" );
- return $query;
- }
- # utilisation : insertion("nom_base","nom_table",reference tableau_champs, reference tableau_valeurs)
- # utilisation : insertion("nom_base","nom_table",\tableau_champs,\tableau_valeurs)
- sub insertion {
- my $db = connexion(shift @_);
- my $tbl = shift @_;
- my $chp = shift @_;
- my $val = shift @_;
- my ($champ,$valeur);
- if (ref($val)){
- foreach(@$val) {
- $_=$db->quote($_);
- }
- }else{ $val=$db->quote($val) }
- if(ref($chp)){
- $champ = join ",", @$chp;
- }else{ $champ = $chp }
- if(ref($val)){
- $valeur = join ",", @$val;
- }else{ $valeur = $val }
- $db->do("INSERT INTO $tbl ($champ) VALUES ($valeur)" );
- }
|
et le script ou j'utilise le module
Code :
- #! /usr/bin/perl -wT
- use CGI;
- use lib "/home/cgibin/cgi-bin";
- use Module::DBConnect;
- my $cgi=new CGI;
- my $mysql_sock='/tmp/mysql.sock';
- my $cmd = $cgi->param('cmd') ;
- my $question = $cgi->param('question') ;
- my $reponse = $cgi->param('reponse') ;
- my $exemple = $cgi->param('exemple') ;
- my @valeurs = ($question,$reponse,$exemple);
- my @champs = qw( q r ex );
- #alter table message convert to character set utf8;
- #set character set utf8;
- #alter table nom_table auto_increment=0
- my $db_;
- if($reponse eq "" ){
- insertion('chap_cmd_question',$cmd,'question',$question);
- }else{
- insertion('commandes_linux',$cmd,\@champs,\@valeurs);
- }
|
C'est juste un exemple. Lit plutôt la doc pour les modules.
lami20j Message édité par lami20j le 07-06-2006 à 20:31:43
|