Soutenez-nous
Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Nouveau Membre du Club
    Homme Profil pro Vincent Sphax
    Étudiant
    Inscrit en
    avril 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent Sphax
    Âge : 25
    Localisation : France, Finistère (Bretagne)

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

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

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

    Informations forums :
    Inscription : août 2005
    Messages : 561
    Points : 778
    Points
    778

    Par défaut

    Plusieurs erreurs sont à signaler

    Déjà pour te faciliter la vie, commence tes scripts en utilisant
    Code :
    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 :
    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 :
    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 Vincent Sphax
    Étudiant
    Inscrit en
    avril 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent Sphax
    Âge : 25
    Localisation : France, Finistère (Bretagne)

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

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

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •