Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: На сколько заполнен профиль

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
pantela
Отправлено: 27 Мая, 2015 - 16:45:32
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Требуется показать пользователям на сколько % заполнен их профиль.

Интересует логично ли я представляю себе скрипт. Напр. Имею 5 полей:
- Город
- Телефон
- Сайт
- Страница FB
- Пол

Мне надо на каждое поле делать проверку,

if(Город){
$procent = 10;
}
ну и.т.д. на все поля, и в конце суммировать их значения.

Думаю вы понимаете о чём я, какие етсь идей и решения?

спс.Ув. Закатив глазки
 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Мая, 2015 - 17:14:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Тип того:
PHP:
скопировать код в буфер обмена
  1. $completePercents = 0;
  2. foreach ($this->userModel->getUser($userID) as $k => $v) {
  3.     if (in_array($k, array('city', 'street', 'phone')) && $v) {
  4.         $completePercents += 1;
  5.     }
  6. }
  7. $completePercents = ($completePercents % 10) * 10;

А где именно ты расчеты делать буш -- это сам придумай.
Я только пример показал.
 
 Top
LIME
Отправлено: 27 Мая, 2015 - 17:38:24
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




DeepVarvar странная формула
 
 Top
pantela
Отправлено: 27 Мая, 2015 - 17:38:41
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Да прим. ясен спс. но если я хочу что бы для каждого поля разный % добавлялся бы, тогда как быть...
 
 Top
LIME
Отправлено: 27 Мая, 2015 - 17:42:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Вот так и думал что еще веса нужны
Каждому пункту назнач вес
Суммируй веса в цикле
И тогда процент это получившийся вес разделить на максимально возможный * 100
 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Мая, 2015 - 18:23:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




LIME пишет:
странная формула
Чем? Остатком от деления? Это просто красявость на случай если кол-во свойств будет больше 10 чтоб больше 100% не получилось.
 
 Top
LIME
Отправлено: 27 Мая, 2015 - 18:25:02
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Да
Остатком от деления
неверная же формула
(Добавление)
Если например всего 7 пунктов и заполнены все
Остаток будет 7 умножить на 10 будет 70% а не 100
Что за фигня???
(Добавление)
А 23 из 20?
30%???
 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Мая, 2015 - 18:48:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




А, итить, точняк.
 
 Top
pantela
Отправлено: 28 Мая, 2015 - 01:42:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




DeepVarvar пишет:
Вот так и думал что еще веса нужны
Каждому пункту назнач вес
Суммируй веса в цикле
И тогда процент это получившийся вес разделить на максимально возможный * 100

т.е. напр.
- Город = 10
- Телефон = 30
- Сайт = 5
- Страница FB = 20
- Пол = 10

Сумма = 75

Процент: 100-75=25%
так?

Или Не обязательно что бы ссумма не была больше 100? т.е. если сумма получается напр. 135, как тогда считать...

В математике вроде разбираюсь, просто логику хотелось бы правильно построить...
 
 Top
DeepVarvar Супермодератор
Отправлено: 28 Мая, 2015 - 02:09:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Сделай сумму всех весов (не важно сколько их) === 100%
Например пусть сумма будет 238.
Значит 1% это 100/238 = 0.42
Тогда, например у пользака заполнено на 151 весовой балл.
Значит его перцентаж это 151*0.42 = 63.42%
 
 Top
LIME
Отправлено: 28 Мая, 2015 - 06:54:44
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




151 / 238 * 100
(Добавление)
pantela пишет:
В математике вроде разбираюсь
ну везет тебе че Ха-ха
 
 Top
GoDr
Отправлено: 28 Мая, 2015 - 09:37:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




