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 :

Manipulation de tableaux de tableaux


Sujet :

Langage Perl

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 65
    Points : 26
    Points
    26
    Par défaut Manipulation de tableaux de tableaux
    Salut!
    Je suis débutant en PERL. J'utilise le module DBI.
    Je fais une requête qui doit me rapporter plusieurs lignes, chacune de ces lignes contenant plusieurs champs d'informations. Pour récupérer toutes ces infos dans un tableau de tableaux, je dois bien utiliser le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            if ($typeGraph eq "sec") { 
                $query = CoMtlBindQuery($SELECT_DATA_CYCLE, num2str($stations[i][1]));
            } else {
                $query = CoMtlBindQuery($SELECT_DATA_STATION, num2str($stations[i][1]));
            }
     
            $query = CoMtlBindQuery($query, $typeVar);
            $sth = $dbh->prepare($query);
        $nb = $sth->execute();
        #-----------------------
        @res = fetchall_arrayref ;
        #-----------------------
    C'est bien ça?

    Ensuite, je souhaiterais récupérer les valeurs d'un champ précis, pour toutes les lignes, pour les placer dans un tableau. Et ce, pour plusieurs champs résultant de ma requête. Je ne sais pas si je suis très clair mais j'ai essayé comme ceci mais ça ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            $tmp_xxxx[$i]       = $res[][1] ;
            $tmp_pres[$i]       = $res[][2] ;
            $tmp_xxxx_qc[$i]    = $res[][3] ;
            $tmp_pres_qc[$i]    = $res[][3] ;
    Est-ce que quelqu'un pourrait m'aider? Pour résumer, ce que je souhaiterais faire, c'est récupérer par exemple la seconde colonne d'un tableau à 2 dimensions. Est-ce possible?

  2. #2
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    fetchall_arrayref renvoie une référence à un tableau de tableaux. donc tu dois écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res = $nb->fetchall_arrayref;
    et tu atteinds tes résultats de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    print "$res->[0][0]";
    print "$res->[0][1]";
    print "$res->[0][2]";
    print "$res->[1][0]";
    ....
    ou à la rigueur si tu veux tout voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    foreach my $ligne (@{$res}) {
         foreach my $element (@{$ligne}) {
            print "$element";
         }
         print "\n";
    }
    pour le 2ème élément de ton tableau, tu as plusieurs choix :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $res = $nb->fetchall_arrayref(2);
    foreach my $ligne (@{$res}) {
         print "$ligne[0]\n";
    }
    ici tu ne récupère que le 2ème élément de ta requête.
    sinon, si tu veux tout dans ta référence, tu fais juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach my $ligne (@{$res}) {
          print "$ligne[1]\n";
     }
    cette dernière solution ne me semble pas plus mal

    @+
    Mr6
    ps : dans ta ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query=.....$stations[i][1]
    ca ne serait pas plutôt $i ?

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    ps : dans ta ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query=.....$stations[i][1]
    ca ne serait pas plutôt $i ?
    Euh, si bien sûr, petite faute de frappe. Merci!

    En fait, ce que je veux faire, c'est récupérer le contenu d'un colonne précise et la mettre dans une nouvelle variable tableau. Ce que tu m'as conseillé ne permet que de l'afficher non? Ou peut-être ai-je mal compris? Je ne sais pas trop si j'avais bien expliqué le problème au départ...

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/05/2008, 14h28
  2. [Tableaux] 3 tableaux à la place de 2
    Par lodan dans le forum Langage
    Réponses: 11
    Dernier message: 13/08/2006, 19h41
  3. [Tableaux] Les tableaux multi-dimensionnels
    Par ludovik dans le forum Langage
    Réponses: 2
    Dernier message: 23/05/2006, 12h21
  4. tableaux C/tableaux fortran
    Par pascale_92 dans le forum C
    Réponses: 5
    Dernier message: 05/04/2006, 12h22
  5. [Tableaux] les tableaux
    Par jeanfrancois dans le forum Langage
    Réponses: 2
    Dernier message: 03/03/2006, 11h02

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