2017-02-10 15 views
1

データベースからクエリを実行していました。しかし、データの結果はデー​​タベースから正しくありません。 DBの私のテーブルは enter image description hereこのjavascriptとPHPコードに問題がありますか?

JavaScriptコードで

//app.js 
$(document).ready(function(){ 
    $.ajax({ 
     url: "http://localhost/chartjs/data.php", 
     method: "GET", 
     success: function(data) { 
      console.log(data); 
      var Gender = []; 
      var jumlah = []; 
      var Fakultas = []; 
      var jumlah_orang = []; 

      for(var i in data) 
     { 
      //Gender.push("Gender " + data[i].JenisKelaminID); 
      if(data[i].JenisKelaminID == 1) 
      { 
       Gender.push("Men"); 
      } 
      if(data[i].JenisKelaminID == 2) 
      { 
       Gender.push("Women"); 
      } 

      jumlah.push(data[i].jumlah); 

      if(data[i].Fakultas == "A") 
      { 
       Fakultas.push("FAPERTA"); 
      } 

      if(data[i].Fakultas == "B") 
      { 
       Fakultas.push("FKH"); 
      } 

      if(data[i].Fakultas == "C") 
      { 
       Fakultas.push("FPIK"); 
      } 

      if(data[i].Fakultas == "D") 
      { 
       Fakultas.push("FAPET"); 
      } 

      if(data[i].Fakultas == "E") 
      { 
       Fakultas.push("FAHUTAN"); 
      } 

      if(data[i].Fakultas == "F") 
      { 
       Fakultas.push("FATETA"); 
      } 

      if(data[i].Fakultas == "G") 
      { 
       Fakultas.push("FMIPA"); 
      } 

      if(data[i].Fakultas == "H") 
      { 
       Fakultas.push("FEM"); 
      } 

      if(data[i].Fakultas == "I") 
      { 
       Fakultas.push("FEMA"); 
      } 

      jumlah_orang.push(data[i].jumlah_orang); 
     } 
     Gender.push("Other"); 
     Fakultas.push("Other"); 
      var chartdata = { 
       labels: Gender, 
       datasets: [ 
        { 
         label : 'Total', 
         backgroundColor: 
         [ 
          'rgba(79, 181, 59, 1)', //green for men 
          'rgba(239, 87, 196, 1)', //pink for women 
          'rgba(166, 160, 164, 1)', //grey for other 
         ], 
         borderColor: 'rgba(200, 200, 200, 0.75)', 
         hoverBackgroundColor: 'rgba(200, 200, 200, 1)', 
         hoverBorderColor: 'rgba(200, 200, 200, 1)', 
         data: jumlah 
        } 
       ] 
      }; 

      var chartdata2 = { 
       labels: Fakultas, 
       datasets: [ 
        { 
         label : 'Total', 
         backgroundColor: [ 
          'rgba(79, 181, 59, 1)', 
          'rgba(239, 87, 196, 1)', 
          'rgba(166, 160, 164, 1)', 
          'rgba(96, 60, 64, 1)', 
          'rgba(66, 16, 164, 1)', 
          'rgba(177, 18, 74, 1)', 
          'rgba(176, 60, 64, 1)', 
          'rgba(186, 10, 64, 1)', 
], 
         borderColor: 'rgba(200, 200, 200, 0.75)', 
         hoverBackgroundColor: 'rgba(200, 200, 200, 1)', 
         hoverBorderColor: 'rgba(200, 200, 200, 1)', 
         data: jumlah_orang 
        } 
       ] 
}; 

      var ctx = $("#mycanvas"); 
      var ctx2 = $("#mycanvas2"); 


      var barGraph = new Chart(ctx, { 
       type: 'bar', 
       data: chartdata 

      }); 

      var barGraph2 = new Chart(ctx2, { 
       type: 'bar', 
       data: chartdata2 

      }); 
     }, 
     error: function(data) { 
      console.log(data); 
     } 
    }); 
}); 

