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

jQuery Discussion :

lecture des variables pour graph highchart


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    developpeur
    Inscrit en
    Octobre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 124
    Par défaut lecture des variables pour graph highchart
    Bonjour,

    Je cherche à dynamiser mes graph en utilisant ajax et donc j'arrive à transmettre mes variables à mon php qui execute le code et me fait un retour
    de mes chaines par un "echo".

    J'ai plusieurs variables à retourner de ce code php donc de la maniere suivante coté serveur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     $json0= $resultat_moyenne_agence;
     $json1= $resultat_titre_axe;
     $json2= $resultat_agence_maxi; 
     $json3= $resultat_agence_mini;
     
     
     echo  $json0.'/';
      echo  $json1.'/';
       echo  $json2.'/';
        echo  $json3;
    Et pour la lecture dans mon js je récupere de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      a=data.split('/');
      alert(a[0]);
      alert(a[1]);
      alert(a[2]);
      alert(a[3]);
    Je récupere bien mes 4 chaines comme ceci:
    "1.2,6.7,8.0"
    "1.3,3.7,5.0"
    "1.5,1.7,0"
    "1.8,9.7,9"

    C'est ici que je bloque car pour highchart le retour de ces variables ne sont pas intérpretées comme des nombres.

    Je souhaite savoir si sur la partie de récupération il est possible de faire une mise en forme des données pour l'intégration dans le graph?

    D'avance merci

    Cdlt

  2. #2
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    Plutôt que de renvoyer tes données séparées par des virgules, je te conseille d'utiliser le format JSON (tu as noté tes variables php ainsi, à tort, car cela ne semble pas être du JSON). C'est simple et facile à mettre en place. De plus, tes données seront prêtes à l'emploi coté JS

  3. #3
    Membre confirmé
    Homme Profil pro
    developpeur
    Inscrit en
    Octobre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 124
    Par défaut Re
    Merci pour ta réponse,

    effectivement j'avais vu cet article, et donc avec la méthode "encode"
    j'ai le même résultat, le graph ne charge pas.

    Je pense que je dois faire fausse route, en gros voici ce que je veux faire:

    Dans l'execution de mon code php j'ai 4 boucles différentes qui me donne 4 séries sous la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while($data=mysql_fetch_array($result1)){
    $tableau1[]=$data['valeur1'];
    }
    Et c'est à la fin que je souhaite transmettre ces 4 variables sous la forme d'une serie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $resultat_moyenne_agence=implode(",", $tableau1);
    je ne souhaite pas avoir la forme ci_dessous:
    array("resultat1"=>1"autre"=>3 etc)
    mais une serie à transmettre en retour
    array(1.2,3.5 etc..)

    c'est il possible à réaliser?

    Cdlt

  4. #4
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    Le problème à l'heure actuelle c'est que tu récupères une string en Javascript. Il faut que tu transformes chaque nombre de ta liste en type Number puis ensuite les remettre dans un tableau. :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var num = parseFloat('1.02');
    console.log(typeof num);

    Mais je pense que la meilleure solution à mettre en place est :
    - Passer les variables de PHP à Javascript grâce à json_encode.
    - Une fois que tu as le JSON, tu peux en faire ce que tu veux

    Exemple :
    En PHP, tu places tes quatre tableaux dans un seul puis tu encodes en JSON ce qui te fourniras un tableau Javascript contenant lui même quatre tableaux. Surtout ne transforme pas tes tableaux sous forme de série dans le PHP, laisse Javascript gérer cela.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $arr = array($tableau1, $tableau2, $tableau3, $tableau4);
     
    echo 'var arr = '. json_encode($arr);
    // var arr = [ [1.2, 6.7, 8.0], [1.3, 3.7, 5.0], [1.5, 1.7, 0], [1.8, 9.7, 9] ]
    En Javascript :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var arr = [ [1.2, 6.7, 8.0], [1.3, 3.7, 5.0], [1.5, 1.7, 0], [1.8, 9.7, 9] ];
    for (var i = 0; i < arr.length; i++)
      console.log(arr[i]);
     
    // Tu as bien tes quatre tableaux parés à être manipulés avec highcharts
    // [1.2, 6.7, 8]
    // [1.3, 3.7, 5]
    // [1.5, 1.7, 0]
    // [1.8, 9.7, 9]

  5. #5
    Membre confirmé
    Homme Profil pro
    developpeur
    Inscrit en
    Octobre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 124
    Par défaut Re
    Merci pour ce retour détaillé,

    Bon, j'ai fait une batterie de test et la conclusion c'est que l'affichage dans une "alert()" montre que ma chaine de mon tableau est nickel par rapport à ton exemple.

    Sauf quand je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for (var i = 0; i < arr.length; i++)
      console.log(arr[i]);
    Il me trouve plus de 70 éléments?? Si je remets le code en dur je retrouve bien mes 4 tableau de départ.

    En php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $arr = array($moyenne_agence, $agence_maxi, $agence_mini);
    //print_r($moyenne_agence);
    echo  'var arr = '.json_encode($arr);
    Avec print_r en php voici le retour de mon array consolidé (ex: avec 3 tb):
    Array ( [0] => Array ( [0] => 7.5 [1] => 8.2 [2] => 7.7 ) [1] => Array ( [0] => 31.5 [1] => 18.5 [2] => 37.2 ) [2] => Array ( [0] => 1.6 [1] => 1.6 [2] => 1.6 ) )

    Voici mon retour en js:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $.ajax({
      type    : 'POST',
      url     : 'agence_json.php',
      data    : 'typologie='+typologie+'&& date_debut='+date_debut+'&& date_fin='+date_fin+'&& titre='+nomappli,
      success: function(data) {
    //je vois ma array sous la forme souhaité
      alert(data);
     
    //var arr = [ [1.2, 6.7, 8.0], [1.3, 3.7, 5.0], [1.5, 1.7, 0], [1.8, 9.7, 9] ];
    for (var i = 0; i < arr.length; i++)
      alert(arr[i]);
    Si tu vois une erreur?

  6. #6
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    On va mettre ça sur le compte du vendredi, hein ?
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    success: function(data) {
    //je vois ma array sous la forme souhaité
      alert(data);
     
    //var arr = [ [1.2, 6.7, 8.0], [1.3, 3.7, 5.0], [1.5, 1.7, 0], [1.8, 9.7, 9] ];
    for (var i = 0; i < arr.length; i++)
      alert(arr[i]);
    }

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

Discussions similaires

  1. la lecture des variables en java
    Par yacin87 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 26/03/2010, 08h31
  2. transmettre des variables pour afficher galeries
    Par kkali dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/04/2009, 13h36
  3. [Etat] Lecture des données pour un tableau
    Par yasha-o dans le forum WebDev
    Réponses: 0
    Dernier message: 26/02/2009, 16h08
  4. nom des variables pour se faciliter la vie
    Par Slumpy dans le forum VB.NET
    Réponses: 2
    Dernier message: 28/03/2007, 10h31
  5. Réponses: 4
    Dernier message: 09/01/2007, 11h31

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