Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
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 31/12/2011, 02h12   #1
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Par défaut Json_encode bizarre !

Bonjour,

Voici le code qui génère un tableau à partir du résultat d'une requête :
Code :
1
2
3
4
5
6
7
8
while($row = mysql_fetch_array($result))
{
	$historique["lot_{$row['id_lot']}"][$i]['type_lot'] = $row['type_de_lot'];
	$historique["lot_{$row['id_lot']}"][$i]['date'] = $row['heureFinJeu'];
	$historique["lot_{$row['id_lot']}"][$i]['temps'] = $row['dureeQuizz'];
	$historique["lot_{$row['id_lot']}"][$i]['mots'] = $row['nbCorrectes'];
	$i++;
}
Voici un var_dump exemple du tableau $historique :
Citation:
array(2) { ["lot_1"]=> array(5) { [0]=> array(4) { ["type_lot"]=> string(6) "type_1" ["date"]=> string(19) "2011-09-15 09:49:45" ["temps"]=> string(5) "14958" ["mots"]=> string(2) "11" } [1]=> array(4) { ["type_lot"]=> string(6) "type_1" ["date"]=> string(19) "2011-09-15 09:49:20" ["temps"]=> string(5) "13125" ["mots"]=> string(2) "10" } [2]=> array(4) { ["type_lot"]=> string(6) "type_1" ["date"]=> string(19) "2011-09-15 09:48:50" ["temps"]=> string(5) "25400" ["mots"]=> string(2) "11" } [3]=> array(4) { ["type_lot"]=> string(6) "type_1" ["date"]=> string(19) "2011-09-15 09:45:45" ["temps"]=> string(5) "35842" ["mots"]=> string(2) "12" } [4]=> array(4) { ["type_lot"]=> string(6) "type_1" ["date"]=> string(19) "2011-09-15 09:44:34" ["temps"]=> string(5) "34270" ["mots"]=> string(2) "12" } } ["lot_9"]=> array(5) { [5]=> array(4) { ["type_lot"]=> string(6) "type_2" ["date"]=> string(19) "2011-09-28 11:36:53" ["temps"]=> string(5) "21769" ["mots"]=> string(2) "11" } [6]=> array(4) { ["type_lot"]=> string(6) "type_2" ["date"]=> string(19) "2011-09-26 00:31:34" ["temps"]=> string(5) "20182" ["mots"]=> string(2) "12" } [7]=> array(4) { ["type_lot"]=> string(6) "type_2" ["date"]=> string(19) "2011-09-26 00:31:07" ["temps"]=> string(5) "18880" ["mots"]=> string(2) "11" } [8]=> array(4) { ["type_lot"]=> string(6) "type_2" ["date"]=> string(19) "2011-09-26 00:30:42" ["temps"]=> string(5) "21414" ["mots"]=> string(2) "10" } [9]=> array(4) { ["type_lot"]=> string(6) "type_2" ["date"]=> string(19) "2011-09-26 00:30:15" ["temps"]=> string(5) "17972" ["mots"]=> string(2) "11" } } }
=> J'ai mis en évidence le fait que chaque lot présente des indices de 0 à 4 pour le lot_1 et de 5 à 9 pour le lot_9.

Code :
$jsonHisto = json_encode($historique);
Voici maintenant le résultat du json_encode du tableau :
Citation:
string(876) "{"lot_1":[{"type_lot":"type_1","date":"2011-09-15 09:49:45","temps":"14958","mots":"11"},{"type_lot":"type_1","date":"2011-09-15 09:49:20","temps":"13125","mots":"10"},{"type_lot":"type_1","date":"2011-09-15 09:48:50","temps":"25400","mots":"11"},{"type_lot":"type_1","date":"2011-09-15 09:45:45","temps":"35842","mots":"12"},{"type_lot":"type_1","date":"2011-09-15 09:44:34","temps":"34270","mots":"12"}],"lot_9":{"5":{"type_lot":"type_2","date":"2011-09-28 11:36:53","temps":"21769","mots":"11"},"6":{"type_lot":"type_2","date":"2011-09-26 00:31:34","temps":"20182","mots":"12"},"7":{"type_lot":"type_2","date":"2011-09-26 00:31:07","temps":"18880","mots":"11"},"8":{"type_lot":"type_2","date":"2011-09-26 00:30:42","temps":"21414","mots":"10"},"9":{"type_lot":"type_2","date":"2011-09-26 00:30:15","temps":"17972","mots":"11"}}}"
=> Cette fois, seul le lot 9 a ses indices ! Toutes les valeurs concernant le lot_1 sont encadrées globalement de crochets !

J'ai l'impression que ce phénomène est la cause de problèmes que je rencontre dans l'utilisation du json en Javascript.

Bug dans la fonction json_encode ou j'ai oublié un truc ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2011, 03h01   #2
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 330
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 330
Points : 1 659
Points : 1 659
Le premier élément du lot 9 commence avec l'indice "5".

Le premier lot, lui, commence avec l'indice "0".

Du coup, il n'est pas nécessaire de préciser le 0 parce que c'est l'indice par défaut du premier élément d'un tableau.


C'est quoi ton problème en javascript ?
__________________
Zend Certified Engineer PHP 5.3

« Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2011, 19h02   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par Seb33300 Voir le message
Le premier élément du lot 9 commence avec l'indice "5".

Le premier lot, lui, commence avec l'indice "0".

Du coup, il n'est pas nécessaire de préciser le 0 parce que c'est l'indice par défaut du premier élément d'un tableau.


C'est quoi ton problème en javascript ?
Finalement non, mon problème Javascript était tout simplement dû à un bug de mon code.

Ça fonctionne maintenant mais c'est quand même déroutant ce système !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil 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 08h42.


 
 
 
 
Partenaires

Hébergement Web