голосование
PHP
Javascript
BASH
Firebird
HTML
Программы
Хостинг
Майнинг
Ресурсы
GIT
SEO
Oracle
Python
Проголосуйте за категорию!
счётчик
Яндекс.Метрика

Голосование на сайте в процентах PHP

На работе мне потребовалось сделать скрипт для подсчета в процентах сделанной работы. Вся сложность заключалась в том, что должны отображаться проценты сделанной работы. Я не сразу придумал алгоритм расчёта сделанной работы в процентах. Я зашел на яндекс и прочитал несколько статей. Я не нашел для себя нужного скрипта, но я увидел алгоритм расчёта. Я приведу вам простой вариант моего скрипта.


//голосование для двух рубрик
function voting($php, $jquery)
{
    $votingArr = array();
    $sum = $php + $jquery;
    $one = ($sum * 1)/100; // один процент
    $votingArr['php'] = round(($php * 100) / $sum)." %";
    $votingArr['jquery'] = round(($jquery * 100) / $sum)." %";
    return $votingArr;
}
$a = voting(8, 5, 5);
print_r($a);

Обратите внимание на то, что функция принимает два параметра. Вы можете сделать больше входных параметров. Допустим у вас не 2 рубрики, а 4. Вам придётся добавить еще 2 входных параметра. Например, voting($php, $jquery, $html, $css). Затем нужно сменить значение для $sum. $sum = $php + $jquery + $html + $css. Значение $votingArr['php'] вычисляется с по формуле $php * 100 / $sum. Значение вы умножаете на 100% и делите на общую сумму. Таким образом вы получаете процент голосования за выбранную рубрику. Число превратилось в строку. Для этого я применил конкатенацию ." %". Как понять чему равен один процент? $one = ($sum * 1) / 100. Вы можете не умножать сумму на единицу, а сразу выполнить деление на 100. Вы получите значение равное 1% от суммы. Соответственно 2% - это $one *= 2.

Теперь я немного усложню скрипт. Каждый раз менять функцию утомительно. Можно в входной параметр передать только один массив и этого будет достаточно. Функция round() округляет значение до целого числа. Читайте о функции round на странице как округлить дробные числа PHP. Сколько бы ни было элементов в массиве, функция обработает каждый элемент массива.


//голосование для множества рубрик
function voting($arr)
{
    //для будущих значений
    $votingArr = array();
    /* по умолчанию сумма 
       всех значений равна 0 */
    $sum = 0;
    foreach($arr as $key => $value)
    {
        $sum  + = $value;
    }
    // один процент
    $one = ($sum * 1) / 100; 
    foreach($arr as $key => $value)
    {
        $votingArr[$key] = round( ($value * 100) / $sum )." %";
    }    
    return $votingArr;
}
$arr = array('php'=> 10, 'jqueru' => 15, 
             'ruby' => 20, 'html' => 33);
$a = voting($arr);
print_r($a);
//Array ( [php] => 13 % [jqueru] => 19 % 
//[ruby] => 26 % [html] => 42 % )

Для того чтобы эта функция сработала, вам нужно сделать таблицу в базе данных. Вы должны выбрать значения всех рубрик и их название. Затем вы должны сделать кнопку или картинку. Нажатие на кнопку должно к приводить к увеличению значения на 1 единицу. Когда функция вернёт массив, вы должны снова записать новые значения в базу данных. Вытащить значение -> пересчитать -> записать значения в базу. Вы можете вместо подсчёта рубрик подсчитать процент выполненной работы. Вы должны будите вывести один элемент массива. Вы также можете вывести процент невыполненной работы.

просмотры: 1488, уровень: лёгкий уровень, рейтинг: 0, дата: 2015-08-03 22:00:00
проголосовать:

Комментарии:






поиск
сайты друзей
банеры
домен RU всего за 99 рублей
http://www.2domains.ru домен RU домен RU всего за 99 рублей
http://trainingweb.ru/redirect/well_web_vps_kvm Аренда VPS KVM в Европе Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.
http://ping-admin.ru/index_5659.html мониторинг сайтов сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP