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 :

Newbie : j'ai un soucis avec mon code


Sujet :

SGBD Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 16
    Points : 15
    Points
    15
    Par défaut Newbie : j'ai un soucis avec mon code
    Bonjour a tous,

    je me suis mis ce matin a Perl car je risque d'en avoir besoin pour effectuer des traitement sur une base de donnée mysql.
    Soyez indulgents pour mes erreurs, d'ici quelques jours je pense progresser.

    voici mon problème :

    j'effectue une requête sur ma base de données, et je souhaiterai comparer le résultat avec une valeur.

    shéma de ma table "toutes":

    id host ip
    1 192.168.1.81 192.168.1.81
    2 192.168.1.85 192.168.1.85
    3 192.168.1.86 192.168.1.86

    le code de mar requete 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
    #!/usr/bin/perl -w
    # charger le module DBI
    use DBI;
     
    # fixer la source de données $dns (=database name source) et le compte utilisateur
    # (l'utilisateur doit bien sûr avoir les droits d'accès à cette base)
     
    $dsn   = "dbi:mysql:database=machines;host=localhost";
    $login = "root";
    $mdp   = "******";
     
    $dbh = DBI->connect($dsn, $login, $mdp) or die "Echec de la connexion\n";
     
    $table = "toutes";
    # on affiche les id des champs par ordre decroissant
    $requete = "SELECT id FROM $table WHERE 1 order by id desc";
    $sth = $dbh->prepare($requete);
     
    #execution de la requete 
    $sth -> execute();
     
    while (@enr = $sth -> fetchrow_array) {
    print "@enr\n";
    }
    $sth -> finish;
    $dbh -> disconnect;
    le resultat m'affiche ceci :
    90:~# perl testdb2.pl
    3
    2
    1
    Je souhaitai récupérer la première valeur de mon tableau pour la comparer avec une variable que j'ai définie au préalable.
    Serait il possible d'afficher en sortie uniquement le chiffre "3" ?
    Est il possible de mettre dans une variable le résultat de ma requete (en ne gardant que le première variable du tableau, le "3") ?

    Je lis la documentation sans vous cacher que je m'y perds un peu

    Merci pour ceux qui prendront le temps de lire mon "post".

    Arno

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Alors même avant de lire ton code voici mes premier conseils :
    Toujours commencer son script perl par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/usr/bin/perl
    use warnings;
    use strict;
    Ensuite lire la FAQ et doc écrites par nos soins sur developpez.com (voir lien dans ma signature).

    Bienvenu à toi et courage, tu ne sera pas deçu de perl

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while (@enr = $sth -> fetchrow_array) {
    print "@enr\n";
    }
    ton while => chaque ligne de resultat. Si tu ne veut que le premier resultat, tu peux tout simplement faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @enr = $sth -> fetchrow_array;
    Dans ce cas, tu n'obtiendra que le premier resultat de ta requete, soit 3.
    Autre remarque, étant donné que ta requete affiche le resultat d'un seul champ (id) : SELECT id FROM $table WHERE 1 order by id desc

    Tu peux écrire ton perl ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my ($id) = $sth -> fetchrow_array;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ( ($id) = $sth -> fetchrow_array) {
    print "@enr\n";
    }
    On met des parenthèses autour de $id car fetchrow_array renvoie une liste et donc écrire ainsi ($id) => liste d'une case.

    voilà

Discussions similaires

  1. [XL-2003] soucis avec mon code
    Par revemane dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/06/2009, 17h43
  2. [Conception] soucis avec mon code de recherche par un ou plusieurs critères
    Par jolipepage75 dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 11/06/2006, 02h59
  3. Souci avec mon recordcount......
    Par WyLLoU dans le forum Access
    Réponses: 14
    Dernier message: 03/02/2006, 11h59
  4. Serveur/Client UDP: comment envoyer un fichier avec mon code
    Par danje dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 21/12/2005, 14h54
  5. petit soucis avec mon graveur
    Par Vador dans le forum Périphériques
    Réponses: 8
    Dernier message: 02/11/2005, 14h58

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