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 du Club
    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
    Points : 55
    Points
    55
    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 du Club
    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
    Points : 55
    Points
    55
    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 du Club
    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
    Points : 55
    Points
    55
    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 du Club
    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
    Points : 55
    Points
    55
    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 white_angel_22 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