Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & Oracle
PHP & Oracle Forum d'entraide sur Oracle avec PHP. Avant de poster -> FAQ Oracle et Cours Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/02/2007, 10h02   #1
Invité de passage
 
Inscription : février 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 12
Points : 3
Points : 3
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!
domray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 10h09   #2
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 11h29   #3
Invité de passage
 
Inscription : février 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 12
Points : 3
Points : 3
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 :
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 :
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... )
domray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 11h47   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 12h02   #5
Invité de passage
 
Inscription : février 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 12
Points : 3
Points : 3
euh ...j'ai peut-être pas donné toute les précisions:

$tGrantee est un paramètre de fonction appelé en PHP:
Code :
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 ?
domray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 13h51   #6
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 16h04   #7
Invité de passage
 
Inscription : février 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 12
Points : 3
Points : 3
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 :
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. ?
domray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 16h08   #8
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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 :
<option value= Stewart Shum > Stewart Shum</option>
mais ça avec encadrement du VALUE par des quotes :
Code :
<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)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 17h11   #9
Invité de passage
 
Inscription : février 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 12
Points : 3
Points : 3
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
domray est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h34.


 
 
 
 
Partenaires

Hébergement Web