Aloha

Le besoin de mes utilisateurs : pouvoir sélectionner un type de périmètres dans une liste, un type d'objet, et obtenir une liste des objets par périmètres. Ca je sais faire.

A base de requête Oracle et d'autre fioritures, je sais leur envoyer le résultat (code ci dessous).

Ma question : comment faire pour envoyer dans un script javascript une variable "tableau", telle qu'attendue par "data.addRows()". Je sais qu'il faut utiliser json_encode, mais lorsque j'affiche le json_encode, j'obtiens :

[{"Nom du quartier":"XXX","STATUT":"--",null:"36",null:"4804,56"},{"Nom du quartier":"XXX","STATUT":"chemin",null:"20",null:"5359,17"},{"Nom du quartier":"XXX","STATUT":"autoroute",null:"2",null:"1362,87"},{"Nom du quartier":"XXX","STATUT":"communale",null:"350",null:"35527,61"},...]

Alors que je voudrais (enfin je sais vouloir) :
[["--",4804,56],["chemin",5359,17],...]

Faut-il que j'exécute une requête différente ? Puis-je à partir du résultat de ma 1ère requête obtenir cet array à envoyer au json_encode ?

J'ai plusieurs quartier, et je veux générer un diagramme par quartier : quelle est la meilleur solution ?


D'avance, merci,