было скучно с утра, сделал это Язычок
PHP:
скопировать код в буфер обмена
  1. $rows[0]['name'] = 'Город';
  2. $rows[0]['value'] = 'Энстк';
  3. $rows[0]['percent'] = 10;
  4.  
  5. $rows[1]['name'] = 'Телефон';
  6. $rows[1]['value'] = '';
  7. $rows[1]['percent'] = 30;
  8.  
  9. $rows[2]['name'] = 'Сайт';
  10. $rows[2]['value'] = 'www.ru';
  11. $rows[2]['percent'] = 5;
  12.  
  13. $rows[3]['name'] = 'Страница FB';
  14. $rows[3]['value'] = '';
  15. $rows[3]['percent'] = 20;
  16.  
  17. $rows[4]['name'] = 'Пол';
  18. $rows[4]['value'] = '';
  19. $rows[4]['percent'] = 10;
  20.  
  21. $percent_a = 0;
  22. $percent_b = 0;
  23. $rows_key = array();
  24. $result = array();
  25.  
  26. foreach ($rows as $key=>$value) {
  27.     $percent_a = $percent_a + $value['percent'];
  28.     if (empty($value['value'])) {
  29.         $percent_b = $percent_b + $value['percent'];
  30.         $value_rows[] = $key;
  31.     }
  32. }
  33.  
  34. $res1 = number_format(100 - ($percent_b * 100 / $percent_a), 2, ',', '');
  35.  
  36. $result[] = 'Информация заполнена на ' . $res1 . ' процентов';
  37.  
  38. $result[] = '<hr>Не заполнено:';
  39.  
  40. foreach($value_rows as $value){
  41.     $result[] = $rows[$value]['name'] . ': ' . number_format(($rows[$value]['percent'] * 100 / $percent_a), 2, ',', '') . '%';
  42. }
  43.  
  44. echo implode('<br>', $result);

(Отредактировано автором: 28 Мая, 2015 - 09:39:33)



-----
Система управления веб-содержимым Lotos CMS
 
 Top
pantela
Отправлено: 28 Мая, 2015 - 23:33:41
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Спасибо ваш код ясен. Немного подправил только заменил $rows_key = array(); на $value_rows = array();
И ещё на сколько я понял сумма всех *['percent'] должна быть == 100 что бы именно целые числа были бы (ну я понимаю можно округлать...) но на не сколько будет если я не буду следить за тем что-бы сумм при заполнении всех полей будет больше 100 или меньше. Растерялся
 
 Top
GoDr
Отправлено: 29 Мая, 2015 - 09:05:19
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




pantela, что-то у тебя с математикой очень слабовато Радость
ты понимаешь разницу между КОЛИЧЕСТВО и ПРОЦЕНТЫ?

Условие:
У Маши было 6 яблок (КОЛИЧЕСТВО).
Она дала Пете 5 яблок (КОЛИЧЕСТВО).

Вопрос 1:
Сколько яблок (КОЛИЧЕСТВО) осталось у Маши?

Решение:
6 - 5 = 1

Ответ:
1 яблоко

Вопрос 2:
Сколько процентов яблок (ПРОЦЕНТЫ) осталось у Маши?

Решение:
У Маши осталось 1 яблоко (СМ. Вопрос 1)
6 яблок - это 100%
1 яблоко - это НЕИЗВЕСТНО %
Используя правило вычисления процентов (упрощённое)
1 яблоко * 100% / 6 яблок = 16.66...

Ответ:
Примерно 16.66

Вопрос 3:
На сколько процентов у Пети будет больше яблок?

Решение:
1 яблоко - 100%
5 яблок - Х%
5 * 100% / 1 = 500%

Ответ:
на 500%

Ну где-то так Радость

А теперь что такое ПРОЦЕНТ. Если просто и буквально, то один процент это одна сотая. А следовательно цело принято считать 100%. Ты можешь рассматривать как превышение над целым, так и уменьшение.. Но в любом случае по отношении к чему-то.

И Да! В percent у тебя сумма должна быть 100. т.к. эта величина ни с чем не сравнивается и является целым.
И Нет! Эти числа не обязательно должны быть целыми: 1.999% + 98.001% = 100%

pantela пишет:
я не буду следить за тем что-бы сумм при заполнении всех полей будет больше 100 или меньше.
Тогда какой смысл в процентах? Ты же делаешь вес каждого значения относительно целого.

(Отредактировано автором: 29 Мая, 2015 - 09:07:02)



-----
Система управления веб-содержимым Lotos CMS
 
 Top
LIME
Отправлено: 29 Мая, 2015 - 09:08:24
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




охренеть
на форуме по программированию целая портянка про проценты
стыд и позор
я бы за такие вопросы бан давал
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB