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

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 9
    Points
    9
    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
    Points : 3 115
    Points
    3 115
    Par défaut
    Il faut que tu encadres tes chaînes par des quotes.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 9
    Points
    9
    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
    Points : 3 115
    Points
    3 115
    Par défaut
    Il sort d'où $tGrantee le problème vient peut-être de là :voyons:
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 9
    Points
    9
    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
    Points : 3 115
    Points
    3 115
    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.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Je ne sais pas si je réponds bien à la question mais j'ai fait un copier-coller du code HTML généré:
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
     
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>..................</title>
     
    <link href="/common/include/bo.css" rel="stylesheet" type="text/css">
    <link href="/common/include/menu.css" rel="stylesheet" type="text/css">
    <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" link="#333399" alink="#333399" vlink="#333399" onload=InitCollapsedMenus();>
    <!-- menu.html -->
    <script language=JavaScript src="/common/include/menu_functions.js"></script>
    <script language=JavaScript src="/common/include/navCollapse.js"></script>
     
    <!-- Browse Bar -->
    <div class="menuBar" style="width:700px;"> 
    	<a class="menuButton" href="/documentation/docindex.html" onmouseover="buttonMouseover(event, 'docMenu');">Documentation</a>
    	&nbsp;&nbsp;<b>&#149;</b>&nbsp;&nbsp;
    	<a class="menuButton" href="/support/supportindex.html" onmouseover="buttonMouseover(event, 'suppMenu');">Support</a>
    	&nbsp;&nbsp;<b>&#149;</b>&nbsp;&nbsp;
    	<a class="menuButton" href="/techres/techindex.html" onmouseover="buttonMouseover(event, 'techMenu');">Technical resource</a>
    	&nbsp;&nbsp;<b>&#149;</b>&nbsp;&nbsp;
    	<a class="menuButton" href="/dbmanagement/dbindex.html" onmouseover="buttonMouseover(event, 'dbMenu');">Database management</a>
    	&nbsp;&nbsp;<b>&#149;</b>&nbsp;&nbsp;
    	<a class="menuButton" href="/team/teamindex.html" onmouseover="buttonMouseover(event, 'teamMenu');">Team stuff</a>
    	&nbsp;&nbsp;<b>&#149;</b>&nbsp;&nbsp;
    	<a class="menuButton" href="/link/linkindex.html" onmouseover="buttonMouseover(event, 'linkMenu');">Other sites</a>
    </div>
     
    <!-- Main menus. -->
    ........
     
    <script>
    function setSort(sortOrder) {
       recform.hiddenSort.value=sortOrder;
       recform.submit();
    }
     
    function Verif(ckpass) {
       recform.hiddenVerif.value=ckpass;
       recform.submit();
    }
     
    function Filter() {
       recform.submit();
    }
    </script>
     
    .....
     
    <A HREF="select_deactivated_account.php"> Link to the list of the deactivated user accounts </A>
     
    <form name="recform" method="POST" action="select_active_account.php">
     
    <input type=hidden name=hiddenSort value="">
    <input type=hidden name=hiddenVerif value=null>
    <div name="scrollDiv" style="position:absolute;width:800px;height:370px;overflow:auto"> 
    <br>
     
    <table border=0 cellpadding=3 cellspacing=1 class=tableDecoration align=center>
    <tr><td class=cellLeft><select name=tHost onchange=Filter()>
    <option value=all>...</option>
    </select>
    </td>
        <td class=cellLeftt><select name=tInstance onchange=Filter()>
    <option value=all>...</option>
    </select>
    </td>
        <td class=cellLeft><select name=tAccount onchange=Filter()>
    <option value=all>...</option>
    </select>
    </td>
        <td class=cellLeft><select name=tGrantee onchange=Filter()>
    <option value=all>...</option>
    <option value= Etsuko Yamaoka > Etsuko Yamaoka</option>
    <option value= Krishna Kemba > Krishna Kemba</option>
    <option value= Stewart Shum > Stewart Shum</option>
    </select>
    </td>
    // Les champs "composés" dans la DROP DOWN sont bien affichés ...
    </td>
        <td class=cellLeft><select name=tDateGrantee onchange=Filter()>
    <option value=all>...</option>
    </select>
    </td>
        <td class=cellLeft><select name=trequestid onchange=Filter()>
    <option value=all>...</option>
    </select>
    </td>
        <td class=cellRight><input type="button" name="type" value="Create" checked onClick="window.location.href='create_useraccount.php';"></td>
    </tr>
     
    // Ma trace:
    grantee='Andrew'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='Andrew'
            and Date_granted like '%'
            and requestid like '%'
            ORDER BY server, instance, Account, Grantee, Date_granted<tr><td class=cellLeft><b>Server name</b></td>
          <td class=cellLeft><b> Instance</b></td>
          <td class=cellLeft><b>Account name</b></td>
          <td class=cellLeft><b>Grantee</b></td>
          <td class=cellLeft><b>Date granted</b></td>
          <td class=cellLeft align=center><b>Remedy Ticket# </b></td>
          <td class=cellLeft align=center><b>Update record</b></td>
    </table>
     
    <script>
     
    </script>
     
    <br>
    <table border=0 cellpadding=5 cellspacing=1 align=left>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </table>
    </div>
    </form>
    </td>
                    <td width="5"><img src="/images/clear.gif" width="5" height="1" border="0"></td>
            </tr>
            <tr>
                    <td colspan="4"><img src="/images/clear.gif" width="1" height="5" border="0"></td>
            </tr>
    </table>
     
    ....
     
    </body>
    </html>
    Il te manque une info. ?

  8. #8
    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
    Points : 3 115
    Points
    3 115
    Par défaut
    Ah bah voilà là c'est clair...

    En fait c'est exactement ce que j'avais anticipé dans ma toute première réponse, tu ne dois pas avoir ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value= Stewart Shum > Stewart Shum</option>
    mais ça avec encadrement du VALUE par des quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value= 'Stewart Shum' > Stewart Shum</option>
    Voilà y'a plus qu'à...

    bon courage
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  9. #9
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    FELICITATIONS !!!! ....You are a 'killer'

    Ca marche enfin !!!

    On sent les pros du PHP . .. et les autres ... (je fais plus de l'admin de BD et le dév. avec un nouveau langage ...bof bof ... )

    Merci encore

+ 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, 14h34
  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, 21h28
  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, 09h19
  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, 23h06
  5. Réponses: 11
    Dernier message: 14/03/2008, 17h45

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