2016-11-06 49 views
0

在我們的網站上,我們有一個動畫,從用戶旋轉頭像。問題是,這真的是隨機的。如果user1具有更多(1.00 $)和user2(0.50 $),則它可以在動畫中顯示比user1更多的user2頭像。PHP - 顯示更多用戶的更多百分比

化身獲取數組中推這裏(值你得到的金額)

SELECT avatar, SUM(value) FROM `game".$gamenum."` GROUP BY `value` DESC 
while($row = mysql_fetch_array($rs)) { 
    $crd .= 'avatar.push(\''.$row["avatar"].'\');'; 
    $i++; 
} 

現在這裏它在動畫

for(var i=1; i <= 44; i++) { 
    var rand = getRandomInt(0,(avatar.length-1)); 
    $(\'#img\'+i).attr("src",avatar[rand]); 
} 

的44個職位得到隨機的,這是「getRandomInt」功能

function getRandomInt(min, max) { 
    return Math.floor(Math.random() * (max - min + 1)) + min; 
} 

我試了很多,但我沒有找到任何如何顯示艾娃rtars如全額的百分比

本例中的全部金額爲:1.50 $。類似於user1 + user2的金額。

任何人都可以幫助我嗎?

+0

在您最初的MySQL查詢中,爲什麼按值分組? – NavkarJ

+0

@Nvj這就是我正在測試的......但它像以前一樣......在我沒有價值之前。對於團體價值,我有同樣的...沒有任何其他的做什麼 – Scholli

+0

你想顯示一個化身的百分比及其名稱,是否正確? – NavkarJ

回答

0

首先,您需要按照您的MySQL查詢中的值排序用戶,而不是按值對它們進行「分組」。相反,如果avatar不是唯一鍵,則應該按它進行分組。

您還需要所有用戶的所有值的總和。在下面的while循環中計算它。

SELECT avatar, SUM(value) FROM `game".$gamenum."` ORDER BY `value` DESC 
$sum = 0; 
while($row = mysql_fetch_array($rs)) { 
    $crd .= 'avatar.push(\''.$row["avatar"].'\');'; 
    $i++; 
    $sum += $row["value"]; 
} 

在此之後,您可能會將頭像數組和總和$ sum值傳遞給JavaScript(前端)。

在前端,而不是循環通過44個圖像,循環通過化身。

您還需要跟蹤是否所有44張圖像都已填滿。在這種情況下,我們需要結束循環。

// Keep track of number of images inserted 
var imagesInserted = 0; 

for(var i = 0; i < avatars.length; i++) 
{   
    // Get avatar's value. Assuming that your JavaScript array contains the avatar's value at the second index and name at the first inde 
    var val = avatar[i][1]; 

    // Get avatar's percent share in the 44 images 
    var n = getImagesShare(avatar[i][1], sumOfAllAvatars); 

    // Check whether 44 images are over 


    if(imagesInserted <= 44) 
    { 
     // Code to insert 'n' images for this user 

     // Increment the number of images inserted 
     imagesInserted += n; 
    } 
    else 
    { 
     // All 44 images have been inserted, end the loop 
     i = avatars.length + 1; 
    } 
} 

最後,函數計算用戶應該得到的圖像數量:

function getImagesShare(avatarValue, totalValue) 
{ 
    var numberOfImages = Math.floor((avatarValue/totalValue) * 44); 
    return numberOfImages; 
} 

以上是基於代碼的基本實現。在性能方面,您應該執行大部分與後端每個用戶顯示圖像數量有關的處理,並且除了在需要的情況下還提供更多功能外,還只在前端顯示數據。