Highcharts et php

Fermé
BapPro Messages postés 46 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 4 février 2016 - Modifié par Whismeril le 17/01/2015 à 21:15
BapPro Messages postés 46 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 4 février 2016 - 26 janv. 2015 à 18:48
Salut a tous,

Je profite l'occasion pour vous feliciter pour ce grand aide que vous apportez au monde del'informatique.
Comment peut-on creer un graphique higcharts en utilisant php et sql qui extrait ses donnees en fonction d'une page login, si un user ayant acces a une seule information se connecte le graphique affichera une seule colonne pour ce user dans le cas un user ayant access a plusieurs informations le graphique affichera plusieurs colonnes de couleurs differentes?

- je peux realiser un graphique affichant plusieurs colonnes avec highchart et php en utilisant le format json. Mon probleme c'est qu'il m'est impossible de le faire si j'inclus des variables qui captent les informations du user pour afficher le graphique en fonction du nombre d'informations que ce user a access. J'ai essaye d'entamer le processus j'aimerai partager mes pas.

1- je cree la page de connection (connect.php)
<form method="post" action="<span style="color:#ff0000;">traitement.php</span>">
    
     <fieldset>
  <table border="2"  cellspacing="2" cellpadding="2" style="margin:auto;margin-top:30px;">
    <tr align="center">
       
      <td><input type="text" name="<span style="color:#0000ff;">username</span>" placeholder="username" size="30"></td>
    </tr>
    <tr align="center">
     
      <td><input type="password" name="<span style="color:#0000ff;">password</span>" placeholder="password" size="30"></td>
    </tr><br><br><br>

2- la page traitement.php

<?php
$conn=($GLOBALS["___mysqli_ston"] = mysqli_connect('', '', ''));
((bool)mysqli_query($conn, "USE OpenDent"));
 
if(strlen($_POST['username'])>0 && strlen($_POST['password'])>0)
{
$u=$_POST['username'];
$p=$_POST['password'];
echo"Utilisateur".$u;
$sql="select * from User";
 
$req=mysqli_query($GLOBALS["___mysqli_ston"], $sql);
while($d=mysqli_fetch_array($req))
{
         
    if($d['Type']=='Of' && $d['UserName']==$u && $d['Password']==$p)
    {
        session_start();
        $_SESSION['username']=$u;
        $_SESSION['pasAsword']=$p;
        header('Location:<span style="color:#ff0000;">data.php</span>');
               ((mysqli_free_result($req) || (is_object($req) && (get_class($req) == "mysqli_result"))) ? true : false);
    }
       
   
    else
    {
     
    //java script  echo '<body onLoad="alert(\'Utilisateur    non reconnu...\')">';
    header('location:login_view1.php');
    }
     
    }
    }
     
    else
    {
     
//java script  echo '<body onLoad="alert(\'Utilisateur    non reconnu...\')">';
    header('location:login_view1.php');
    }
((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
?>



3- je cree la page (data.php) qui contient le resultat du format json
<?php
$con = ($GLOBALS["___mysqli_ston"] = mysqli_connect("aws-rds-1.czbhn3seqt0j.us-west-2.rds.amazonaws.com", "mrprophete", "Bposs2014"));

if (!$con) {
  die('Could not connect: ' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)));
}

((bool)mysqli_query( $con, "USE OpenDent"));  

session_start();
$u = $_SESSION['username'];
$p = $_SESSION['password'];

$query = mysqli_query($GLOBALS["___mysqli_ston"], "Select 
(Case o.oid 
 When 1007  Then 'Newark'
     When 1008  Then 'Berkeley'
     When 1009  Then 'Elizabeth'
    Else 'No oid'
  end) as oid
, date_format(TranDate,'%b') as TranDate, Sum(p.Production) as Production
  FROM OpenDent.production p
inner join 
    OpenDent.User o
On p.oid=o.oid 
   Where 
       month(Trandate)=MONTH(CURRENT_DATE) AND YEAR(Trandate) = YEAR(CURDATE())
AND 
 o.UserName='".$u."' and o.Password='".$p."'
     group by month(p.TranDate), o.oid
       having sum(p.production)>0");

$category = array();
$category['nom'] = 'TranDate';

$series1 = array();
$series1['nom'] = 'Production';

$series2 = array();
$series2['nom'] = 'oid';



while($r = mysqli_fetch_array($query)) {
    $category['donnees'][] = $r['TranDate'];
    $series1['donnees'][] = $r['Production'];
    $series2['donnees'][] = $r['oid']; 
 
}

$result = array();
array_push($result,$category);
array_push($result,$series1);
array_push($result,$series2);




print json_encode($result, JSON_NUMERIC_CHECK);

((is_null($___mysqli_res = mysqli_close($con))) ? false : $___mysqli_res);
?>  






- Voici le fichier qui contient le graphique (graphe.php)

<script type="text/javascript">
       //barchart
      $(document).ready(function() {
          var options = {
              chart: {
                  renderTo: 'container11',
                  type: 'column',
                  options3d: {
              enabled: true,
              alpha: 15,
              beta: 15,
              viewDistance: 25,
              depth: 40
          },
                   
                   
              backgroundColor: '#F5F5F5',
                  width: 647,
                  height: 350,
           
                   
              },
              title: {
                  text: 'Childsmiles Yearly Productions',
                  x: -20 //center
              },
              subtitle: {
                  text: '',
                  x: -20
              },
              xAxis: {
                  categories: []
              },
                  credits: {
          enabled: false
      },
              yAxis: {
                  title: {
                      text: 'Productions'
                  },
                  plotLines: [{
                      value: 0,
                      width: 3,
                      color: '#808080'
                  }]
              },
              tooltip: {
               
                  formatter: function() {
                  return this.series.name + ': ' + '$' + Highcharts.numberFormat(this.y, 2);
                        }
                                       
                                       
              },
              legend: {
                  layout: 'vertical',
                  align: 'right',
                  verticalAlign: 'top',
                  x: -20,
                  y: 100,
                  borderWidth: 0
              },
               plotOptions: {
                  column: {
                       
                      dataLabels: {
                          enabled: false,
                          color: '#808080',
                           
                      }
                       
                  }
                   
              },
              series: []
          }
           
          $.getJSON("<span style="color:#ff0000;">data.php</span>", function(json) {
              options.xAxis.categories = json[0]['data'];
              options.series[0] = json[1];
              options.series[1] = json[2];
              chart = new Highcharts.Chart(options);
          });
      });
      </script>


- dans la requete vous pouvez voir newark, berkeley, elizabeth qui sont trois offices, il y a un user pour chaque office pouvant acceder a chacun de ces offices, et un autre user qui a acces a tous les offices si ce user se connecte le graphique doit afficher les trois colonnes, si le user ayant acces a berkeley se connecte il doit voir le graphique avec sa colonne.

- Si j'appelle la page data.php dans le header de la page traitemement.php (

session_start();
$_SESSION['username']=$u;
$_SESSION['pasAsword']=$p;
header('Location:<span style="color:#ff0000;">data.php</span>');

) quand je me connecte l'affichage se fait correctement en format json

a) Si berkeley se connecte voici le resultat en format json :[{"nom":"TranDate","donnees":["Jan"]},{"nom":"Production","donnees":[105576.91]},{"nom":"oid","donnees":["Berkeley"]}]

b) si le user qui a acces a tous les offices se connecte voici le resultat en format json :[{"nom":"TranDate","donnees":["Jan","Jan","Jan"]},{"nom":"Production","donnees":[311027.55,105576.91,285667.06]},{"nom":"oid","donnees":["Newark","Berkeley","Elizabeth"]}]

Normalement je dois appeler la page du graphique (graphe.php) dans la page (traitement.php) afin d'afficher le graphique, c'est ici se trouve mon probleme, le graphique ne s'affiche pas, et je ne sais comment faire ca...

Esperant beaucoup sur votre aide, merci d'avance

EDIT: Spécification du langage dans la coloration syntaxique.
A voir également:

3 réponses

olivier3843 Messages postés 10 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 19 janvier 2015
18 janv. 2015 à 02:39
Bonjour,

pour inclure une page php tu dois utliliser require_once().

par contre header('Location:<span style="color:#ff0000;">data.php</span>');
ca va pas, header n'attend pas de balise html !
0
BapPro Messages postés 46 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 4 février 2016
21 janv. 2015 à 16:47
Merci beaucoup pour ce remarque
('Location:<span style="color:#ff0000;">data.php</span>');
Alors j'enleve les balises html dans le header, bien que je l'ai pas dans mes codes, c'est en le postant elle s'apparait comme ca.
maintenant dans la page traitement.php je l'ai ecris comme ca: header('Location:data.php'); la page data.php m'affiche correctement les donnees en format json en fonction du user connecte comme je l'ai deja explique.
Mon objectif c'est d'appeler la page graphe.php a la place, cette page contient les codes highcharts pour pouvoir m'afficher le graphique en fonction du user connecte. la page graphe.php contient cette partie:

$.getJSON("data.php", function(json) {
options.xAxis.categories = json[0]['data'];
options.series[0] = json[1];
options.series[1] = json[2];
chart = new Highcharts.Chart(options);
});

qui appelle data.php.
- Mon probleme c'est comment implementer cette partie du code pour afficher le graphique, comme ca aunlieu d'appeler data.php dans le header j'appelerai graphe.php ?
Merci davance
0
BapPro Messages postés 46 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 4 février 2016
19 janv. 2015 à 16:04
Merci beaucoup pour ce remarque
('Location:<span style="color:#ff0000;">data.php</span>');
Alors j'enleve les balises html dans le header, bien que je l'ai pas dans mes codes, c'est en le postant elle s'apparait comme ca.
maintenant dans la page traitement.php je l'ai ecris comme ca: header('Location:data.php'); la page data.php m'affiche correctement les donnees en format json en fonction du user connecte comme je l'ai deja explique.
Mon objectif c'est d'appeler la page graphe.php a la place, cette page contient les codes highcharts pour pouvoir m'afficher le graphique en fonction du user connecte. la page graphe.php contient cette partie:
 $.getJSON("data.php", function(json) {
options.xAxis.categories = json[0]['data'];
options.series[0] = json[1];
options.series[1] = json[2];
chart = new Highcharts.Chart(options);
});
qui appelle data.php.
- Mon probleme c'est comment implementer cette partie du code pour afficher le graphique, comme ca aunlieu d'appeler data.php dans le header j'appelerai graphe.php ?
Merci davance
0
BapPro Messages postés 46 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 4 février 2016
26 janv. 2015 à 18:48
Toujours pas de reponse!
0