2016-07-17 14 views
1

私は同様の質問を見たことがありますが、それはどうしたのかまだ分かりません..私はこのループを日付、 DB内の各日付について、毎日のリード線を表示し、DB内の各日付に対してライン・チャートで販売したいと考えています。ここでGoogleのグラフの日付でデータベースの値を反復する方法

$sql = "SELECT * FROM customers WHERE source = 'website' ORDER BY date ASC"; 
$result = $conn->query($sql); 
if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     $sold = $row['sold']; 
     $visit= $row['visit']; 
     $date= $row['date']; 
    }else{ 

    }  
} 

は、チャートスクリプトです -

<script type="text/javascript"> 

    google.charts.setOnLoadCallback(drawChartl); 

    function drawChartl() { 
    var data = google.visualization.arrayToDataTable([ 
     ['Date', 'Leads', 'Sold'], 
     ['1st', 6,  2], 
     ['2nd', 3,  1], 
     ['3rd', 2,  3], 
    ]); 

    var options = { 
     title: 'Internet Performance', 
     curveType: 'function', 
     legend: { position: 'top' } 
    }; 

    var chart = new google.visualization.LineChart(document.getElementById('curve_chart')); 

    chart.draw(data, options); 
    } 
</script> 


<div id="curve_chart" style="width: 1900px; height: 500px"></div> 

答えて

1

次のスニペットを参照してください...

は、すべてのデータを保持する配列を必要とする - >$json

各行を追加します〜$json - >$dataRow

nはjavascriptに結果を書く - ...>data.addRows(<?= $jsonstring ?>);

は、このような何かをしようと、おそらくあまりにも日付をフォーマットする必要があり、このことができます

<?php 
    $json = array(); 
    $sql = "SELECT * FROM customers WHERE source = 'website' ORDER BY date ASC"; 
    $result = $conn->query($sql); 
    if ($result->num_rows > 0) { 
     while($row = $result->fetch_assoc()) { 
      $dataRow = array(
       $row['date'], 
       $row['visit'], 
       $row['sold'] 
     ); 
      array_push($json, $dataRow); 
     } 
    } 

    $jsonstring = json_encode($json); 
?> 

<script src="https://www.gstatic.com/charts/loader.js"></script> 
<script type="text/javascript"> 
    google.charts.load('current', { 
    'callback': function() { 
     var data = google.visualization.arrayToDataTable([ 
     [{type: 'string', label: 'Date'}, {type: 'number', label: 'Leads'}, {type: 'number', label: 'Sold'}] 
     ]); 

     data.addRows(<?= $jsonstring ?>); 

     var options = { 
     title: 'Internet Performance', 
     curveType: 'function', 
     legend: { position: 'top' } 
     }; 

     var chart = new google.visualization.LineChart(document.getElementById('curve_chart')); 
     chart.draw(data, options); 
    }, 
    'packages': ['corechart'] 
    }); 
</script> 

<div id="curve_chart" style="width: 1900px; height: 500px"></div> 
+0

希望、ここで私がテストするために使用されるPHPフィドルです - > [テストラインチャート](http://phpfiddle.org/main/code/r4cq-pkcg) – WhiteHat

+0

素晴らしい作品です!これはその問題に答えますが、1つの日付に対して複数の訪問があった場合は、同じ日付をそれぞれ複数回表示します。その日のリードの各日付を繰り返し処理するにはどうすればよいでしょうか?だから07/14 = 4回の訪問の代わりに07/14 4回チャートに..ありがとう! –

+0

sql - > 'SELECT date、sum(visit)を" visit "、sum(sold)を"売り "FROMの顧客として調整することをお勧めします。source = 'website'グループ日付ORDER BY日付ASC' – WhiteHat

関連する問題