PS. Je sais que mon switch sur mes objets avec les requêtes n'est pas très beau, alors si quelqu'un a une autre idée, je suis preneur.


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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
<?php 
error_reporting(E_ALL || E_NOTICE);
if (isset($_REQUEST['perim']) && isset($_REQUEST['objet']) ) {
	function select_to_array($connexion, $select) 
		{
			// Crée un tableau, un curseur, compte les colonnes,
			// fait le fetch en insérant dans le tableau.
			$myResults = array();
			// ora_do analyse (ora_parse) $query, l'exécute (ora_exec)
			// et lit la première ligne du résultat (ora_fetch).
			$statementID = oci_parse($connexion, $select);
			$executeResult = oci_execute($statementID);
			while (($row = oci_fetch_array($statementID, OCI_ASSOC))) {
			   array_push($myResults, $row);
			}
			oci_free_statement($statementID);
			return $myResults;
		}
	$base = "XXXX";
 
	if ( isset($_REQUEST["base"]) ) {
			$base = $_REQUEST["base"];
			}
	$perim = $_REQUEST['perim'];
	$objet = $_REQUEST['objet'];
	switch ($perim) {
		case 'CANTON': 
			...
		break ;
		case 'PV_CQ' :
			$query='select q."denomina" as "Nom du quartier", q."POP2006" as "Population INSEE 2006"'; 
			$clause = '';
			$grp='q."denomina", q."POP2006"';
		break ;
		case 'PCI_COMM'	:
			...
		default: ; break ;
	}
	switch ($objet) {
		case 'DE_BENNE': 
			...
		break ;
		case 'VO_ARCEA'	:
			...
		break;	
		case 'R_TRONCO1' :
			switch ($perim) {
			case 'PV_CQ' :
				$query='select DECODE (GROUPING (q."denomina"), 1, \'Tous quartiers confondus\', q."denomina") as "Nom du quartier",
				NVL(TO_CHAR(DECODE (GROUPING (o.STATUT), 1, \'Tous statuts confondus\', o.STATUT)),\'--\') AS STATUT, 
				COUNT (*) "Nb de tronçons",
				ROUND (SUM(SDO_GEOM.SDO_LENGTH (o.GEOMETRY, 0.1)), 2) AS "Longueur en mètre"
				FROM PV_CQ q, R_TRONCO o
				WHERE SDO_ANYINTERACT(o.GEOMETRY,q.GEOMETRY)=\'TRUE\'  
				AND o.CODCOM IN (055, 058, 172, 454, 474, 573)
				GROUP BY ROLLUP (q."denomina", o.STATUT)';
			break ;
			case 'PCI_COMM' :
				...
			break ;
			case 'CANTON' :
				...
			break ;
			default: ; break ;
			}
			unset($grp);
			break ;	
			case 'R_TRONCO' :
				$query=$query.', NVL (
							TO_CHAR (o.LIBELL),
							\'--\') AS "Libellé de la voie",
							NVL (
							TO_CHAR (o.STATUT),
							\'--\')
							AS STATUT,
							COUNT (*) "Nb de tronçons",
							ROUND (SUM (SDO_GEOM.SDO_LENGTH (o.GEOMETRY, 0.1)), 2) AS "Longueur en mètre"';
				$clause .=	'and o.CODCOM IN (055, 058, 172, 454, 474, 573)';
				if (isset($grp)) {$ord=$grp;
				$grp.=', '.'o.LIBELL, o.STATUT';} else {;}
			break ;
		default: ; break ;
	}
	if ($objet!=='R_TRONCO1') {
	$query .= ' from ';
	if ($perim == 'CANTON') {$query .="TH_LIMAD q, ".$objet." o where SDO_ANYINTERACT(o.GEOMETRY,q.GEOMETRY)='TRUE' ".$clause;}
	else {$query .=$perim." q, ".$objet." o where SDO_ANYINTERACT(o.GEOMETRY,q.GEOMETRY)='TRUE' ".$clause;};
	if (isset($grp)) {$query .=' GROUP BY ('.$grp.') ORDER BY '.$ord;}
	};
	//connecte à la base XXX.
	$ora_connXXX = oci_connect("XXX","XXX",$base);	
}	
//case 'excel' :
if ($_REQUEST['format']==='excel') {
	...
} else {
//break;
//default :
?>
 
<html>
<head>
<title>
Extraction de données
</title>
<style type="text/css">
...
</style>
</head>
<body>
<div class="header">        
	<table id="tabhead">
		<tbody>
			<tr>
			<td width="25%" align="left"><img height="45" border="0" src="images/RM45.gif"></td>
			<td width="75%">....</td>
			</tr>
		</tbody>
	</table>
</div>
<div class="box">
	<div class="affichage">
		<?php
		if (isset($query)) {
 
			// gérer le titre
			//echo "Liste du patrimoine par ";
			echo "<table class=\"resultat\">";
			$results=select_to_array($ora_connXXX, $query);
			// Parcours du tableau $results pour afficher les résultats :
			if (count($results)) // Si y'a des résultat 
				{
				//echo json_encode ($results);
				reset($results); // se placer à la première ligne du tableau $results
				echo "<br>";
				$i = 0;
				foreach($results as $key=>$value) // Parcourir le tableau $results
						{
						if ($i===0) {
						echo "<tr>";
						foreach(array_keys($value) as $key) {
								echo "<th>".$key."</th>";
								}
						echo "</tr>";			
						++$i;
						echo "<tbody>";
						} 		
						echo "<tr>";
 
						foreach(array_values($value) as $val) {
							echo "<td>";
							if (is_null($val)) {echo '--';} 
							else 
							{
							if (empty($val)) 
							{echo '--';} else {echo $val;}}
							echo "</td>";
							}
							echo "</tr>";
						}
				} else // Pas de résultat 
				{
					echo "Y'a personne";
				}
				echo "</tbody>";
				echo "</table>";
				oci_close($ora_connXXX);
				unset ($_REQUEST['perim']) ;
				unset ($_REQUEST['objet']);
				?>
				<a href="#">retour au formulaire</a>
<?php
}
//}
//else 
//{
?>
</div>
<div class="menu">
<div class="chapitre">Selection des élements</div>
	<div class="choixPerim">
		<img border="0" class="button" src="images/puce.gif">Selection du périmètre : <br>
		<form name="monForm" method="GET">
			<?php
				// Définition du tableau de perimètre
				$arrayPerim = array(
 
				'PCI_COMM' => 'communes',
				'CANTON' => 'canton',
				'PV_CQ' => 'quartiers'
 
				);
				// Variable qui ajoutera l'attribut selected de la liste déroulante
				$selected = '';
 
				// Parcours du tableau
				echo '<select name="perim">',"n";
				foreach($arrayPerim as $TPerim => $nomPerim)
				{
 
				if($nomPerim === 'quartiers')
				{
				$selected = 'selected';
				}
				// Affichage de la ligne
				echo "\t",'<option value="', $TPerim ,'"', $selected ,'>', $nomPerim ,'</option>',"\n";
				// Remise à zéro de $selected
				$selected='';
				}
				$recup = $_REQUEST['perim'] ;
				echo $recup;
				echo '</select>',"\n";
			?>
			<br>
			<img border="0" class="button" src="images/puce.gif">Selection des objets : <br>
			<?php
				echo "<br>";
				$arrayObjet = array(
 
				'DE_BENNE' => 'bennes à encombrants',
				'VO_ARCEA' => 'arceaux vélo',
				'R_TRONCO1' => 'statuts des voies',
				'R_TRONCO' => 'liste des voies'
 
				);
				// Variable qui ajoutera l'attribut selected de la liste déroulante
				$selected = '';
 
				// Parcours du tableau
				echo '<select name="objet">',"n";
				foreach($arrayObjet as $TObjet => $nomObjet)
				{
 
				if($nomObjet === 'adresses')
				{
				$selected = 'selected';
				}
				// Affichage de la ligne
				echo "\t",'<option value="', $TObjet ,'"', $selected ,'>', $nomObjet ,'</option>',"\n";
				// Remise à zéro de $selected
				$selected='';
				}
				$recup2 = $_REQUEST['objet'] ;
				echo $recup;
				echo '</select>',"\n";
			?>
			<br>
			<input type="submit" name="format" value="excel">
			<input type="submit" name="format" value="liste">
			<input type="button" name="reset" value="Annuler" onclick="reinit()"> 
		</form>
	</div>
 
</div>
<br>
 
</div>
</body>
</html>
<?php
//print_r( $_REQUEST );
}	
?>