Zapewne spotkałeś się już na którymś z serwisów związanych z blogosferą charakterystyczne menu składające się z ciągu słów różnej wielkości. W tym artykule dowiesz się, jak zrobić takie menu.
<?php // pobieram z listy kategorii identyfikatory wszystkich kategorii $sql = mysql_query("SELECT cid FROM CMS_cat"); while($cat = mysql_fetch_array($sql)) { // liczę, ile w danej kategorii jest materiałów $ile = mysql_numrows(sql("SELECT aid FROM CMS_articles_cat WHERE cid = $cat[cid]")); // aktualizuję wartość cat_count dnaej kategorii informującą // o liczbie materiałów w kategorii sql("UPDATE CMS_cat SET cat_count = '$ile' WHERE cid = '$cat[cid]'"); } // pobieram listę unikalnych wartości cat_count z listy kategorii // sortując je wg tej wartości rosnąco $sql = mysql_query("SELECT DISTINCT cat_count FROM CMS_cat ORDER BY cat_count ASC"); // obliczam liczbę unikalnych wartości $ile = mysql_numrows($sql); // obliczam, co ile wartości należy podnieść ranking // założyłem 9 stopni wielkości czcionki. $coile = ceil($ile/9); // ustawiam indeks wartości i rankingu na 1 $i = 1; $rank = 1; while($cat = mysql_fetch_array($sql)) { // wstawiam wartość rankingu do danych każdej kategorii, // która ma daną wartość cat_count. sql("UPDATE CMS_cat SET cat_rank = '$rank' WHERE cat_count = '$cat[cat_count]'"); // jesli indeks unikalnych wartosci zrówna się z wartością // zmiennej $coile, resetuję indeks i zwiększam wartość rankingu if ($i==$coile) { $i=1; $rank++; } else { // w przeciwnym wypadku zwiększam wartość indeksu o 1 $i++; } } ?> |
Chętnie dowiem się o ciekawych wdrożeniach tego typu menu w serwisach nie będących blogami, gdzie jest to rozwiązanie coraz bardziej popularne.