Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Если положительное, то +, если отрицательное, то -
 
 автор: Diplex   (08.06.2009 в 01:58)   письмо автору
 
 

Всем привет, вот накидал схему, для голосования.
Смысл такой, возле какой-то темы стоят плюсик и минус. Если нажать на минус, то от общего числа голосовавших отнимаем -1, а если жмут на плюс, то плюсуем к прежним результатам голосования +1. И надо отобразить получившееся число, если оно положительное, то надо подставить знак плюса, если отрицательное - то минус. Если равно нулю, то ничего не подставляем.
Всё работает, но хотелось бы сократить как-то... кто что скажет? :)
Всем спасибо!


<?php
$q 
'-'// Действие, минус или плюс
$f 1// Общее количество голосов

if($q == '-') { 
$g $f-'1'
if(
$f-== 0) { echo $g; } else { if($f-0) { echo '+'.$g; } else { echo $g; } }

} else {
// Если плюс 
$g $f+'1'
if(
$f+== 0) { echo $g; } else { if($f+0) { echo '+'.$g; } else { echo $g; } }
}
?>

  Ответить  
 
 автор: Trianon   (08.06.2009 в 02:14)   письмо автору
 
   для: Diplex   (08.06.2009 в 01:58)
 

Я лучше промолчу.
<?
$point 
+= (($_GET['val']+1)%3)-1;
echo (
$point>'+' '') . $point;

  Ответить  
 
 автор: Diplex   (08.06.2009 в 02:29)   письмо автору
 
   для: 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 '+' '') . $g;
?>

  Ответить  
 
 автор: Trianon   (08.06.2009 в 08:55)   письмо автору
 
   для: Diplex   (08.06.2009 в 02:29)
 

Код блокирует попытки добавить/отнять более одного очка за вызов - в точном соответствии первичному описанию условий задачи.
Действие же описывается вводом 1 либо -1

  Ответить  
 
 автор: sim5   (08.06.2009 в 04:30)   письмо автору
 
   для: Diplex   (08.06.2009 в 01:58)
 

Вопрос: как число проголосовавших может быть отрицательным?

  Ответить  
 
 автор: Diplex   (08.06.2009 в 15:25)   письмо автору
 
   для: sim5   (08.06.2009 в 04:30)
 

Trianon, видимо я неправильно разъяснил задачу. Есть общее число, мы прибаляем или отнимаем от него +1 или -1, и должны увидеть ответ, но не простой, а с плюсом или минусом.

sim5, в том то и дело, что нужна именно эта система. Здесь опеределяется не общее число проголосовавших, а некий рейтинг на основании, чем больше, тем лучше. Это требуется для того, если люди, например, выставят -5 в общем итоге, то статью надо заблокировать или скрыть с виду. Чего нельзя проделать с обычным голосованием. Пример работы такого голосования, можно посмотреть на muslib.ru в одном из исполнителей внизу...

p.s. Голосование не считает количество проголосовавших, не в этом суть, а суть в популярности(значимости).

  Ответить  
 
 автор: Trianon   (08.06.2009 в 15:29)   письмо автору
 
   для: Diplex   (08.06.2009 в 15:25)
 

>Trianon, видимо я неправильно разъяснил задачу. Есть общее число, мы прибаляем или отнимаем от него +1 или -1, и должны увидеть ответ, но не простой, а с плюсом или минусом.

Я так и понял. Мой код отрабатывает ссылки <a href=?val="1">+</a> и <a href=?val="-1">-</a>. правда , оставляет за рамками методику хранения текущего состояния рейтинга. Поскольку и Вы оставили её за рамками.

  Ответить  
 
 автор: Diplex   (08.06.2009 в 15:34)   письмо автору
 
   для: Trianon   (08.06.2009 в 15:29)
 

Почему оставил, вот:


$f = 1; // Общее количество голосов


Я показал сколько голосов на данный момент, и от этого числа надо плясать. А в Вашем примере, я не понимаю, куда поставить это число.

  Ответить  
 
 автор: sim5   (08.06.2009 в 15:52)   письмо автору
 
   для: 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>'+' '') . $_SESSION['chk'];
?>
<a href="?val=-1">-1</a>&nbsp;&nbsp;&nbsp;<a href="?val=1">1</a>

  Ответить  
 
 автор: Trianon   (08.06.2009 в 16:13)   письмо автору
 
   для: sim5   (08.06.2009 в 15:52)
 

Sim5, поправьте пожалуйста.

echo ($_SESSION['chk']>0?'+' : '') . $_SESSION['chk'];



session , кстати, как место хранения логически некорректно, т.к. замыкает область существования одним клиентом.
Только как демонстрационный пример

  Ответить  
 
 автор: sim5   (08.06.2009 в 16:17)   письмо автору
 
   для: Trianon   (08.06.2009 в 16:13)
 

Ну естественно для примера. Ну а $point, ну забыл заменить. ;-)

  Ответить  
 
 автор: Trianon   (08.06.2009 в 16:10)   письмо автору
 
   для: Diplex   (08.06.2009 в 15:34)
 

у меня эта переменная называется $point
Конечно, ей нужно присвоить некую начальную величину.

  Ответить  
 
 автор: Diplex   (08.06.2009 в 16:44)   письмо автору
 
   для: Trianon   (08.06.2009 в 16:10)
 

Господа, всем спасибо :)

  Ответить  
 
 автор: nikita2206   (08.06.2009 в 18:22)   письмо автору
 
   для: Diplex   (08.06.2009 в 01:58)
 

вы представляете себе что такое отнять -1 ??

  Ответить  
 
 автор: Diplex   (09.06.2009 в 02:10)   письмо автору
 
   для: nikita2206   (08.06.2009 в 18:22)
 

кстати, да)) спасибо.. начал пробовать, понял, что ерунда получается.. совсем запутался.. буду разбираться))

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования