Jony1337: а ты ожидал готового работающего кода? Неужели так сложно понять, что под getRandomFriendData() скрывается тот код, который есть сейчас? А уж об ошибках синтаксиса и сам как-то позаботишься -_-
Даже если $a < 1 && ++$a; и быстрее, всё равно пишите if ($a < 1) ++$a;. Код должен быть читаемым, такая микрооптимизация ни к чему, если она сильно портит читаемость кода
Петр желательно дублировать counter и для article, чтобы для вывода кол-ва просмотров не дёргать целую таблицу. Но без дополнительной таблицы, увы, для уникальных просмотров не обойтись
Junior: я бы написал плагин к CMS для настроек калькулятора на случай, если придётся менять данные в нём. Без этого, наверное тупо бы в html прописал. Как удобнее, так и делайте.