Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 13.01.2023
Сообщений: 19

Как изменить код вывода рейтинга

28.02.2023, 17:10. Показов 584. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня при выводе рейтинга статьи при 1 голосе выводится голос, а при 2 и более выводится голоса
Ввел новое значение _MD_PUBLISHER_VOTE_VOTESS - голосов

define('_MD_PUBLISHER_VOTE_VOTE', 'голос');
define('_MD_PUBLISHER_VOTE_VOTES', 'голоса');
define('_MD_PUBLISHER_VOTE_VOTESS', 'голосов');

Полагаю эту строку нужно изменить, но не могу понять что здесь значит ? и :

$tense = 1 == $count ? _MD_PUBLISHER_VOTE_VOTE : _MD_PUBLISHER_VOTE_VOTES;

Как правильно прочитать эту строку?

Полный кусок кода:
$newRatingObj = $helper->getHandler('Rating')->create();
$newRatingObj->setVar('itemid', $itemid);
$newRatingObj->setVar('ip', $ip);
$newRatingObj->setVar('uid', $uid);
$newRatingObj->setVar('rate', $rating);
$newRatingObj->setVar('date', time());
$helper->getHandler('Rating')->insert($newRatingObj);

$current_rating += $rating;
++$count;

$helper->getHandler('Item')->updateAll('rating', number_format($current_rating / $count, 4), $criteria, true);
$helper->getHandler('Item')->updateAll('votes', $count, $criteria, true);

$tense = 1 == $count ? _MD_PUBLISHER_VOTE_VOTE : _MD_PUBLISHER_VOTE_VOTES;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.02.2023, 17:10
Ответы с готовыми решениями:

Ошибка вывода рейтинга Kinopoisk и iMDB
Прошу помочь, не пойму в чем дело. Есть ссылка для определенного фильма, для примера https://rating.kinopoisk.ru/893843.xml, текст XML...

Как изменить код для вывода SQL запроса
Подскажите пожалуйста, как можно изменить вот этот код для того что бы данные брались не с DBGrid а с SQL запроса. var i,j, index:...

Изменить код вывода календаря
Доброго времени суток, у Меня есть код, который выводит календарь на указанный год. Мне нужно, чтобы Я вводил год и месяц, и Мне выводил...

7
Эксперт PHP
 Аватар для liris
5114 / 1075 / 158
Регистрация: 16.01.2023
Сообщений: 2,646
28.02.2023, 17:17
Лучший ответ Сообщение было отмечено zivXP как решение

Решение

Добавьте себе вот такую функцию

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function getTense($n, $one, $two, $more)
{
      $n = $n % 100;
    if (10 < $n && 20 > $n) {
        return $more;
    }
    $n = $n % 10;
    if (1 == $n) {
        return $one;
    }
    if (2 <= $n && 4 >= $n) {
        return $two;
    }
    return $more;
}
И в нужном месте вызывайте:

PHP
1
$tense = getTense($count, _MD_PUBLISHER_VOTE_VOTE, MD_PUBLISHER_VOTE_VOTES, MD_PUBLISHER_VOTE_VOTESS);
1
1 / 1 / 0
Регистрация: 13.01.2023
Сообщений: 19
28.02.2023, 20:03  [ТС]
Спасибо огромное! Все работает четко, еще и в 2-х файлах оказалось нужно править. И "0 голосов" тоже появилось, о чем я забыл упомянуть.
Программист из меня "еще тот", но почти все понимаю что в данном коде делается. А вот что означает $n % 100?
0
Эксперт PHP
 Аватар для liris
5114 / 1075 / 158
Регистрация: 16.01.2023
Сообщений: 2,646
28.02.2023, 20:25
Лучший ответ Сообщение было отмечено zivXP как решение

Решение

Цитата Сообщение от zivXP Посмотреть сообщение
А вот что означает $n % 100?
Остаток от деления на 100. По сути алгоритм работы простой, у нас есть три ситуации:
1 - голос
2, 3, 4 - голоса
5, 6, 7, 8, 9, 0 - голосов

