|
|
|
| Всем привет, вот накидал схему, для голосования.
Смысл такой, возле какой-то темы стоят плюсик и минус. Если нажать на минус, то от общего числа голосовавших отнимаем -1, а если жмут на плюс, то плюсуем к прежним результатам голосования +1. И надо отобразить получившееся число, если оно положительное, то надо подставить знак плюса, если отрицательное - то минус. Если равно нулю, то ничего не подставляем.
Всё работает, но хотелось бы сократить как-то... кто что скажет? :)
Всем спасибо!
<?php
$q = '-'; // Действие, минус или плюс
$f = 1; // Общее количество голосов
if($q == '-') {
$g = $f-'1';
if($f-1 == 0) { echo $g; } else { if($f-1 > 0) { echo '+'.$g; } else { echo $g; } }
} else {
// Если плюс
$g = $f+'1';
if($f+1 == 0) { echo $g; } else { if($f+1 > 0) { echo '+'.$g; } else { echo $g; } }
}
?>
|
| |
|
|
|
|
|
|
|
для: Diplex
(08.06.2009 в 01:58)
| | Я лучше промолчу.
<?
$point += (($_GET['val']+1)%3)-1;
echo ($point>0 ? '+' : '') . $point;
|
| |
|
|
|
|
|
|
|
для: Trianon
(08.06.2009 в 02:14)
| | Спасибо, но не работает.
Например, если надо сделать действие с минусом, и $_GET['val']=8, то ответ получается -1. А должно получаться +7.
Со своим умом сделал так, как можно ещё сократить? :)
<?php
$q = '-'; // Действие, минус или плюс
$f = 8; // Общее количество голосов
if($q == '-') { $g = $f-'1'; } else { $g = $f+'1'; }
echo ($g > 0 ? '+' : '') . $g;
?>
|
| |
|
|
|
|
|
|
|
для: Diplex
(08.06.2009 в 02:29)
| | Код блокирует попытки добавить/отнять более одного очка за вызов - в точном соответствии первичному описанию условий задачи.
Действие же описывается вводом 1 либо -1 | |
|
|
|
|
|
|
|
для: Diplex
(08.06.2009 в 01:58)
| | Вопрос: как число проголосовавших может быть отрицательным? | |
|
|
|
|
|
|
|
для: sim5
(08.06.2009 в 04:30)
| | Trianon, видимо я неправильно разъяснил задачу. Есть общее число, мы прибаляем или отнимаем от него +1 или -1, и должны увидеть ответ, но не простой, а с плюсом или минусом.
sim5, в том то и дело, что нужна именно эта система. Здесь опеределяется не общее число проголосовавших, а некий рейтинг на основании, чем больше, тем лучше. Это требуется для того, если люди, например, выставят -5 в общем итоге, то статью надо заблокировать или скрыть с виду. Чего нельзя проделать с обычным голосованием. Пример работы такого голосования, можно посмотреть на muslib.ru в одном из исполнителей внизу...
p.s. Голосование не считает количество проголосовавших, не в этом суть, а суть в популярности(значимости). | |
|
|
|
|
|
|
|
для: Diplex
(08.06.2009 в 15:25)
| | >Trianon, видимо я неправильно разъяснил задачу. Есть общее число, мы прибаляем или отнимаем от него +1 или -1, и должны увидеть ответ, но не простой, а с плюсом или минусом.
Я так и понял. Мой код отрабатывает ссылки <a href=?val="1">+</a> и <a href=?val="-1">-</a>. правда , оставляет за рамками методику хранения текущего состояния рейтинга. Поскольку и Вы оставили её за рамками. | |
|
|
|
|
|
|
|
для: Trianon
(08.06.2009 в 15:29)
| | Почему оставил, вот:
$f = 1; // Общее количество голосов
|
Я показал сколько голосов на данный момент, и от этого числа надо плясать. А в Вашем примере, я не понимаю, куда поставить это число. | |
|
|
|
|
|
|
|
для: Diplex
(08.06.2009 в 15:34)
| | Изначально, вообще 0 будет.... а остальное не так и сложно проверить, вам же код рабочий дали:
<?
if (!isset($_SESSION['chk'])) $_SESSION['chk'] = 0;
$val = isset($_GET['val']) ? $_GET['val'] : 0;
$_SESSION['chk'] += (($val+1)%3)-1;
echo ($point>0 ? '+' : '') . $_SESSION['chk'];
?>
<a href="?val=-1">-1</a> <a href="?val=1">1</a>
|
| |
|
|
|
|
|
|
|
для: sim5
(08.06.2009 в 15:52)
| | Sim5, поправьте пожалуйста.
echo ($_SESSION['chk']>0?'+' : '') . $_SESSION['chk'];
|
session , кстати, как место хранения логически некорректно, т.к. замыкает область существования одним клиентом.
Только как демонстрационный пример | |
|
|
|
|
|
|
|
для: Trianon
(08.06.2009 в 16:13)
| | Ну естественно для примера. Ну а $point, ну забыл заменить. ;-) | |
|
|
|
|
|
|
|
для: Diplex
(08.06.2009 в 15:34)
| | у меня эта переменная называется $point
Конечно, ей нужно присвоить некую начальную величину. | |
|
|
|
|
|
|
|
для: Trianon
(08.06.2009 в 16:10)
| | Господа, всем спасибо :) | |
|
|
|
|
|
|
|
для: Diplex
(08.06.2009 в 01:58)
| | вы представляете себе что такое отнять -1 ?? | |
|
|
|
|
|
|
|
для: nikita2206
(08.06.2009 в 18:22)
| | кстати, да)) спасибо.. начал пробовать, понял, что ерунда получается.. совсем запутался.. буду разбираться)) | |
|
|
|