2015-10-19 119 views
2

我使用chart.js製作餅圖。我希望爲while循環生成的每個切片分配不同的顏色。每行PHP隨機顏色

$pull_request = 'SELECT * FROM `oc_aa_affiliatecollclicktracking`'; 
$sqli = $db->query($pull_request); 

$num_rows=mysqli_num_rows($sqli); 
$cur_row=0; 
var pieData = [ 
       <?php 
       while ($row = mysqli_fetch_array($sqli)) {  
       $color=intval(256*$cur_row/($num_rows-1)); 
       $cur_row++; 
       echo '{ 
          value: '.$row["product_clicks"].', 
          color: "rgb(256,'.$color.')", // NEED TO BE RANDOM FOR EVERY ROW/SLICE 
          highlight: "#333", 
          label: "' .$row["product_id"].'" 
          },'; 
       } 
       ?> 
       ]; 

       var ctx = document.getElementById("chart-area").getContext("2d"); 
       window.myPie = new Chart(ctx).Pie(pieData); 

}); 

我發現,隨機的顏色會在整個圖表的頁面刷新上發生變化,但不會影響單個切片。任何想法?

+0

你需要將'#999'變成一個變量,然後在每次迭代時改變它。 – chris85

+0

只需將您在while循環中找到的示例放置在每個循環中即可觸發。 – Wobbles

+1

[用PHP生成隨機十六進制顏色代碼]可能的副本(http://stackoverflow.com/questions/5614530/generating-a-random-hex-color-code-with-php) – chris85

回答

2

您可以使用rand()函數獲取特定範圍內的隨機數。 看看here

例子:

$color = "#" . rand(10,100); 

可以更換顏色$無論你想要的。

如果你想進制顏色使用此功能

function random_color(){ 
    mt_srand((double)microtime()*1000000); 
    $c = ''; 
    while(strlen($c)<6){ 
     $c .= sprintf("%02X", mt_rand(0, 255)); 
    } 
    return $c; 
} 
+0

完美,這個作品很棒!謝謝 – Grasper

0

如果你想要的顏色,隨意改變明顯,你會想一個JavaScript的解決方案,或者如果你想每個切片是一種不同的顏色各加載頁面的時間,你可以使用類似的東西?

<?php 

function randomColour() { 
    // Found here https://css-tricks.com/snippets/php/random-hex-color/ 
    $rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'); 
    $color = '#'.$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)]; 
    return $color; 
} 

while ($row = mysqli_fetch_array($sqli)) {     
    echo '{ 
     value: '.$row["product_clicks"].', 
     color: '.randomColour().', // NEED TO BE RANDOM FOR EVERY ROW/SLICE 
     highlight: "#333", 
     label: "' .$row["product_id"].'" 
    },'; 
} 
?> 

如果你需要的JavaScript的解決方案,這將是更爲複雜,因爲我不知道在.Pie發生了什麼()構造函數,你會怎麼掛鉤變化顏色的元素進去