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

Langage Perl Discussion :

[Probléme] Script copie dans un fichier


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut [Probléme] Script copie dans un fichier
    Voici mon probleme
    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
    open(FIC,'>test') || die("Pb d’ouverture\n");   
        print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
        print FIC ("<!DOCTYPE ficAlimMENESR SYSTEM \"ficAlimMENESR.dtd\">\n");
        print FIC ("<ficAlimMENESR>\n");
    #comment inséré mon print (ou printf si il faut) dans ma boucle pour y retrouver tout les informations merci
        while(my $r = $request->fetchrow_hashref) {
            print "  <modifyRequest>\n";
            foreach (sort keys(%$r)) 
            {
                print "    <$_>$r->{$_}</$_>\n";
            }
            print "  </modifyRequest>\n";
        }
    
       print FIC ("<ficAlimMENESR>\n");
    close(FIC);

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 583
    Points : 2 031
    Points
    2 031
    Par défaut
    Citation Envoyé par maloute80 Voir le message
    Voici mon probleme
    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
    open(FIC,'>test') || die("Pb d’ouverture\n");   
        print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
        print FIC ("<!DOCTYPE ficAlimMENESR SYSTEM \"ficAlimMENESR.dtd\">\n");
        print FIC ("<ficAlimMENESR>\n");
    #comment inséré mon print (ou printf si il faut) dans ma boucle pour y retrouver tout les informations merci
        while(my $r = $request->fetchrow_hashref) {
            print "  <modifyRequest>\n";
            foreach (sort keys(%$r)) 
            {
                print "    <$_>$r->{$_}</$_>\n";
            }
            print "  </modifyRequest>\n";
        }
    
       print FIC ("<ficAlimMENESR>\n");
    close(FIC);
    Bonjour. Ta question manque de clarté. Que cherches-tu à faire ???

    Pour le peu que j'ai compris, la soluce se trouve là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while(my $r = $request->fetchrow_hashref) {
            print FIC "  <modifyRequest>\n";
            foreach (sort keys(%$r)) 
            {
                print FIC "    <$_>$r->{$_}</$_>\n";
            }
            print FIC "  </modifyRequest>\n";
        }
    Mais ça me semble tellement évident que ça ne doit pas répondre à ta question.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    Code :

    while(my $r = $request->fetchrow_hashref) {
    print FIC " <modifyRequest>\n";
    foreach (sort keys(%$r))
    {
    print FIC " <$_>$r->{$_}</$_>\n";
    }
    print FIC " </modifyRequest>\n";
    }
    Merci bcq (est oui tout simple mais je ne peut pas lancer mon script sans être sur )

    voila mon autre probleme qui est apparut je voudrai savoir comment lui demander affichier la premier info de ma boucle car ce que je fait ne m'affiche rien
    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
     
    open(FIC,'>test') || die("Pb d’ouverture\n");   
     
            print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
            print FIC ("<!DOCTYPE ficAlimMENESR SYSTEM \"ficAlimMENESR.dtd\">\n");
            print FIC ("<ficAlimMENESR>\n\n");
     
        while(my $r = $request->fetchrow_hashref) 
        {
            print FIC ("  <addRequest>\n");
            print FIC ("    <operationalAttributes>\n");
            print FIC ('      <attr name="categoriePersonne">' . "\n");
            print FIC ("        <value>Boucher</value>\n");
            print FIC ("      </attr>\n");
            print FIC ("    </operationalAttributes>\n");
            print FIC ("    <identifier>\n");
    #$r->{$1} pour afficher la premier ligne seulement mais rien :'( 
            print FIC ("      <id>$r->{$1}</id>\n");
            print FIC ("    </identifier>\n");
            print FIC ("    <attributes>\n");
        foreach (sort keys(%$r)) 
         {
            print FIC ("      <$_>$r->{$_}</$_>\n");
         }
            print FIC ("    </attributes>\n");
            print FIC ("  </addRequest>\n\n");
        }
     
        print FIC ("</ficAlimMENESR>\n");
     
    close(FIC);
    D'avance merci.

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 583
    Points : 2 031
    Points
    2 031
    Par défaut
    Citation Envoyé par maloute80 Voir le message
    Merci bcq (est oui tout simple mais je ne peut pas lancer mon script sans être sur )

    voila mon autre probleme qui est apparut je voudrai savoir comment lui demander affichier la premier info de ma boucle car ce que je fait ne m'affiche rien
    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
     
    open(FIC,'>test') || die("Pb d’ouverture\n");   
     
            print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
            print FIC ("<!DOCTYPE ficAlimMENESR SYSTEM \"ficAlimMENESR.dtd\">\n");
            print FIC ("<ficAlimMENESR>\n\n");
     
        while(my $r = $request->fetchrow_hashref) 
        {
            print FIC ("  <addRequest>\n");
            print FIC ("    <operationalAttributes>\n");
            print FIC ('      <attr name="categoriePersonne">' . "\n");
            print FIC ("        <value>Boucher</value>\n");
            print FIC ("      </attr>\n");
            print FIC ("    </operationalAttributes>\n");
            print FIC ("    <identifier>\n");
    #$r->{$1} pour afficher la premier ligne seulement mais rien :'( 
            print FIC ("      <id>$r->{$1}</id>\n");
            print FIC ("    </identifier>\n");
            print FIC ("    <attributes>\n");
        foreach (sort keys(%$r)) 
         {
            print FIC ("      <$_>$r->{$_}</$_>\n");
         }
            print FIC ("    </attributes>\n");
            print FIC ("  </addRequest>\n\n");
        }
     
        print FIC ("</ficAlimMENESR>\n");
     
    close(FIC);
    D'avance merci.
    Si j'ai bien compris, tu veux juste afficher le 1er enregistrement ?

    Solution :

    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
     
    my $enregistrement_trouve = 0;
     
    open(FIC,'>test') || die("Pb d’ouverture\n");   
     
            print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
            print FIC ("<!DOCTYPE ficAlimMENESR SYSTEM \"ficAlimMENESR.dtd\">\n");
            print FIC ("<ficAlimMENESR>\n\n");
     
        while(my $r = $request->fetchrow_hashref) 
        {
            print FIC ("  <addRequest>\n");
            print FIC ("    <operationalAttributes>\n");
            print FIC ('      <attr name="categoriePersonne">' . "\n");
            print FIC ("        <value>Boucher</value>\n");
            print FIC ("      </attr>\n");
            print FIC ("    </operationalAttributes>\n");
            print FIC ("    <identifier>\n");
    #$r->{$1} pour afficher la premier ligne seulement mais rien :'( 
            if (! $enregistrement_trouve)
            {
                    print FIC ("      <id>$r->{$_}</id>\n");
                    ++$enregistrement_trouve;
            }
            print FIC ("    </identifier>\n");
            print FIC ("    <attributes>\n");
        foreach (sort keys(%$r)) 
         {
            print FIC ("      <$_>$r->{$_}</$_>\n");
         }
            print FIC ("    </attributes>\n");
            print FIC ("  </addRequest>\n\n");
        }
     
        print FIC ("</ficAlimMENESR>\n");
     
    close(FIC);
    Sinon, je te suggère (si tu ne le fais pas encore) d'utiliser 2 packages Perl fort pratiques : strict et warnings.

    Le premier t'oblige à déclarer tes variables dans le script Perl (avec my comme dans mon exemple pour la variable $enregistrement_trouve) et le second t'affiche les erreurs que le compilateur de Perl aura trouvé dans ton script durant son exécution (si toutefois il s'exécute). Redirige (c'est un exemple) le canal d'erreur STDERR dans un fichier log, ainsi tu auras les erreurs conservées bien au chaud dans un log.

    Pour te montrer le truc :

    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
     
    use strict;
    use warnings;
     
    open(STDERR, ">mon_log.log") or die("Pb pour écrire le fichier log : $!\n");
     
    my $enregistrement_trouve = 0;
     
    open(FIC,'>test') || die("Pb d’ouverture\n");   
     
            print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
            print FIC ("<!DOCTYPE ficAlimMENESR SYSTEM \"ficAlimMENESR.dtd\">\n");
            print FIC ("<ficAlimMENESR>\n\n");
     
        while(my $r = $request->fetchrow_hashref) 
        {
            print FIC ("  <addRequest>\n");
            print FIC ("    <operationalAttributes>\n");
            print FIC ('      <attr name="categoriePersonne">' . "\n");
            print FIC ("        <value>Boucher</value>\n");
            print FIC ("      </attr>\n");
            print FIC ("    </operationalAttributes>\n");
            print FIC ("    <identifier>\n");
    #$r->{$1} pour afficher la premier ligne seulement mais rien :'( 
            if (! $enregistrement_trouve)
            {
                    print FIC ("      <id>$r->{$_}</id>\n");
                    ++$enregistrement_trouve;
            }
            print FIC ("    </identifier>\n");
            print FIC ("    <attributes>\n");
        foreach (sort keys(%$r)) 
         {
            print FIC ("      <$_>$r->{$_}</$_>\n");
         }
            print FIC ("    </attributes>\n");
            print FIC ("  </addRequest>\n\n");
        }
     
        print FIC ("</ficAlimMENESR>\n");
     
    close(FIC);

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    Tout d'abord merci pour le fichier de log c'est hyper pratique
    en revanche dans le code suivant que tu ma fournit
    il me met des erreurs dans le fichier log et la variable ne saffiche pas
    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
     
    use strict;
    use warnings;
     
    open(STDERR, ">mon_log.log") or die("Pb pour écrire le fichier log : $!\n");
     
    my $enregistrement_trouve = 0;
     
    open(FIC,'>test') || die("Pb d’ouverture\n");   
     
            print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
            print FIC ("<!DOCTYPE ficAlimMENESR SYSTEM \"ficAlimMENESR.dtd\">\n");
            print FIC ("<ficAlimMENESR>\n\n");
     
        while(my $r = $request->fetchrow_hashref) 
        {
            print FIC ("  <addRequest>\n");
            print FIC ("    <operationalAttributes>\n");
            print FIC ('      <attr name="categoriePersonne">' . "\n");
            print FIC ("        <value>Boucher</value>\n");
            print FIC ("      </attr>\n");
            print FIC ("    </operationalAttributes>\n");
            print FIC ("    <identifier>\n");
            if (! $enregistrement_trouve)
            {
    #Toujours rien en résultat
    #ligne 132 en desous
                    print FIC ("      <id>$r->{$_}</id>\n");
                    ++$enregistrement_trouve;
            }
            print FIC ("    </identifier>\n");
            print FIC ("    <attributes>\n");
        foreach (sort keys(%$r)) 
         {
    #ligne 139 en desous
            print FIC ("      <$_>$r->{$_}</$_>\n");
         }
            print FIC ("    </attributes>\n");
            print FIC ("  </addRequest>\n\n");
        }
     
        print FIC ("</ficAlimMENESR>\n");
     
    close(FIC);
    Erreurs logs
    Use of uninitialized value in hash element at ./sybase.pl line 132.
    Use of uninitialized value in concatenation (.) or string at ./sybase.pl line 132.
    Use of uninitialized value in concatenation (.) or string at ./sybase.pl line 139.
    Use of uninitialized value in concatenation (.) or string at ./sybase.pl line 139.

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 583
    Points : 2 031
    Points
    2 031
    Par défaut
    Le problème se situe sur les lignes 132 et 139 de ton script.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    Le problème se situe sur les lignes 132 et 139 de ton script.
    Oui je vois bien mais voit tu une erreur de syntaxe ou une meilleur syntaxe à utilisé sur ces lignes en question.

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 583
    Points : 2 031
    Points
    2 031
    Par défaut
    Citation Envoyé par maloute80 Voir le message
    Oui je vois bien mais voit tu une erreur de syntaxe ou une meilleur syntaxe à utilisé sur ces lignes en question.
    Hum... Comment veux-tu que je puisse voir où se situe le pb des lignes 132 et 139 si je ne les connais pas ???

    Toi seul a le code

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    Je l'ai est mit en commentaire dans le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #ligne 132 en desous
                    print FIC ("      <id>$r->{$_}</id>\n");
                    ++$enregistrement_trouve;
            }
            print FIC ("    </identifier>\n");
            print FIC ("    <attributes>\n");
        foreach (sort keys(%$r)) 
         {
    #ligne 139 en desous
            print FIC ("      <$_>$r->{$_}</$_>\n");
    désoler j'aurai plus le faire resortir

  10. #10
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 583
    Points : 2 031
    Points
    2 031
    Par défaut
    Quand tu fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(my $r = $request->fetchrow_hashref)
    Sais-tu exactement comment récupérer le contenu affecté à $r par la requète SQL ?

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    oui avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        foreach (sort keys(%$r)) 
         {
            print FIC ("      <$_>$r->{$_}</$_>\n");
         }
    je récupére la valeur de $r

  12. #12
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 583
    Points : 2 031
    Points
    2 031
    Par défaut
    alors il se trouve qu'un de tes enregistrements contienne une info NULL (ou vide) dans la table que tu interroges car a priori, à un moment ou l'autre $_ est undef (non défini) dans ce que tu es censé récupérer de la base de données

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    Dans mon fichier voila ce que je trouve(Je n'est pas tout mit)
    ...
    <code_annee_scolaire>2007</code_annee_scolaire>
    <date_naissance_eleve>mer 29 jan 1986 00:00:00</date_naissance_eleve>
    ...
    pour le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print FIC ("      <$_>$r->{$_}</$_>\n");
    quand pense tu?
    en revenant sur le probleme sachant que je veu juste afficher la premier valeur de "2007" ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            print FIC ("    <identifier>\n");
            if (! $enregistrement_trouve)
            {
                    print FIC ("      <id>$r->{$_}</id>\n");
                    ++$enregistrement_trouve;
            }
            print FIC ("    </identifier>\n");
    ps:si je me suis pas fait compris ou que je ne suis pas accés clair dit moi tout

  14. #14
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 583
    Points : 2 031
    Points
    2 031
    Par défaut
    Tout à l'heure, pour que tu puisses n'afficher que le 1er enregistrement, je t'ai fait rajouter quelques lignes de codes.

    Est-ce qu'en enlevant mon code (if $enregistrement_trouve, etc...), ton script t'affiche correctement ce que tu veux ?

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    le code que tu ma fournit (if $enregistrement_trouve, etc...) ne maffiche rien !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            print FIC ("    <identifier>\n");
            if (! $enregistrement_trouve)
            {
                    print FIC ("      <id>$r->{$_}</id>\n");
                    ++$enregistrement_trouve;
            }
            print FIC ("    </identifier>\n");
    résultat==>

    <identifier>
    <id></id>
    </identifier>

  16. #16
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 583
    Points : 2 031
    Points
    2 031
    Par défaut
    Citation Envoyé par maloute80 Voir le message
    le code que tu ma fournit (if $enregistrement_trouve, etc...) ne maffiche rien !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            print FIC ("    <identifier>\n");
            if (! $enregistrement_trouve)
            {
                    print FIC ("      <id>$r->{$_}</id>\n");
                    ++$enregistrement_trouve;
            }
            print FIC ("    </identifier>\n");
    résultat==>
    Modifie cette partie de ton code STP pour qu'il devienne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    print FIC ("    <identifier>\n");
    #        if (! $enregistrement_trouve)
    #       {
                    print FIC ("      <id>$r->{$_}</id>\n");
    #                ++$enregistrement_trouve;
    #        }
            print FIC ("    </identifier>\n");

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    Toujours rien !!
    Voila mon script
    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
     
    #!/usr/bin/perl
     
    use DBI;
    use strict;
    use warnings;
     
    ###################################################
    my $sybase = DBI->connect('dbi:Sybase:xxx','yyy','zzz') 
    or die "\nConnection Sybase:xxx échoué       [ERREUR]$DBI::errstr\n\n";
    print "\nConnection Sybase:xxx bien effectué         [OK]\n";
    ###################################################
    my $request = $sybase->prepare("SELECT DBA.www.idxxx,
                                           DBA._v_www.date_naissance_www,
                                           DBA._v_www.nom_www,
                                           DBA._v_www.prenom_www,
    			              FROM DBA._v_www			
    			              WHERE (DBA._v_www.yyy_annee_scolaire='2007-2008')
    			              ORDER BY DBA._v_www.id_propre_a_yyy");
    $request->execute();
    print "\nRequête Sybase:xxx bien effectué            [OK]\n";
    ###################################################
    open(STDERR, ">mon_log.log") or die("Pb pour écrire le fichier log : $!\n");
     
    my $enregistrement_trouve = 0;
     
    open(FIC,'>test') || die("Pb d’ouverture\n");   
     
            print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
            print FIC ("<!DOCTYPE ficAlimMENESR SYSTEM \"ficAlimMENESR.dtd\">\n");
            print FIC ("<ficAlimMENESR>\n\n");
     
        while(my $r = $request->fetchrow_hashref) 
        {
            print FIC ("  <addRequest>\n");
            print FIC ("    <operationalAttributes>\n");
            print FIC ('      <attr name="categoriePersonne">' . "\n");
            print FIC ("        <value>www</value>\n");
            print FIC ("      </attr>\n");
            print FIC ("    </operationalAttributes>\n");
            print FIC ("    <identifier>\n");
    #       if (! $enregistrement_trouve)
    #       {
            print FIC ("      <id>$r->{$_}</id>\n");
    #               ++$enregistrement_trouve;
    #       }
            print FIC ("    </identifier>\n");
            print FIC ("    <attributes>\n");
        foreach (sort keys(%$r)) 
         {
            print FIC ("      <$_>$r->{$_}</$_>" . "\n");
         }
            print FIC ("    </attributes>\n");
            print FIC ("  </addRequest>\n\n");
        }
     
        print FIC ("</ficAlimMENESR>\n");
     
    close(FIC);
    ###################################################
    $sybase->disconnect || die "\nDéconnection Sybase:xxx échoué       [ERREUR]$DBI::errstr\n\n";
    print "\nDéconnection Sybase:xxx bien effectué       [OK]\n\n";
    Voila ce que ca me donne
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ficAlimMENESR SYSTEM "ficAlimMENESR.dtd">
    <ficAlimMENESR>

    <addRequest>
    <operationalAttributes>
    <attr name="categoriePersonne">
    <value>Eleve</value>
    </attr>
    </operationalAttributes>
    <identifier>
    <id></id>
    </identifier>
    <attributes>
    <code>yyyzzzxxx</code>
    <date_naissance_eleve>yy zz gggg</date_naissance_eleve>
    <nom_eleve>toto</nom_eleve>
    <prenom_eleve>tata</prenom_eleve>
    </attributes>
    </addRequest>

    #"etc"#

    </ficAlimMENESR>
    et ce que ca doit donner projet final
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ficAlimMENESR SYSTEM "ficAlimMENESR.dtd">
    <ficAlimMENESR>

    <addRequest>
    <operationalAttributes>
    <attr name="categoriePersonne">
    <value>www</value>
    </attr>
    </operationalAttributes>
    <identifier>
    <id>"valeurx.1"</id>
    </identifier>
    <attributes>
    <attr name="ENTwwwJointure"><value>"valeurx.1"</value></attr>
    <attr name="ENTwwwDateNaissance"><value>"date"</value></attr>
    <attr name="sn"><value>"nom1"</value></attr>
    <attr name="givenName"><value>"prénom1"</value></attr>
    </attributes>
    </addRequest>

    #"etc"#

    </ficAlimMENESR>
    merci à toi Arioch pour tout ton courage et ta patiente
    aidez moi

  18. #18
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 583
    Points : 2 031
    Points
    2 031
    Par défaut
    Juste une idée au hasard (sinon, je ne vois pas où ça coince)

    Si tu remplaçais dans ton code la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print FIC ("      <$_>$r->{$_}</$_>" . "\n");
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print FIC ("      <$_>$r{$_}</$_>" . "\n");
    Qu'est-ce que ça donne ?

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    voila :'(
    Global symbol "%r" requires explicit package name at ./sybase.pl line 122.

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 26
    Points
    26
    Par défaut
    Par rapport au résultat voulu il y aurai -t-il pas un moyen enlever tout la parti e inscription dans le fichier (ecriture de la requete) par une autre boucle plus simple, un tableaux ou autre chose??

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VB Script] Problème de copie dans répertoire
    Par ben_harper dans le forum VBScript
    Réponses: 3
    Dernier message: 19/06/2006, 10h25
  2. Problème de lecture dans un fichier xml
    Par Pyra dans le forum Langage
    Réponses: 2
    Dernier message: 18/12/2005, 00h13
  3. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15
  4. Problème d'écriture dans un fichier xml
    Par vanoou dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/07/2005, 02h28
  5. Réponses: 2
    Dernier message: 01/06/2004, 12h47

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