Hocam hazır konusu açılmışken bir öneride bulunayım bu konu ile ilgili her kullanıcı için ekstra veritabanında alan kaplamış olmayın.

kısa bir örnekle anlatmak gerekirse;


function returnColorCode()
{
return array (
"FF3636"//kirmizi
,"AA4242"//bordo
,"F0B047"//turuncu
,"91F047"//acik yeşil
,"70AA42"//koyu yeşil
,"13E1D8"//açık mavi
,"137DE1"//mavi
,"6713E1"//mor
);
}

function returnUserBackgroundColorCode($userId)
{
$renkler = returnColorCode();
$renkSayisi = count($renkler);
return $renkler[$userId % $renkSayisi];
}


Yukarıda yazdığım kodda returnColorCode fonksiyonu içinde renklerinizi tutuyorsunuz. İleride isterseniz buraya yeni renk kodları ekleyerek göstereceğiniz renk sayısını da arttırabilirsiniz(dilerseniz array'i iki boyutlu yaparak foreColor rengi de tutabilrisiniz her renk için)

İkinci fonksiyon olan returnUserBackgroundColorCode fonskiyonu ise kullanıcının neredeyse her sayfa için hali hazırda çekmiş olduğunuz userId'sini alıp, renkler array'inin boyutuna göre mod olarak bu array'den kullanıcı için denk gelen rengi çekip size döndüren method. Bu sayede yeni bir renk eklemediğiniz sürece daima kullanıcı için aynı rengi göstereceksiniz ve ekstra bir veritabanı maliyeti gerekmemiş olacak :)

Örnek kullanım ve çıktı:


echo returnUserBackgroundColorCode(5);
echo returnUserBackgroundColorCode(100);
echo returnUserBackgroundColorCode(2987);

//
//Çıktılar :
//
//13E1D8
//70AA42
//91F047
//