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 d'affichage du contenu d'un tableau.


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 121
    Points : 64
    Points
    64
    Par défaut Problème d'affichage du contenu d'un tableau.
    Bonjour à toutes et à tous,

    Je un problème avec l'affichage du contenu d'un tableau.
    J'exécute une requête SQL et le résultat est un tableau.
    Je déclare une variable tableau et je mets dedans le résultat de ma requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @ordre = @ordre = $sth->fetchrow_array();
    Je voudrais aller lire le contenu du tableau ordre. J'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach my $v (@ordre) {
      print "$v\n";
    }
    L'exécution du deuxième code me donne qu'une valeur au lieu de deux.
    Pouvez-vous m'aidez, s'il vous plait ?

    Cordialement
    Dimitri.

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Citation Envoyé par dimitri13 Voir le message
    L'exécution du deuxième code me donne qu'une valeur au lieu de deux.

    Que veux-tu dire par "une valeur au lieu de deux"? Je ne comprends pas bien ton problème.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 121
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    Bonjour,




    Que veux-tu dire par "une valeur au lieu de deux"? Je ne comprends pas bien ton problème.
    Bonjour,

    Merci pour ta réponse.
    Ma requête SQL renvoie deux valeurs, mais à l'affichage j'en est qu'une.

    Cordialement
    Dimitri.

  4. #4
    Membre confirmé
    Avatar de cmcmc
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 316
    Points : 641
    Points
    641
    Par défaut
    Citation Envoyé par dimitri13 Voir le message
    Ma requête SQL renvoie deux valeurs, mais à l'affichage j'en est qu'une.
    Tu peux avoir une ligne vide si la valeur en question est NULL (ce qui se traduit par undef en perl) :
    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
    Taisha:~/perl/forum $ perl -E '
    use DBI;
    my $dbh = DBI->connect("dbi:SQLite:dbname=:memory:","","");
    $dbh->do(q{CREATE TABLE people (id INTEGER PRIMARY KEY, name VARCHAR(20))});
    {
      my $sth = $dbh->prepare("INSERT INTO people(id,name) VALUES (?,?)");
      $sth->execute(0, "alice");
      $sth->execute(1, "bob");
      $sth->execute(3, undef);
      $sth->execute(4, "dave");
    }
    {
      my $sth = $dbh->prepare("SELECT id, name FROM people");
      $sth->execute;
      my @row;
      while (@row = $sth->fetchrow_array) {
        print "# (", scalar(@row), " colonnes) ",join(" ", @row),"\n";
        for my $v (@row) {
          print "[$v]\n";
        }
      }
    }'
    # (2 colonnes) 0 alice
    [0]
    [alice]
    # (2 colonnes) 1 bob
    [1]
    [bob]
    # (2 colonnes) 3 
    [3]
    []
    # (2 colonnes) 4 dave
    [4]
    [dave]
    Taisha:~/perl/forum $
    Sauf indication contraire tous les codes que je présente sont utilisables et testés (mais sans garantie d'aucune sorte)
    J'apporte beaucoup de soin à la rédaction de mes posts et apprécie les retours donc merci de s'il vous paraissent pertinents ou utiles
    Lazyness, Impatience and Hubris are good for you

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 121
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par cmcmc Voir le message
    Tu peux avoir une ligne vide si la valeur en question est NULL (ce qui se traduit par undef en perl) :
    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
    Taisha:~/perl/forum $ perl -E '
    use DBI;
    my $dbh = DBI->connect("dbi:SQLite:dbname=:memory:","","");
    $dbh->do(q{CREATE TABLE people (id INTEGER PRIMARY KEY, name VARCHAR(20))});
    {
      my $sth = $dbh->prepare("INSERT INTO people(id,name) VALUES (?,?)");
      $sth->execute(0, "alice");
      $sth->execute(1, "bob");
      $sth->execute(3, undef);
      $sth->execute(4, "dave");
    }
    {
      my $sth = $dbh->prepare("SELECT id, name FROM people");
      $sth->execute;
      my @row;
      while (@row = $sth->fetchrow_array) {
        print "# (", scalar(@row), " colonnes) ",join(" ", @row),"\n";
        for my $v (@row) {
          print "[$v]\n";
        }
      }
    }'
    # (2 colonnes) 0 alice
    [0]
    [alice]
    # (2 colonnes) 1 bob
    [1]
    [bob]
    # (2 colonnes) 3 
    [3]
    []
    # (2 colonnes) 4 dave
    [4]
    [dave]
    Taisha:~/perl/forum $
    Bonjour cmcmc,

    Merci pour ta réponse.
    Par contre, quad j'exécute la requête directement dans PHPMyAdmin, là j'obtiens le bon résultat.

    Cordialement
    Dimitri.

  6. #6
    Membre confirmé
    Avatar de cmcmc
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 316
    Points : 641
    Points
    641
    Par défaut
    Citation Envoyé par dimitri13 Voir le message
    Par contre, quad j'exécute la requête directement dans PHPMyAdmin, là j'obtiens le bon résultat.
    Peux tu détailler ? Qu'est ce que tu vois exactement dans PHPMyAdmin que tu ne vois pas dans ton script perl ?
    Sauf indication contraire tous les codes que je présente sont utilisables et testés (mais sans garantie d'aucune sorte)
    J'apporte beaucoup de soin à la rédaction de mes posts et apprécie les retours donc merci de s'il vous paraissent pertinents ou utiles
    Lazyness, Impatience and Hubris are good for you

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 121
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par cmcmc Voir le message
    Peux tu détailler ? Qu'est ce que tu vois exactement dans PHPMyAdmin que tu ne vois pas dans ton script perl ?
    Quand j'exécute la requête dans PHPMyAdmin, j'obtiens une colonne avec deux valeurs (exemple : 6 et 7).
    Quand j'exécute le script, il m'affiche qu'une seule valeur (exemple : 6).
    Je ne sais si j'explique bien mon problème.

    Cordialement
    Dimitri.

  8. #8
    Membre confirmé
    Avatar de cmcmc
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 316
    Points : 641
    Points
    641
    Par défaut
    Citation Envoyé par dimitri13 Voir le message
    Quand j'exécute la requête dans PHPMyAdmin, j'obtiens une colonne avec deux valeurs (exemple : 6 et 7).
    Quand j'exécute le script, il m'affiche qu'une seule valeur (exemple : 6).
    Peux-tu nous montrer l'expression SQL que tu utilises pour construire $sth ? Vu d'ici j'ai l'impression que tu sélectionnes un seul champ. Dans le code que je présentais, le SQL était "SELECT id, name FROM people" ce qui veut dire qu'on sélectionne deux champs (id et name) dans la table people ; ces deux champs apparaissent dans cet ordre dans le tableau retourné par $sth->fetchrow_array. Chaque appel à $sth->fetchrow_array retourne un enregistrement, et pour obtenir des 'colonnes' il faut que tu itères sur $sth->fetchrow_array...
    Sauf indication contraire tous les codes que je présente sont utilisables et testés (mais sans garantie d'aucune sorte)
    J'apporte beaucoup de soin à la rédaction de mes posts et apprécie les retours donc merci de s'il vous paraissent pertinents ou utiles
    Lazyness, Impatience and Hubris are good for you

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/01/2008, 17h32
  2. Problème d'affichage du contenu de JPanel
    Par Mic75 dans le forum AWT/Swing
    Réponses: 12
    Dernier message: 13/12/2007, 00h53
  3. Pb d'affichage du contenu d'un tableau.
    Par sandball22 dans le forum C
    Réponses: 17
    Dernier message: 11/05/2007, 17h33
  4. [debutant]affichage du contenu d'un tableau dans du JTextField
    Par mehdi_swatch dans le forum Composants
    Réponses: 2
    Dernier message: 30/11/2006, 11h16
  5. probléme d'affichage du contenu d'un fichier
    Par developppez dans le forum C
    Réponses: 2
    Dernier message: 20/04/2006, 19h16

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