Bonjour,

J'ai un script qui me fait une requête sur une base de données (Postgres), et qui me renvoie le résultat dans une variable JSON :

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
$connect_string = 'host='.$HYDRO_SERVER.' port='.$HYDRO_PORT.' dbname='.$HYDRO_BASE.
					' user='.$HYDRO_USER.' password='.$HYDRO_PASSWORD;
$base = pg_connect($connect_string);
 
if (!$base) {
	$msg = 'Erreur connection !'.pg_last_error($connect_string);
	$json = array("success" => false, "msg" => $msg);
}
else {
 
	$sql = 'SELECT nav_id, nav_name FROM navires';
 
	$res = pg_query($sql);
	if (!$res) {
		$msg = 'Erreur d\'execution de la requête : '.$sql;
		$json = array("success" => false, "msg" => $msg);
	}
	else {
 
		if (pg_num_rows($res) == 0) {
			$msg = 'Aucun enregistrement ne correspond à la requête !';
			$json = array("success" => true, "res" => $msg);
		}
		else {
 
			$list = array();
			while ($data = pg_fetch_array($res)) {
					array_push($list, $data);
			}
 
			$json = array("success" => true, "res" => $list);
		}
 
		pg_free_result($res);
 
	}
 
	pg_close($base);
 
}	// fin else
 
echo json_encode($json);
Le problème, c'est que dans le JSON crée, j'ai les infos résultats en double :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
{"success":true,"res":[{"0":"1","nav_id":"1","1":"Pourquoi-pas?","nav_name":"Pourquoi-pas?"},{"0":"2","nav_id":"2","1":"Thalassa","nav_name":"Thalassa"},{"0":"3","nav_id":"3","1":"L'Atalante","nav_name":"L'Atalante"},{"0":"4","nav_id":"4","1":"Le Suro\u00eet","nav_name":"Le Suro\u00eet"},{"0":"5","nav_id":"5","1":"RRS Discovery","nav_name":"RRS Discovery"},{"0":"6","nav_id":"6","1":"R\/V Knorr","nav_name":"R\/V Knorr"},{"0":"7","nav_id":"7","1":"M\/V Arquipelago","nav_name":"M\/V Arquipelago"},{"0":"8","nav_id":"8","1":"NRP Almirante Gago Coutinho","nav_name":"NRP Almirante Gago Coutinho"}]}
A chaque fois, les variables sont mentionnées avec un code 0, 1, et avec le nom de la variable issue de la base de données. Pourquoi ?
Comment modifier le script en conséquence ?

Merci,

Nico