IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Structuration de résultat pour highcharts [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2010
    Messages : 59
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2010
    Messages : 59
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2010
    Messages : 59
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2010
    Messages : 59
    Par défaut
    Désolé des multiples post mais j'ai encore amélioré la fonction.

    Voici la fonction finale :

    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
    $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);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Structure de données pour gros volume de données
    Par Invité dans le forum Langage
    Réponses: 9
    Dernier message: 01/02/2007, 11h58
  2. un seul résultat pour plusieurs requètes
    Par MmoulinexX dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/11/2006, 15h38
  3. structure de table pour un organigramme
    Par thyphoon dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 19/10/2006, 12h05
  4. Structure de données pour recherche rapide
    Par socrate dans le forum C
    Réponses: 1
    Dernier message: 18/06/2006, 14h49
  5. Réponses: 11
    Dernier message: 18/11/2005, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo