Problema valori lipsa din baza de date pt Highcharts LINE cu

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
sterica
Mesaje: 285

Problema valori lipsa din baza de date pt Highcharts LINE cu

Salutare,
Am urmatorul cod pentru chartul de tip line:

Cod: Selectaţi tot

function fetch_select(){
  val_an_inceput = $('#get_an_inceput').val();
  val_personal = $('#get_personal').val();
  $.ajax({
    type: 'POST',
    url: 'Query_sql.php',
    data: { get_an_inceput: val_an_inceput,
            get_personal: val_personal
    },
    success: function (response) {
      document.getElementById('container').innerHTML=response;
      columnChart( JSON.parse(response));
    }
  });
}
function columnChart(data_v){
  if(data_v.length >0){
    $(function () {
      $('#container').highcharts({
      title: {
          text: 'Monthly Average Temperature',
          x: -20 //center
      },
      subtitle: {
          text: 'Source: WorldClimate.com',
          x: -20
      },
      xAxis: {
          categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
      },
.......
      series: [{
          name: 'Tokyo',
          data: data_v // valori sub forma: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
      }]
  });
    });

  }
}
baza de date arata cam asa:

Cod: Selectaţi tot

+----+-----------+--------------+
| ID | MONTH | QUANTITY |
+----+----- -----+--------------+
| 1  |   1   |     1  |
| 2  |   2   |     2  |
| 3  |   7   |     3  |
| 4  |   4   |     1  |
| 5  |   2   |     3  |
| 6  |  12   |     8  |
| 7  |   1   |     6  |
+----+-------+------------------+
fisierul query_sql.php:

Cod: Selectaţi tot

<?php
include 'bd_cnx.php';

if(isset($_POST['get_an_inceput'],
         $_POST['get_personal']
         )){
  //Array-ul cu datele care vor fi returnate, in format json
  $finalArray = $store = [];
  // Interogare SQL
  $sch_an_inceput = $_POST['get_an_inceput'];
  $sch_personal = $_POST['get_personal'];

  $sql = "SELECT
.......
 ORDER BY TOTAL DESC";

  // Executa interogarea si retine datele returnate
  $result = $conn->query($sql);
  // daca $result contine cel putin un rand
  if ($result->num_rows > 0){
  // adauga datele din fiecare rand din $result in $ret
  while($row = $result->fetch_assoc()){
    //floatval() transforma sirul numeric in numar

    $ret[] =[floatval($row['TOTAL'])];
        }
  }

}
  //returneaza datele ca json
  if (count($ret) >1){
    echo json_encode($ret);
  }
  else {
    echo 'Nu s-au realizat livrari in perioada selectata';
  }
?>
fisierul query_sql.php returneaza valorile facand suma pentru fiecare luna in parte. Pana aici totul functioneaza corect.
In grafic la xAxis.categories sunt trecute toate lunile, insa daca in baza mea de date nu sunt valori in luna MAI nu returneaza nimic si atunci graficul se decaleaza, ramand 11 luni in loc de 12
Ce pot face ca atunci cand in baza de date nu sunt valori la o luna sa imi returneze valoarea 0.
In baza de date exista asa:

Cod: Selectaţi tot

ian->1; mar->5; apr->6; sep->
iar eu am nevoie sa imi returneze asa:

Cod: Selectaţi tot

ian->1; feb->0; mar->5; apr->6; mai->3; iun->4; iul->7....dec->3
Multumesc!

MarPlo Mesaje: 4343
Incearca asa in codul php (Select-ul sa preia si coloana MONTH pentru fiecare TOTAL):

Cod: Selectaţi tot

$ret =[0,0,0,0,0,0,0,0,0,0,0,0];
while($row = $result->fetch_assoc()){
  //intval() si floatval() transforma sirul numeric in numar
  $ret[intval($row['MONTH'])-1] =floatval($row['TOTAL']);
}

sterica Mesaje: 285
functioneaza perfect, multumesc mult!

Subiecte similare