2017-03-21 4 views
0

Ich möchte Diagramm aus Tabelle in Datenbank erstellen. Meine Datenbank ist auf phpMyAdmin. Hier ist meine Tabelle:Wie man Abfrage und Diagramm in Yii2 mit Highchart erstellen?

Tabelle Hapus

enter image description here

Ich möchte ein Diagramm wie dieses in Yii2 machen:

enter image description here

Ich habe HighchartsController:

<?php 
namespace app\controllers; 

use yii\web\Controller; 
use app\models\Hapus; 
use yii\helpers\Json; 


class HighchartsController extends Controller 
{ 
    public function actionIndex() 
    { 

    $rows = (new \yii\db\Query()) 
    ->select(['Year']) 
    ->from('hapus') 
    ->limit(10) 
    ->all(); 

    $rowsa = (new \yii\db\Query()) 
    ->select(['Female']) 
    ->from('hapus') 
    ->limit(10) 
    ->all(); 

    $rowsaa = (new \yii\db\Query()) 
    ->select(['Male']) 
    ->from('hapus') 
    ->limit(10) 
    ->all(); 

     $rows = []; 
     $rowsa = []; 
     $rowsaa= []; 


     $data['year'] = json_encode($rows); 
     $data['female'] = json_encode($rowsa); 
     $data['male'] = json_encode($rowsaa); 




     return $this->render('index',$data); 
    } 


} 

diese index.php

meiner Sicht ist
<?php 
use app\assets\HighchartsAsset; 


HighchartsAsset::register($this); 
$this->title = 'Highcharts Test'; 
?> 


<div class="container"> 
     <div class="row"> 
       <div class="col-md-6 col-sm-6 col-xs-12"> 
       <div class="x_panel"> 
        <div id="my-chart" style="min-width: 310px; height: 400px; margin: 0 auto"></div> 



<?php $this->registerJs(" 
$(function() { 
    $('#my-chart').highcharts({ 
     title: { 
      text: 'Gender', 
      x: -20 //center 
     }, 

     xAxis: { 
      categories: $year 
     }, 
     yAxis: { 
      title: { 
       text: 'Total' 
      }, 
      plotLines: [{ 
       value: 0, 
       width: 1, 
       color: '#808080' 
      }] 
     }, 
     tooltip: { 
      valueSuffix: '' 
     }, 
     legend: { 
      layout: 'vertical', 
      align: 'right', 
      verticalAlign: 'middle', 
      borderWidth: 0 
     }, 
     series: [{ 
      name: 'Male', 
      data: $male 
     }, { 
      name: 'Female', 
      data: $female 
     }] 
    }); 
}); 
")?> 
</div> 
</div> 

Als ich versuchte, diese Codes zu laufen, hat das Diagramm nicht angezeigt. Es war so:

enter image description here

Es gab keine Fehler in Debug-Konsole. Aber ich weiß nicht, warum das Diagramm nicht angezeigt wurde

Könnte jemand bitte meine Codes korrigieren? Vielen Dank im Voraus :)

+0

, warum Sie die gleiche Frage wiederholen Post ???????? – scaisEdge

+0

es ist nicht die gleiche Frage. Es gibt keinen Highchart-Code für meine vorherige Frage und auch keine Antwort, die ich von dieser Frage erwarte. @scaisEdge – dewinataria

+0

Haben Sie die highcharts.js-Bibliothek registriert? Wo ist Ihr HTML-Container # my-chart aus Ihrer Sicht? Überprüfen Sie Fehler in der Debug js-Konsole .. –

Antwort

1

Sie haben eine leere Arrays vor Ansicht und auch Daten in Diagramm machen ist leer:

$rows = []; 
$rowsa = []; 
$rowsaa= []; 

Und in Abfrageergebnissen Sie falsche Array-Struktur haben.

Versuchen Sie diese und verwenden column() statt all():

class HighchartsController extends Controller 
{ 
    public function actionIndex() 
    { 

     $rows = (new \yii\db\Query()) 
      ->select(['Year']) 
      ->from('hapus') 
      ->limit(10) 
      ->column(); 

     $rowsa = (new \yii\db\Query()) 
      ->select(['Female']) 
      ->from('hapus') 
      ->limit(10) 
      ->column(); 

     $rowsaa = (new \yii\db\Query()) 
      ->select(['Male']) 
      ->from('hapus') 
      ->limit(10) 
      ->column(); 

     $rowsa = array_map('floatval', $rowsa); 
     $rowsaa = array_map('floatval', $rowsaa); 

     $data['year'] = json_encode($rows); 
     $data['female'] = json_encode($rowsa); 
     $data['male'] = json_encode($rowsaa); 

     return $this->render('index',$data); 
    } 
} 
+0

Es funktioniert. Vielen Dank für Ihre Hilfe :) GBU – dewinataria

Verwandte Themen