Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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/09/2011, 10h52   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 47
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 47
Points : 12
Points : 12
Par défaut Structuration de résultat pour highcharts

Bonjour à tous.
J'utilise le plugin jquery Highcharts afin d'afficher des données sous forme de graphiques.

Pour le moment je récupère mes résultats comme ceci :

Code :
1
2
3
4
5
6
 
[
{"heure":"0","VAL_TEC_HORAIRE":"2207","VAL_BIO_HORAIRE":"43","VAL_PVT_HORAIRE":"1895"},{"heure":"1","VAL_TEC_HORAIRE":"1832","VAL_BIO_HORAIRE":"17","VAL_PVT_HORAIRE":"1033"},{"heure":"2","VAL_TEC_HORAIRE":"920","VAL_BIO_HORAIRE":"23","VAL_PVT_HORAIRE":"883"},
....
{"heure":"23","VAL_TEC_HORAIRE":"3695","VAL_BIO_HORAIRE":"59","VAL_PVT_HORAIRE":"2044"}
]
avec ce code là :

Code :
1
2
3
4
5
6
 
$reqfinal  = mysql_query($query3) or die($query3.' Erreur '.mysql_error());
while($r = mysql_fetch_assoc($reqfinal)) {
    $rows[] = $r;
}
echo json_encode($rows);
Pour la simplification de l'importation de ces données, je cherche à "trier" le résultat de mes requêtes comme suit :

Code :
1
2
3
4
5
6
[
{name: "heure",data: [0,1,...,23]},
{name: "VAL_TEC_HORAIRE",data: [2207,1832,920,...]},
{name: "VAL_BIO_HORAIRE",data: [1458,...]},
{name: "VAL_PVT_HORAIRE",data: [1448,...]}
]
Je sais déjà que je vais devoir faire comme ça :

Code :
1
2
3
4
5
6
7
$series = array(
    array(
      'name'=>'Series 1',
      'data' => array(1,3,3,5,6,4,3,5),
    ),
  );
  echo json_encode($series);
Mais je ne sais pas comment récupérer le nom de la colonne ainsi que les données associées.

Je vous remercie de votre aide.
Logarithmix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 13h36   #2
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 47
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 47
Points : 12
Points : 12
Rebonjour,

j'ai bien avancé en implémentant une fonction qui permet de trier les éléments reçus de la base un peu comme je voulais faire.

Voici la fonction :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
$nbcolonnes = mysql_num_fields($reqfinal);
$i=0;
for ($i=0; $i < $nbcolonnes ; $i++){//Tant que compteur inférieur à nombre de colonnes
	$series[] = mysql_field_name($reqfinal,$i); //On récupère le nom de la colonne courante
	$nom = $series[$i];	//On attribue ce nom à la variable $nom
	while($ligne = mysql_fetch_array($reqfinal)) {//Tant qu'on peut parcourir la requête
		$temp[] = $ligne[$nom]; //On met la valeur de la requête correspondant au nom de la colonne dans temp
	}
	$series[] = $temp;//On ajoute les valeurs précédentes à series
	$temp= array(); //on vide temp
	$ligne= array(); //on vide ligne
	mysql_data_seek($reqfinal,0);//on replace le compteur de la requête à la première ligne
}
echo json_encode($series);//On encode en JSON

Malheureusement, elle n'est pas encore parfaite, car elle me retourne ça :

Code :
1
2
3
4
5
6
7
 
[
"heure",["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23"],
"VAL_TEC_HORAIRE",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],
"VAL_BIO_HORAIRE",["2207","1832","920","909","629","403","1573","14844","29482","60703","98436","128828","90610","77224","53188","44330","26956","21222","22527","21683","17690","6850","3935","3695"],
"VAL_PVT_HORAIRE",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]
]
Les valeurs pour "heure" sont bonnes, mais les valeurs pour "VAL_BIO_HORAIRE" sont enfait celles de "VAL_TEC_HORAIRE"....
Et il n'est pas censé avoir autant de "null".

Une solution ?
Logarithmix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 13h41   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 47
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 47
Points : 12
Points : 12
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$nbcolonnes = mysql_num_fields($reqfinal);
for ($i=0; $i < $nbcolonnes ; $i++){//Tant que compteur inférieur à nombre de colonnes
	$nom = mysql_field_name($reqfinal,$i); //On récupère le nom de la colonne courante
	$series[] = $nom;
	//$nom = $series[$i];	//On attribue ce nom à la variable $nom
	while($ligne = mysql_fetch_array($reqfinal)) {//Tant qu'on peut parcourir la requête
		$temp[] = $ligne[$nom]; //On met la valeur de la requête correspondant au nom de la colonne dans temp
	}
	$series[] = $temp;//On ajoute les valeurs précédentes à series
	$temp= array(); //on vide temp
	$ligne= array(); //on vide ligne
	mysql_data_seek($reqfinal,0);//on replace le compteur de la requête à la première ligne
}
echo json_encode($series);//On encode en JSON

problème résolu !
Logarithmix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 16h21   #4
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 47
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 47
Points : 12
Points : 12
Désolé des multiples post mais j'ai encore amélioré la fonction.

Voici la fonction finale :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$nbcolonnes = mysql_num_fields($reqfinal);
for ($i=0; $i < $nbcolonnes ; $i++){
	$nom = mysql_field_name($reqfinal,$i); 
	$serie['name'] = $nom;
	while($ligne = mysql_fetch_array($reqfinal)) {
		$temp[] = (int)$ligne[$nom]; 
	}
	$serie['data'] = $temp;
	$series[] = $serie;
	$serie= array();
	$temp= array(); 
	$ligne= array(); 
	mysql_data_seek($reqfinal,0);
}
 
header('Content-type: application/json');
echo json_encode($series);
Logarithmix 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 23h08.


 
 
 
 
Partenaires

Hébergement Web