IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SGBD Perl Discussion :

pbm avec update


Sujet :

SGBD Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut pbm avec update
    bonjour,
    je voudrais aprés avoir parser mon fichier .txt pouvoir mettre à jour qq données de ma base de données

    voila mon code pour update
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my $sth =
      $dbh->prepare(
            "update  alarme set seuil='$seuil' and pri='$pri' where texal='REGULATION ALARMES/I' and nidal='$nidal'" );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if ( defined $pri ) {
    $sth->execute($ct, $inf1, $id_alamre, $date_al, $heure, $nidal, $texal, $typ, $cat, $dateUs, $seuil, $pri)	or die "pb de requete : $DBI::errstr";
    		}
    	($ct, $inf1, $id_alamre, $date_al, $heure, $nidal, $texal, $typ, $cat) = (undef) x 9;
    sinon en piéce jointe tout le script

    je vois pas c quoi le pbm lorsque je l'éxecute j'ai le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    C:\Program Files\EasyPHP1-8\www\traitement\trt_E10>trtalarme.pl
    Global symbol "$seuil" requires explicit package name at C:\Program Files\EasyPH
    P1-8\www\traitement\trt_E10\trtalarme.pl line 27.
    Global symbol "$pri" requires explicit package name at C:\Program Files\EasyPHP1
    -8\www\traitement\trt_E10\trtalarme.pl line 27.
    Global symbol "$nidal" requires explicit package name at C:\Program Files\EasyPH
    P1-8\www\traitement\trt_E10\trtalarme.pl line 27.
    Execution of C:\Program Files\EasyPHP1-8\www\traitement\trt_E10\trtalarme.pl abo
    rted due to compilation errors.
    merci e votre aide

  2. #2
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Bonjour,

    A priori, ton problème n'a rien à voir avec les BDD, tu oublies jutse de déclarer (avec my) les variables que tu utilises ($seuil, $prix, $nidal), ou alors tu les utilises alors qu'elles sont hors de portée.

  3. #3
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par Woufeil
    Bonjour,

    A priori, ton problème n'a rien à voir avec les BDD, tu oublies jutse de déclarer (avec my) les variables que tu utilises ($seuil, $prix, $nidal), ou alors tu les utilises alors qu'elles sont hors de portée.
    Je pense surtout qu'il n'a rien compris aux placeholders...

    --
    Jedaï

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut
    j'ai bien définis mes variables
    et si vous voulez voila mon code en entier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    use strict;
    use warnings;
    use DBI;
     
    my $pDirectory;
    my $path =  "C:/Program Files/EasyPHP1-8/www/traitement/sources";
     
     
    opendir ($pDirectory,$path)
    or die ("Directory ".$path." can't be open!\n");
     
    my @Directory_list = readdir($pDirectory);	
    closedir ($pDirectory);
     
    foreach my $File (@Directory_list)
    {
        if( $File =~ m/\.txt$/ )
        {
            #.....VOILA MON CODE POUR TRAITER TOUS LES FICHIERS DE LA LISTE.............................
    open my ($src), '<', "$path/$File" or die "E/S : $!\n";
    		# Connect to the database.
    		my $dbh = DBI->connect( "DBI:mysql:database=tdm;host=localhost",
    	    "chakri", "farid", { 'RaiseError' => 1 } );
     
    my $sth =
      $dbh->prepare(
            "update  alarme set seuil='$seuil' and pri='$pri' where texal='REGULATION ALARMES/I' and nidal='$nidal'" );
     
     
    # variable d'état pour savoir si l'on se trouve dans ule paragraphe qu'on veut imprimer ($in == 2), après une commande ($in == 1),
    # ou en dehors de tout cela ($in == 0)
    my $in = 0;
    my ( $ct, $inf1, $id_alamre, $date_al, $heure, $nidal, $texal, $typ, $cat, $seuil, $pri);
    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
    my $dateUs =  (1900+$year)."-".($mon+1)."-".$mday;
    while (<$src>) {
     
        if ( not $in and my ($cmd) = (m/\s*ALAIL/) ) {
            $in = 1;
        }
     
        elsif ( $in == 1 and m/^\s*TRAITEMENT ...... ACC/ ) {
            $in = 2;
        }
        elsif (
            $in == 2
            and m{^\!+\s+\*([\w\d]+)\/(\d{3})\s+\/(\d{2}\-\d{2}\-\d{2})\/(\d{2})\s+\w{1}\s+(\d{2})\/N=(\d{4})\/TYP=(\w{3})\/CAT=(\w{2})\/EVENT=(.*)$}x 
          )
        {
    		$date_al = $3; 
    		$heure = $4.':'.$5; 
    		$nidal = $6; 
    		$typ = $7; 
    		$cat = $8; 
        }
        elsif (
            $in == 2
            and m{^\s*\/NCEN=([\w\d]+)\s+\/(.*)$}x 
          )
        {
    		$ct = $1;
    		$inf1 = $2;
        }
        elsif ( $in == 2 and m{^\s*\/TEXAL=(.*)$}x ) {  #[\s\d]+
    			$texal = $1;
        }           
     
    	elsif ( $in == 2 and m{^\s+\/SEUIL=([\w\d]+)\s+\/PRI=([\w\d]+)$}x    ) {  #[\s\d]+
    		$seuil = $1;
    		$pri = $2;
    		$id_alamre = $ct.'_'.$dateUs.'_'.$nidal;
     
    				if ( defined $pri ) {
    				$sth->execute($ct, $inf1, $id_alamre, $date_al, $heure, $nidal, $texal, $typ, $cat, $dateUs, $seuil, $pri)
    				or die "pb de requete : $DBI::errstr";
    				}
    				($ct, $inf1, $id_alamre, $date_al, $heure, $nidal, $texal, $typ, $cat) = (undef) x 9;		
        }
     
     
        elsif ( $in == 2 and m/^\s*TRAITEMENT ...... EXC/ ) {
    		$in = 1;
     
    				if ( defined $pri ) {
    				$sth->execute($ct, $inf1, $id_alamre, $date_al, $heure, $nidal, $texal, $typ, $cat, $dateUs, $seuil, $pri)
    				or die "pb de requete : $DBI::errstr";
    				}
    				($ct, $inf1, $id_alamre, $date_al, $heure, $nidal, $texal, $typ, $cat) = (undef) x 9;	
            }
        elsif ( $in == 1 and m/^\s*EXC\s*$/ ) {
            $in = 0;
        }
    }
     
    close $src;
     
    $dbh->disconnect;
            #.....VOILA LA FIN DE MON CODE POUR TRAITER TOUS LES FICHIERS DE LA LISTE.............................
        }
    }
    merci pour votre aide

Discussions similaires

  1. Erreur de syntaxe avec UPDATE
    Par tyarak dans le forum Requêtes
    Réponses: 3
    Dernier message: 01/02/2006, 01h18
  2. Utilisation d'alias avec Update
    Par Jacques - 06 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/01/2006, 00h31
  3. pbm avec setMinimumSize()
    Par toxyshow dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 26/11/2005, 18h30
  4. pbm avec les foreigns keys.....
    Par j_bonc dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 11/06/2004, 10h23
  5. Pbm avec les '&'...
    Par AmaX dans le forum Composants VCL
    Réponses: 2
    Dernier message: 19/08/2002, 11h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo