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 :

Select dans des arrays


Sujet :

SGBD Perl

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 44
    Points : 42
    Points
    42
    Par défaut Select dans des arrays
    Bonjour,

    Je souhaiterais récupérer 3 colonnes d'une bdd en sqlite, les mettre dans 3 tableaux (ou un seul) et afficher leurs valeurs ligne par ligne.

    Par la suite je ferai une interface pour les afficher joliment via sans doute le module Tk.

    C'est mon premier programme et j'ai quelques difficultés, voici mon code :

    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
    use DBI;
     
    #connection to db...
     
    my $rowDate 	= "date"; 
    my $rowText 	= "text";
    my $rowFlags 	= "flags";
    my $table	= "message";
    my (@dates, @messages, @sender);
    my $i = 0;
     
     
    my $sth = $dbh->prepare( "select $rowDate, $rowText, $rowFlags from $table" );
    $sth->execute( );
    while ( (@dates, @messages, @sender) = $sth->fetchrow_array ) {
         print "Date: "; print scalar(localtime($dates[i])); print ", Message: "; 
         print $messages[i]; print ", Qui: "; print $sender[i]; print ".\n";
         $i++;
    }
    Seuls les champs de date s'affichent correctement. Les messages et sender ne sortent rien. Alors que quand je fais une requête simple pour seulement l'un de ces champs, tout s'affiche correctement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ( (@messages) = $sth->fetchrow_array ) {
    	#print ", Message: "; print $messages[i];
    	#$i++;
    }
    Etant débutant en Perl (je viens du C), je ne comprends pas quelle est l'erreur qui est sûrement ici : while ( (@dates, @messages, @sender) = $sth->fetchrow_array ) .

    Pourriez-vous m'aider ?
    Merci d'avance.

  2. #2
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    Plusieurs erreurs sont à signaler

    Déjà pour te faciliter la vie, commence tes scripts en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/perl
     
    # be strict
    use strict;
    use warnings;
    cela te permettra de filtrer quelques unes de tes erreurs, comme par exemple le $dates[i]

    ensuite il y a plus simple pour récupérer ces infos:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ( my ($date, $message, $sender) = $sth->fetchrow_array ) {
         print "Date: "; print $date; print ", Message: "; 
         print $message; print ", Qui: "; print $sender; print ".\n";
    }
    le fetch_rowarray renvoie une liste de valeurs, et je les assigne aux variables que j'affiche ensuite

    Edit: d'après ton premier post, tu veux stocker ces lignes pour une utilisation ultérieure. Dans ce cas il faut stocker tes lignes dans une structure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    my @all_lines;
    while ( my @array = $sth->fetchrow_array ) {
         my ($date, $message, $sender) = @array;
         push @all_lines, @array; #stocke les lignes dans un array pour plus tard
         print "Date: "; print $date; print ", Message: "; 
         print $message; print ", Qui: "; print $sender; print ".\n";
    }
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 44
    Points : 42
    Points
    42
    Par défaut
    Je te remercie, c'était exactement ce dont j'avais besoin ! D'ailleurs tu m'as directement mâché tout le travail, j'avais plus rien à faire

    Maintenant que cette partie est terminée, je me lance dans la partie graphique. Et c'est pas glorieux encore ! ....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher Une requete Select dans des textbox
    Par MkcookieFIFO dans le forum Windows Forms
    Réponses: 8
    Dernier message: 19/03/2010, 10h21
  2. Requête SELECT dans un Array
    Par dj-julio dans le forum Langage
    Réponses: 3
    Dernier message: 26/01/2010, 15h04
  3. Selection dans des tables differentes
    Par lounislounis dans le forum Requêtes
    Réponses: 1
    Dernier message: 25/01/2010, 17h40
  4. [MySQL] stoker le résultat d'un select dans un array
    Par hraiwen dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 04/08/2009, 14h24
  5. [Tableaux] Insérer des arrays dans des arrays
    Par DJ Caësar 9114 dans le forum Langage
    Réponses: 2
    Dernier message: 01/06/2009, 13h03

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