То есть если мы выделим последнюю цифру числа, то все должно получиться:
51, 141, 801 - голос
222, 33, 904 - голоса
555, 1000, 999 - голосов

Но есть исключения: 11 голосов, 512 голосов, 114 голосов.
То есть нам нужно учесть эти исключения. Поэтому мы выделяем последние две цифры от числа, для этого находим его остаток от деления на 100:

87532 делим нацело на 100 = 8753 результат и 32 остаток (вот эти 32 мы дальше и обрабатываем).
1
132 / 76 / 16
Регистрация: 08.07.2022
Сообщений: 309
28.02.2023, 20:51
Буквально за секунду был найден такой сайт, на котором описаны алгоритмы множества для всех языков

https://docs.translatehouse.or... luralforms
PHP
1
2
3
4
5
6
7
8
function test($n, array $list) {
    return  $n . ' ' . @$list[($n%10==1 && $n%100!=11 ? 0 : (($n % 10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20)) ? 1 : 2))];
}
 
 
echo test(345345345 , ['голос',  'голоса', 'голосов']), PHP_EOL;
echo test(567567122 , ['голос',  'голоса', 'голосов']), PHP_EOL;
echo test(345345341 , ['голос',  'голоса', 'голосов']), PHP_EOL;
Может быть полезен в принципе
1
Эксперт PHP
 Аватар для liris
5114 / 1075 / 158
Регистрация: 16.01.2023
Сообщений: 2,646
28.02.2023, 21:00
Лучший ответ Сообщение было отмечено zivXP как решение

Решение

Цитата Сообщение от xkkx Посмотреть сообщение
был найден такой сайт
Классный сайт.

А реализация у меня, имхо, удачнее. Меньше шансов ошибиться при передаче аргументов (можно еще чуть более говорящие имена переменным дать, IDE будет подсказывать при обращении количество и порядок аргументов).
1
1 / 1 / 0
Регистрация: 13.01.2023
Сообщений: 19
28.02.2023, 21:55  [ТС]
Я уже протестировал данный код и все работает отлично. На литературном сайте теперь соблюдаются правила русского языка. https://jumber.ru/modules/publ... itemid=410

Добавлено через 2 минуты
xkkx, спасибо за решение.
0
132 / 76 / 16
Регистрация: 08.07.2022
Сообщений: 309
28.02.2023, 22:59
Цитата Сообщение от liris Посмотреть сообщение
А реализация у меня, имхо, удачнее. Меньше шансов ошибиться при передаче аргументов (
Ну если тернарник разбить на if то получаем

PHP
1
2
3
4
5
6
7
8
9
10
11
function test($n, $one, $two, $more) {
    $tenths = $n % 10;
    $hundredths = $n % 100;
    if($tenths == 1 && $hundredths != 11) {
        return $one;
    } elseif(($tenths >= 2 && $tenths <=4) && ($hundredths < 10 || $hundredths >= 20)) {
        return $two;
    } else {
        return $more;
    }
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.02.2023, 22:59
Помогаю со студенческими работами здесь

Изменить код для вывода похожих записей
Здравствуйте, есть код для вывода похожих записей с миниатюрами, но выводятся они по категориям, а мне надо по меткам, не подскажите, как...

Плагин вывода рейтинга на сайте
Есть плагин вывода рейтинга фильмов на сайте.Подключение его прошло успешно,но при формирование запроса и сохранение его в файл выдает...

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

Какой компонент лучше использовать для вывода времени и рейтинга из бд?
Здравствуйте ! На часть экрана у меня будет вывод из БД через SignalR . Будут две кнопки на одной вывод по времени записи другой по...

Необходимо изменить код в программе так, чтобы была одна процедура для вывода следа матрицы 2 и 3 порядка
Заданы три матрицы А (третьего порядка), В (второго порядка) и С (третьего порядка). Найти максимальное из трех чисел x, y, z, где x - след...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru