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 :

has_selected_record: action déterminé en fonction du résultat renvoyé par un SELECT


Sujet :

SGBD Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 68
    Points : 46
    Points
    46
    Par défaut has_selected_record: action déterminé en fonction du résultat renvoyé par un SELECT
    Bonjour,

    J'ai une table, avec une colonne 'Nom', je voudrais faire un programme qui ajoute un nouveau nom si celui-ci est absent ou bien met à jour la ligne si celui-ci est déjà présent.
    j'utilise pour cela la fonction has_selected_record() du modul Net::Mysql
    décrite comme ceci:
    "has_selected_record()

    TRUE will be returned if it has a reference result by SELECT."


    et cela ne fonctionne pas dans le cas FALSE!


    Voici 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
     
    use Net::MySQL;
     
    $mysql->query(qq{SELECT Nom FROM personnes WHERE Nom='$name'});
    if ($mysql->has_selected_record)
    {
    	$mysql->query(qq{
    	UPDATE personnes SET Adresse='$adresse',telephone='$phone'
    	WHERE Nom='$name'
    			});
    }
    else
    {
    $mysql->query(qq{
          INSERT INTO personnes (id, Nom, Prenom, Adresse, telephone)
    	  VALUES (DEFAULT,'$name','$prenom','$adresse','$phone')
    			});	
     
    }
    Le problème c'est que la fonction n'exécute jamais la clause else, c'est incompréhensible alors que vérifie la présence d'un nom inconnu. J'ai une autre solution qui consisterait à comparer chaque nom mais cela ralentirait trop le processus (plus de 5000 noms).

    Quelqu'un a -t-il déjà rencontré ce problème?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 68
    Points : 46
    Points
    46
    Par défaut
    J'ai finalement trouvé une solution intermédiaire à mon problème en faisant une recherche partielle sur tous les noms similaires

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    use Net::MySQL;
    use strict;
    use warnings; 
    ....
    $mysql->query(qq{ 
    		SELECT * FROM carnet WHERE Nom LIKE '$name%'});

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

Discussions similaires

  1. [XL-2007] Afficher le cumul des résultats renvoyés par VLookup
    Par abami2007 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/02/2013, 11h38
  2. Differents résultats renvoyés par fonction
    Par oliverjack dans le forum Fortran
    Réponses: 9
    Dernier message: 29/09/2011, 18h40
  3. Réponses: 15
    Dernier message: 26/11/2010, 22h38
  4. Résultat renvoyé par Ajax
    Par PsychedeChed dans le forum jQuery
    Réponses: 6
    Dernier message: 13/04/2009, 23h20
  5. Limiter le nombre d'enregistrements renvoyés par un SELECT
    Par Wilco dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/11/2004, 14h47

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