0

mysql データベースには、id、datetime、data の 3 つの要素があります。

コードの何が問題なのかを確認するのを手伝ってください。mysql データベースから最新の 15 データを抽出し、それらをハイチャートにプロットしたいと考えています。ただし、x 軸の横にあるグラフには最新の単一データしか表示できず、日時データは表示されません。

ウェブhttp://www.highcharts.com/demo/line-basicで提供されているコードを試してみましたが、これは定義済みの値のみを対象としており、mysql データベースの値を対象としていません。

私はそれを編集しようとしましたが、以下は私のコードです。

<script scr = "//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src='http://code.highcharts.com/highcharts.js' type='text/javascript'> </script>       
<script src='http://code.highcharts.com/modules/exporting.js' type='text/javascript'> </script>    

</head>
<?php
$rowsA = array();
$rowsA[]= Yii::app()->db->createCommand("Select data from customername order by id desc limit 15")->queryScalar();
$datedata[] = Yii::app()->db->createCommand("Select date from customername order by id desc limit 15")->queryScalar();
>
<script type = "text/javascript">
$(function () {
    $('#container').highcharts({
        chart: {
        type: 'line',
        marginRight: 130,
        marginBottom: 25
    },
        title: {
            text: 'BABY BODY TEMPERATURE',
            x: -20 
        },

        xAxis: {

       // type: 'datetime',
       // dateTimeLabelFormats:{
        //   month: '%e, %b',
          //  year: '%b'}//can work
     //  categories: ['<php echo join($datedata, "','") ?>'],
     // categories: [<php  echo join($datedata, "','"); ?>],
        //  },

        },
        yAxis: {
            title: {
            text: 'Temperature (°C)'
            },
        plotLines: [{
            value: 0,
            width: 1,
            color: '#808080'
        }]
    },
    tooltip: {
        valueSuffix: '°C',

    },
    legend: {
        layout: 'vertical',
        align: 'right',
        verticalAlign: 'top',
        x: -10,
        y: 100,
        borderWidth: 0
    },
    series: [{
        name: 'Baby Temperature',
        data: [<?php echo join($rowsA, "','");?>]


        //predefined data is working fine.
       // data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
    }]
 });
});

</script>

私はmysqlデータを抽出し、x軸が数値形式1,2,3のハイチャートにプロットできるようになった後、考えていました....そして、x軸に日時を表示しようとします。しかし、私は最初の段階で立ち往生しました。私が欲しいのは15個のデータですが、最新のデータは1つしか表示できません。

誰かが私を助けることができれば、私は非常に感謝しています。どうもありがとうございました。

4

1 に答える 1

0

ビューファイルでクエリを実行しないでください。モデルでゲッターを作成するか、コントローラーでクエリを実行し、データをビューに渡します。x-label フォーム配列の日付用。たとえば、過去 30 日間の配列を形成します。

        $output = array();
        for($i = 30; $i >=0 ; $i--)
        $output[] = date("Y-m-d", strtotime('-'. $i .' days'));
        return $output;

それは私たちの x ラベルになります。次に、モデルまたはコントローラーでデータを取得します。

$criteria=new CDbCriteria;
        $criteria->limit=15;
        $criteria->order='id DESC';
$data=new CActiveDataProvider(, array('customername'
            'criteria'=>$criteria,
        ));

データからシリーズの配列を作成します。Yii-highcharts は、大いに役立つ優れた拡張機能です。次に、プロットにプッシュします。

'xAxis'=>array(
                'categories'=> $xlabels, 
                'gridLineWidth' => 1,
                'gridLineDashStyle' => 'LongDash',
                'tickmarkPlacement' => 'on',
                'tickInterval' => 6
                    ),

'series'=> array(

            array('name'=> 'Failed records',
                'data'=> $data_array,
                'color' => '#ff0000',
                'shadow'=> false
            ),

javascript で yii-highcharts または echo php 変数を使用する場合:

var xlabels="<?php echo $xlabels?>";

次に、プロットで使用します。

xAxis:{
                categories: xlabels, 
                gridLineWidth : 1,
                gridLineDashStyle : 'LongDash',
                tickmarkPlacement : 'on',
                tickInterval : 6
                    },
于 2013-06-12T09:13:22.407 に答える