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 :

[while] n'affiche le resultat que de la derniere ligne ?


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Par défaut [while] n'affiche le resultat que de la derniere ligne ?
    Bonjour,
    j'aurais besoin d'aide sur un script perl je suis débutant et je ne comprends pas trop la fonction "while"

    ici dans mon script j'utilise donc ce "tant que" le fichier est OK
    la requete s'execute avec la valeur par defaut $_ dans mon WHERE
    se qui devrait m'afficher a chaque ligne le resultat de $_ + la sortie de la requete
    mais je n'obtient que celui de la derniere ligne ?

    voila le script et le résultat qu'il affiche :

    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
    36
    37
    38
    39
    40
    #!D:\perl\bin\perl.exe
     
    #Module necessaire a la connexion aux base et l'ouverture de fichier excel  
     
    use DBI;
     
    #login mot de passe d'acces base
    $dbname="a";
    $dbuser="b";
    $dbpass="c";
     
    #Connexion a la base
     
    my $dbh = DBI->connect("dbi:Oracle:$dbname", $dbuser, $dbpass, {AutoCommit => 0})
                 || die "Unale to connect to $dbname: $DBI::errstr\n";
     
    open(FILEIN,'<c:\\zapzonein');
     
    $i = 0;
    while(<FILEIN>)
    	{
     	$i ++;
    	print "$_";
     
    			$query=" ma requete , en utilisant $_ dans le WHERE ";
     
    			$sth = $dbh->prepare($query);
    			$sth->execute();
    			@ligne = $sth->fetchrow_array;
    			print "@ligne\n";
     
    			open(FILEOUT,'>c:\\zapzoneout');
    			print FILEOUT "@ligne\n";
     
    	}
     
    			$sth->finish();
     			$dbh->disconnect || warn $dbh->errstr;
    			close FILEIN || die "Problème à la fermeture : $!";
    			close FILEOUT || die "Problème à la fermeture : $!";
    Le résultat:
    654
    167
    456
    167 N B V

    Alors que je voudrais obtenir :
    654
    167 N B V
    456
    167 N B V

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Ma supposition va être : tu as oublié de mettre un chomp($_), et ton fichier ne se termine pas par un saut à la ligne, donc seule la dernière ligne du fichier marche... (une requête SQL avec un saut de ligne dedans ne doit pas marcher des masses !)

    Par ailleurs, ça serait beaucoup plus facile de lire ton code si tu le mettais entre balises code (avec le bouton # de l'interface de présentation du forum). Et peut-être que tu pourrais utiliser les placeholders pour faire ton prepare() en dehors de la boucle, et rendre ton programme plus sûr par la même occasion.

    --
    Jedaï

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Par défaut Merci problème résolu
    c'est vrai que sa marche beaucoup mieu avec un chomp($_) , je ne connaissai pas cette fonction , faut dire que je n'ai que quelques heures de programmation Merci pour ton aide.
    je n'ai plus qu'à progrèsser dans la methode des scripts

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

Discussions similaires

  1. [rave report 5.0] afficher le resultat d'un calcul
    Par webbulls dans le forum Bases de données
    Réponses: 10
    Dernier message: 16/07/2009, 12h14
  2. Afficher le resultat dans la meme page que le formulaire
    Par info_plus dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 18/07/2007, 10h17
  3. Comment afficher le resultat d'une requete?
    Par Looping94510 dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 11/02/2005, 08h42
  4. Réponses: 4
    Dernier message: 03/11/2004, 12h09
  5. [web] afficher le résultat d'un script cgi en perl
    Par Leishmaniose dans le forum Web
    Réponses: 8
    Dernier message: 10/06/2004, 18h36

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