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

PHP & Base de données Discussion :

Problème d'affichage de valeurs contenant un caractère blanc dans un champ [Oracle]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Par défaut Problème d'affichage de valeurs contenant un caractère blanc dans un champ
    Lorsque je ramène des informations d'une base de données Oracle sur des champs contenant des valeurs 'composées (de la forme "nom prénom"), la valeur du champ est tronquée au niveau du séparateur blanc (ex: la valeur Jacques Dupont est tronquée à Jacques). Comment gérer le caractère "spécial" blanc à ce niveau pour que ce caractère ne soit pas interprété par PHP et que l'affichage se fasse normalement ? Y a t-il une fonction spéciale PHP et comment l'utiliser ? - ce n'est pas un problème
    d'encodage d'URL entre 2 pages web . Merci pour votre aide à tous!

  2. #2
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Il faut que tu encadres tes chaînes par des quotes.

  3. #3
    Membre averti
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Par défaut
    OK merci pour le tuyau....

    Une partie du problème est effectivement résolu pour certaines pages web où l'affichage est un simple SELECT j'ai bien les bonnes valeurs de champs non tronquées ...
    Par contre le problème se corce nettement sur d'autres pages où l'on construit des requêtes SQL en dynamique:

    en gros les différentes valeurs de champs sont dans des drop down - jusque là l'affichage des valeurs dites 'composées' sont normales, par contre lorsqu'on veut filtrer sur ces valeurs, la chaine est tronquée on moment de l'application du filtre...
    Donc forcément rien n'est ramené puisque la chaine est tronqué et ne matche pas dans la WHERE clause...

    D'un point de vue code PHP, la requête SQL est construite dynamiquement comme suit:

    Requête finale à exécuter:
    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
    $query="select server, instance, Account, Grantee, Date_granted, requestid
            FROM  stg_accts
            WHERE 1 = 1
            AND ".$hosttest." 
            and ".$insttest."
            and ".$accounttest."
            and ".$granteetest."
            and ".$DateGrantee."
            and ".$requestidtest."
            ORDER BY server, instance, Account, Grantee, Date_granted";
    ....  // Retrieve des valeurs / affichage des valeurs dans la page web
     
    et $granteetest (construction de la where clause au niveau de la colonne qui contient des valeurs 'composées'):
     
    if ($tGrantee == "all" ) {
    $granteetest="grantee like '%'";   // a la première utilisation ...
    } else {     
    // Cas où on veut filtrer utilisateur sur son nom //complet et c'est ici que c'est tronqué semble t-il...
    $granteetest="grantee='".$tGrantee."'";
    }
    J'ai en sortie par exemple:
    grantee='Andy' // valeur de $granteetest
    au lieu de: grantee='Andy NomDeFamille'

    et donc la requête ci-dessus devient:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select server, instance, Account, Grantee, Date_granted, requestid FROM stg_accts WHERE 1 = 1 AND server like '%' and instance like '%' and account like '%' and grantee='Andy' 
    and Date_granted like '%' and requestid like '%' ORDER BY server, instance, Account, Grantee, Date_granted

    ... et ne ramène rien...

    Je ne peux pas appliquer le tuyau que tu m'as donné en conséquence - sinon je fais planter les OCI d'Oracle ...Any ideas please ?

    Merci par avance ...car je suis bloqué depuis plusieurs jours (je découvre les joies du PHP au passage... )

  4. #4
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Il sort d'où $tGrantee le problème vient peut-être de là :voyons:

  5. #5
    Membre averti
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Par défaut
    euh ...j'ai peut-être pas donné toute les précisions:

    $tGrantee est un paramètre de fonction appelé en PHP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?BuildSelect("tGrantee",$connection, $queryGrantee, $tGrantee );?>
    appelé dans un tablea HTML:
    <table border=0 cellpadding=3 cellspacing=1 class=tableDecoration align=center>
    <tr><td class=cellLeft><? BuildSelect("tHost",$connection, $queryhost, $tHost);?></td>
        <td class=cellLeftt><?BuildSelect("tInstance",$connection, $queryinstance, $tInstance);?></td>
        <td class=cellLeft><?BuildSelect("tAccount",$connection, $queryAccount, $tAccount );?></td>
        <td class=cellLeft><?BuildSelect("tGrantee",$connection, $queryGrantee, $tGrantee );?></td>
        <td class=cellLeft><?BuildSelect("tDateGrantee",$connection, $queryDate, $tDateGrantee);?></td>
        <td class=cellLeft><?BuildSelect("trequestid",$connection, $queryRequestid, $trequestid);?></td>
        <td class=cellRight><input type="button" name="type" value="Create" checked onClick="window.location.href='create_useraccount.php';"></td>
    </tr>
    Est-ce que je peux te transmettre la page web concernée à une adresse mail si tu veux y jeter un coup d'oeil global pour éclaircir les choses ?

  6. #6
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Je pense qu'il suffirait que tu postes le code HTML que génère la partie que tu viens de mettre pour y voir plus clair.

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

Discussions similaires

  1. [Web Service] Problème d'affichage des valeurs renvoyées par un webservice
    Par informatique34 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 11/07/2011, 13h34
  2. problème d'affichage de valeur dans un chart ireport
    Par bacomina dans le forum iReport
    Réponses: 2
    Dernier message: 08/10/2009, 20h28
  3. Problème d'affichage des valeurs de mes cases a cocher
    Par ottoayoub dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 18
    Dernier message: 17/06/2009, 08h19
  4. Problème d'affichage d'une chaîne de caractères
    Par bob32 dans le forum Assembleur
    Réponses: 13
    Dernier message: 23/06/2008, 22h06
  5. Réponses: 11
    Dernier message: 14/03/2008, 16h45

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