2016-05-13 40 views
0

對於一個特殊的原因,我想只要我創建一個新的配置文件第二次,它選擇一個獨特隨機頭像從我profile_avatars列表。然後,當所有頭像已經鏈接到一個配置文件一次它再次開始。這意味着頭像可以鏈接到多個配置文件。選擇項目的項目只有一次,那麼,如果沒有更多的可用

我用兩個MySQL表,該表是profile_infosprofile_avatars

這是我的PHP代碼,因此它最早被隨機選擇一個頭像:

$req_avatar = $bdd->query('SELECT * FROM profile_avatars ORDER BY RAND() LIMIT 1'); 
$data_avatar = $req_avatar->fetch(); 
$rand = $data_avatar['avatar_address']; 
+1

爲什麼 「隨機」 的,還是你的意思嗎?爲什麼不按照某種順序使用化身?用戶能夠分辨/關心嗎? – eggyal

+0

如果您有權訪問數據庫,只需添加標誌列(0/1)。一旦你選擇一個標誌爲0(在你的查詢中的WHERE標誌= 0)的化身,將(UPDATE表)該標誌提升爲1.如果沒有更多的具有0標誌的化身,重置它們並重新開始。 – mitkosoft

+0

對於我的情況,如果我有10個頭像並製作20個配置文件,我需要確保每個頭像已被使用過2次。 – casusbelli

回答

1

這應該工作:

輪廓替身表:

profile_avatars 
------------------------------------ 
id | used_on_rotation | url | title | 
------------------------------------- 
1 | 0    | .. | .. | 
------------------------------------- 
2 | 1    | . .| .. | 
------------------------------------- 
... 

當你註冊,通過

$bdd->query('SELECT * FROM profile_avatars where used_on_rotation = 0 ORDER BY RAND() LIMIT 1'); 
  1. 找到頭像,如果你得到任何結果 - 這意味着所有的化身已被使用一次,並且循環可以通過

    update profile_avatars set used_on_rotation = 0

  2. 復位

然後嘗試再次找到頭像

  • 如果你得到一個$ data_avatar,然後運行查詢

    update profile_avatars set used_on_rotation = 0 where id = $DATA_AVATAR_ID

  • +0

    它像一個魅力。非常感謝你。 – casusbelli

    相關問題