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 :

comparer des valeurs


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    345
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 345
    Points : 90
    Points
    90
    Par défaut comparer des valeurs
    Bonjour tout le monde;
    j'ai un parametre d'entrée pour une requete et un autre de sortie et je veux les comparer, 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
     
     
    #$code param entreé
    #$id_cli sorti (requete)
     
     my($code) = $cgi->param("code");
      my($client) = $cgi->param("client");
     # rechercher l'existance du code
      my ($con)="select id_cli from client where id_cli='$code';";
      my $v =$db->prepare($con);
      $v-> execute()|| die "pb de selection : $DBI::errstr";
      while (my  ($id_cli) = $v -> fetchrow_array)
        {
        if ($id_cli ne $code) # ma comparaison j'ai essaye (!=) 
       {print "coucou c moi result: $id_cli\n\t ";
       }
       };
    mon code est il correcte et pourquoi la comparaison entre $code et $id_cli ne marche pas
    Merci.

  2. #2
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Attention, on n'est pas en shell !
    Si tes valeurs sont des nombres, les opérateurs de comparaisons usuels (==, <=, >=, <, >) sont requis. ne ou uq ne concernent que les chaînes de caractères.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    345
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 345
    Points : 90
    Points
    90
    Par défaut
    resalut,
    je suis connecte a une base mysql et
    mes valeurs sont des (varchar),j'ai essaye avec les operateurs:
    quel operateur on utilise pour la difference et est ce mon code est juste
    Merci

  4. #4
    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 : 498 771
    Points
    498 771
    Par défaut
    si tu compare des nombre, different c'est LA FAQ est là pour ça!!!

  5. #5
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Il a marqué qu'il a déjà essayé "!=", à mon avis le problème est plutôt dans les valeurs comparées : tu devrais essayer de les imprimer toutes les deux pour voir ce qui cloche (enfin un exemple pour $id_cli bien sûr).

    --
    Jedaï

  6. #6
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    345
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 345
    Points : 90
    Points
    90
    Par défaut
    resalut dgibril;
    tu n'as pas lu mon code tres bien il y a un commentaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        { 
        if ($id_cli ne $code) # ma comparaison j'ai essaye (!=) 
       {print "coucou c moi result: $id_cli\n\t "; 
       } 
       };
    relis svp mon code et dis en premier lieu le code est il exacte et une autre idée.
    Merci.

  7. #7
    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 : 498 771
    Points
    498 771
    Par défaut
    faut voir ce que tu compares!!
    montre nous un exemple. Il se peut que ce soit de temps en temps des chiffres ou chaine de caracteres. Est ce dustyle (222 ou id222)
    Bref, as tu un message d'erreur te spécifiant isn't numeric .....

  8. #8
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    345
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 345
    Points : 90
    Points
    90
    Par défaut
    ok dgibril;
    1-je ne recois aucun message
    2-le param d'entrer s'il existe ca marche
    je te donne tout le 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    #!C:/perl/bin/perl.exe -w
    use strict;
    use DBI;
    use CGI;
    my($cgi) = new CGI;
    print "Content-type: text/html\n\n";
      #Connection à la base de données mysql GTech
      my $db = DBI -> connect (("dbi:mysql:dbname=gtech;host=localhost;","root","******")) or die "connection impossible!";
     
      #insertion d'une donnée
      my($code) = $cgi->param("code");
      my($client) = $cgi->param("client");
     # rechercher l'existance du code
      my ($con)="select id_cli from client where id_cli='$code';";
      my $v =$db->prepare($con);
      $v-> execute()|| die "pb de selection : $DBI::errstr";
     while (my  ($id_cli) = $v -> fetchrow_array)
           {
         if
           ($code!=$id_cli)
          {   $db->do("insert into client values ('$code', '$client');");
            print "enregistrer le resultat: $code ";}
             else
           {print("Existe deja .")}
     
           }
           $v-> finish();
    remarque : si j'entre un code existant dans la table la reponse est bonne (existe deja) mais si le code n'existe pas pas d'insertion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     ma table client se presente comme suivant:
    structure:
    CREATE TABLE `client` (
      `ID_CLI` varchar(10) NOT NULL default '',
      `INTITULE` varchar(10) default NULL,
      PRIMARY KEY  (`ID_CLI`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1
    Enregistrement:
    1 pp
    2 kkk
    12 gfjjhj
    j'espere que j'etais clair sinon je suis la.
    Encore merci.

  9. #9
    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 : 498 771
    Points
    498 771
    Par défaut
    ok j'ai compris qu'il n'insert pas. Mais est ce qu'il t'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    enregistrer le resultat:

  10. #10
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    345
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 345
    Points : 90
    Points
    90
    Par défaut
    non;
    la page de sorti est vide.

  11. #11
    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 : 498 771
    Points
    498 771
    Par défaut
    un truc tout bete, essaye de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
           ($code!=$id_cli)
    par
         ($id_cli!=$code)

  12. #12
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Je rejoins l'idée de Jedai.
    Il faudrait que tu affiches tes valeurs pour voir si elles contiennent quelque chose.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  13. #13
    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 : 498 771
    Points
    498 771
    Par défaut
    je suis d'accord avec David, donc jedai
    Je viens de faire un script similaire chez moi et pas de souci, donc faut savoir ce que tu compares.
    Un conseil aussi, remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $db->do("insert into client values ('$code', '$client');"); 
    par
    $db->do("insert into client values ('$code', '$client');") || die "pb insertion";

  14. #14
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    345
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 345
    Points : 90
    Points
    90
    Par défaut
    je crois que j'ai cerne le probleme .
    si la valeur de la requete est vide (un nouveau enregistrement ca passe pas ) il ne traite pas le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while (my ($id_cli) = $v -> fetchrow_array)
           {
         if
        ($id_cli!=$code )
           {
           $db->do("insert into client values ('$code', '$client');");
             print "enregistr result: $id_cli ";}
              else
           {print("Existe deja \n.")
     
           };
     };
    et si le contraire fin ca passe par le traitement (si le code existe ).
    y'a t il un moyen .

  15. #15
    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 : 498 771
    Points
    498 771
    Par défaut
    c'est normal!!!
    Si ta requete sql est vide, perl ne rentre pas dans le while (normal, et dans ce cas, les if ne sont pas verifiés). Par contre s'il y a au moins un enregistrement, ça devrait etre bon.
    Mais bon, tu peux toujours recuperer le nombre de resultats. Va lire la doc CPAN de dbd::mysql

  16. #16
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    345
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 345
    Points : 90
    Points
    90
    Par défaut
    je vous remercie.
    j'ai trouvée la solution.
    si ca vous interesse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    my $nb=$v-> execute()|| die "pb de selection : $DBI::errstr";
    if ($nb==0) {
      $db->do("insert into client values ('$code', '$client');");
      print "Enregistrer"}
     
      else
           {
           {print("Existe deja \n.")
     
           };
     };
    Merci.

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

Discussions similaires

  1. [VBA-E] Comparer des valeurs dans des cellules
    Par michel2662 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 22/06/2017, 15h00
  2. [Lazarus] MD5 : comment comparer des valeurs entre elles ?
    Par MedGIR dans le forum Lazarus
    Réponses: 1
    Dernier message: 26/08/2009, 21h30
  3. comparer des valeurs binaires en algèbre
    Par novices dans le forum Langage
    Réponses: 1
    Dernier message: 12/03/2007, 23h55
  4. [Tableaux] Comparer des valeurs dans un tableau
    Par Dirty Harry dans le forum Langage
    Réponses: 13
    Dernier message: 03/02/2007, 00h52
  5. Comparer des valeurs.
    Par Fred2209 dans le forum C++
    Réponses: 5
    Dernier message: 14/12/2006, 00h32

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