Bonjour à tous
je suis en stage dans un FAI en Tunisie, et on m'a confié la tache d'envoi de sms aux clients, en gros le but de mon programme c'est de remplacer des mots clés par ceux existants, jusque là le progamme marche très bien mais dès que j'ai voulu faire la gestion d'erreur et la création d'une requête de mise à jour je rencontre un problème
voila mon code
#!/usr/bin/perl
use DBI;
$dbh = DBI->connect("DBI:mysql:envoi_sms","root","");
print("connexion réussie !\n ");
sub update {
$selec->$dbh->do("UPDATE client SET client.resultat=$_[0],client.obs=$_[1] where client.id=$_[2]")|| die "Pb de requête : $DBI::errstr";
$selec->finish;
}
sub is_empty {
return (length($_[0]));
}
sub constr_msg {
$se=$dbh->prepare("select num_adsl,login_adsl,passwd_adsl,debut_facture,echeance_facture,rest_a_payer from client where client.id=$_[0]");
$se->execute;
($a,$b,$c,$d,$e,$f)=$se->fetchrow_array;
%h=(num_adsl,$a,login_adsl,$b,passwd_adsl,$c,debut_facture,$d,echeance_facture,$e,rest_a_payer,$f);
@cle=(num_adsl,login_adsl,passwd_adsl,debut_facture,echeance_facture,rest_a_payer);
foreach $i (@cle)
{
$_[1]=~s/$i/$h{$i}/;
if($_[1]=~/$i/)
{
$t=is_empty($h{$i});
if($t==0) {
&update("6","manque d'information","$_[0]");
exit;
}
}
}
#print("$_[1] \n");
if(length($_[1])>160)
{
$long=length($_[1]);
&update("3","taille supérieur à 160 et est égale à $long ","$_[0]");
}
return($_[1]);
$se->finish;
}
$sel=$dbh->prepare("select Distinct m.id, m.body from client c, smsing s,message_model m where c.smsing=s.id
and m.id=s.message");
$sel->execute|| die"probleme de sélection !\n\n\n";
while(($id,$bo)=$sel->fetchrow_array){
#print"corps :$bo\n\n";
$sele=$dbh->prepare("select distinct c.id from client c,smsing s,message_model m where c.smsing=s.id and s.message=$id");
$sele->execute || die"pb de selection 2 !";
while(($ib)=$sele->fetchrow_array){
$res=&constr_msg("$ib","$bo");
print("$res\n\n");
#print"$id id du message , $ib id du client \n";
}
}
$sele->finish;
$sel->finish;
l'erreur qui s'affiche est :
can't call method "DBI::db=HASH(0x19e565c)" on an undefined value at ...line 9 (c'est la ligne ou il y a la requête de mise à jour)
je tiens à préciser que je suis débutant en perl et que j'ai fait plusieurs recherches avant de poster ce message
merci d'avance
ce forum est une bénédiction même nos profs nous le conseillent
Partager