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

Requêtes PostgreSQL Discussion :

problème avec UPPER


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2003
    Messages : 121
    Points : 95
    Points
    95
    Par défaut problème avec UPPER
    bonjour,

    je fais une requete pour voir si la personne est référencé ou non avec un script php.
    pour éviter que l'authentification ne se fasse pas pour un pb de majuscule, je veux comparer dans ma requête, le nom en Majuscule avec la nom saisie en majuscule.

    je fais ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from personne where UPPER(per_nom)='$auth_nom' and UPPER(per_prenom)='$auth_prenom'[/quote]
    ça ne marche pas

    au passage, je mets avant dans mes variables, le texte en maj avec une fonction php

    c pas trop ça qui me chiffone, ce qui m'embête ce que si je prends la requête et que je l'exécute dans PGADMIN, pas de prob

    quand je dis que ça marche pas ça ceci
    Warning: Unable to jump to row 0 on PostgreSQL result index 4 in /home/mellioli/public_html/kaleche/SGBD.php3 on line 92
    ça correspond a pg_fetch_object or je le répète, PGADMIN me ressort bien un enregsitrement et le bon.!!!!

    j'ai essayé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from personne where upper(per_nom)=upper('$auth_nom') and upper(per_prenom)=upper('$auth_prenom')
    même chose

    en gros, la requête marche quand je respecte la casse de mon nom et prénom (cad nom avec 1ère lettre en maj)

    je comprends pas

    merci d'avance

  2. #2
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Pour ne pas avoir de problème de reconnaissance à cause des majuscules, j'utiliserait les opérateurs utilisés sur les expressions rationnelles

    Dans ton cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from personne where per_nom ~* '$auth_nom' and per_prenom ~* '$auth_prenom'
    Cette requête va te permettre de selectionner la ligne sans se soucier de la casse.

    Essaye cette requête et tiens-moi au courant.
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  3. #3
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2003
    Messages : 121
    Points : 95
    Points
    95
    Par défaut
    je comprends pas
    même chose que précédemment avec ta syntaxe:
    - si je ne saisie pas exactement la bonne casse, l'enregsitrement est trouvé (si je fais pg_numrows, me retourne 1) mais c le pg_fetch_object qui ne passe pas !.
    - en copiant la requête telle quel dans PGadmin, ça marche impec...!
    - en affichant ma requête à l'écran, j'obtiens bien exactement ce que j'ai saisis dans mes champs...

    je ne comprends pas

    voici le code php
    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
    $req="select * from personne where per_nom ~*'$auth_nom' and per_prenom ~*'$auth_prenom'";
          $res=SGBD_exec_req($kl,$req);
          $k=SGBD_numrows($res);
          echo "<br>nombre =$k<br>";
          echo $req;
          //$res=SGBD_exec_req($kl,"select * from personne where upper(per_nom)='$auth_nom' and upper(per_prenom)='$auth_prenom'");
          $auth_pers=false;//par défaut, l'auth par la table 'personne' est a false
          $auth_dep=false;//par défaut authentification par le departement a false
          if (SGBD_numrows($res)==0)
          {
           //la personne n'est pas référencé dans le base ou mauvaise connexion
           msg_erreur("Vous n'avez pas correctement saisie votre nom et prénom !");
           echo "<br><br><a href=index.php target=_self>Effectuer une nouvelle authentification</a>";
           break;
          }
          else
          {
           $user=SGBD_fetch_object($res,0);
           if (md5($auth_pwd)==$user->per_mdp) $auth_pers=true;
          }

  4. #4
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Maintenant j'aimerais que tu fasses un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from personne;
    sous pgadmin et php et que tu compares les données.

    peut-être un problème d'encodage.

    Je ne pense pas puisque tu as dit que lorsque tu respectais la casse cela fonctionnait.

    Mais essaye quand même on ne sait jamais. on trouvera peut-être une solution.

    Ps: il serait grand temps que je me mette au php car je remarque que beaucoup de personnes utilisent ce langage pour interfacer avec PostgreSQL.
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  5. #5
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2003
    Messages : 121
    Points : 95
    Points
    95
    Par défaut
    merci de te préoccuper de mon cas

    j'ai essayé les deux et ça me renvoit les mêmes résultats corrects.

    ça doit vraiment être un petit truc mais je comprends pas...

    petite précision sur mon script quand ça ne marche pas:
    l'erreur renvoyée est la suivante:
    Warning: Unable to jump to row 0 on PostgreSQL result index 4 in /home/mellioli/public_html/kaleche/SGBD.php3 on line 92
    mais si j'affiche le nombre de résultat trouvé avec pg_numrows, il m'affiche un. Donc en résumé, il trouve bien mon enregsitrement mais ça lui pose problème de faire le pg_fetch_object.

  6. #6
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2003
    Messages : 121
    Points : 95
    Points
    95
    Par défaut
    j'ai essayé pg_fetch_row à la place de pg_fetch_object et ça marche, je veux dire que l'enregsitrement est trouvé et que les données sont manipulables.

    donc le problème ne vient pas de ta requête mais de mon SGBD_fetch_object... c encore plus bizarre

    [edit]je viens de trouver l'erreur et je suis impardonnable : j'avais une requête identique plus loin dans le script et c elle qui posait pb
    dsl

    au moins, j'ai appris cette syntaxe pour la requête, ça n'a pas servi à rien

    encore merci et re-dsl

  7. #7
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Le petit tag [résolu] dans le titre serait le bienvenu.

    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

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

Discussions similaires

  1. problème de tréma avec UPPER
    Par onaryc dans le forum SQL
    Réponses: 7
    Dernier message: 19/10/2011, 10h48
  2. problème avec UPPER
    Par r-zo dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 17/09/2003, 11h53
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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