p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Nouveau Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : avril 2012
    Messages : 42
    Points : 31
    Points
    31

    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 émérite Avatar de Gardyen
    Profil pro
    Inscrit en
    août 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 605
    Points : 869
    Points
    869

    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
    Nouveau Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : avril 2012
    Messages : 42
    Points : 31
    Points
    31

    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 Fonctions
    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. stoker le résultat d'un select dans un array
    Par hraiwen dans le forum PHP & MySQL
    Réponses: 6
    Dernier message: 04/08/2009, 14h24
  5. [Tableaux] Insérer des arrays dans des arrays
    Par Cesar9114 dans le forum Fonctions
    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