PHPコード "fakultas" のためのチャート結果は、私たちのように、この enter image description here

[1]: https://i.stack.imgur.com/AgX6h.png 

ようになりました

<?php 
//setting header to json 
header('Content-Type: application/json'); 

//database 
define('DB_HOST', '127.0.0.1'); 
define('DB_USERNAME', 'root'); 
define('DB_PASSWORD', ''); 
define('DB_NAME', 'dbintegrasi'); 

//get connection 
$mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME); 
if(!$mysqli){ 
    die("Connection failed: " . $mysqli->error); 
} 

//query to get data from the table 
$query = sprintf("SELECT JenisKelaminID, COUNT(JenisKelaminID) as jumlah FROM tahunmasukmagister GROUP BY JenisKelaminID"); 
$query2 = sprintf("SELECT Fakultas, COUNT(Fakultas) as jumlah_orang FROM s2view GROUP BY Fakultas"); 

//execute query 
$result = $mysqli->query($query); 
$result2 = $mysqli->query($query2); 

//loop through the returned data 
$data = array(); 

foreach ($result as $row){ 
    $data[] = $row; 
} 

foreach ($result2 as $row){ 
    $data[] = $row; 
} 

//freee memory associated with result 
$result->close(); 
$result2->close(); 

//close connection 
$mysqli->close(); 

//new print the data 
print json_encode($data); 

見ることができます、テーブル「Fakultas G」(FMIPA)は3ですが、チャート結果Fakultas Gは3です。これらのコードに何が問題なのですか?これを解決するために私を助けてください。ありがとう

+0

あなたの2番目のforeachステートメントであなたのPHPで:ちょうど$ resultから追加したものすべてを上書きしないでしょうか? – CodeCabin

+0

そのコードをどのように入力すればよいですか?私はそれを取得しない@コードキャビン –

+0

uはどのクエリが返ってきているか確認できますか?あなたがトップで言及したのと同じですか? –

答えて

1

はLOOP-

if(typeof data[i].JenisKelaminID !== 'undefined'){ 

     if(data[i].JenisKelaminID == 1) 
     { 
      Gender.push("Men"); 
     } 
     if(data[i].JenisKelaminID == 2) 
     { 
      Gender.push("Women"); 
     } 

     jumlah.push(data[i].jumlah); 
} 

if(typeof data[i].Fakulta !== 'undefined'){ 

     if(data[i].Fakultas == "A") 
      { 
       Fakultas.push("FAPERTA"); 
      } 

      if(data[i].Fakultas == "B") 
      { 
       Fakultas.push("FKH"); 
      } 

      if(data[i].Fakultas == "C") 
      { 
       Fakultas.push("FPIK"); 
      } 

      if(data[i].Fakultas == "D") 
      { 
       Fakultas.push("FAPET"); 
      } 

      if(data[i].Fakultas == "E") 
      { 
       Fakultas.push("FAHUTAN"); 
      } 

      if(data[i].Fakultas == "F") 
      { 
       Fakultas.push("FATETA"); 
      } 

      if(data[i].Fakultas == "G") 
      { 
       Fakultas.push("FMIPA"); 
      } 

      if(data[i].Fakultas == "H") 
      { 
       Fakultas.push("FEM"); 
      } 

      if(data[i].Fakultas == "I") 
      { 
       Fakultas.push("FEMA"); 
      } 

      jumlah_orang.push(data[i].jumlah_orang); 

} 

のための内部これが役立つことを願っを解析するデータのロジックを変更してください。

+0

それは@ Asfhan Shujatで動作します。この問題を解決するのを手伝ってくれてありがとう。 GBU –

0

jqueryのjsonデータをphpでエンコードしたものをデコードする必要があります。

+0

どうやってですか? @AjayDhul –

+0

url: "http://localhost/chartjs/data.php"、 メソッド: "GET"、 成功:function(data){//ここで使用するvar obj = jQuery.parseJSON(data); // objを簡単に解析できます –

関連する問題