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

Разное

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

 

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

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

тема: пользовательские опросы в liteforum
 
 автор: Trianon   (15.06.2009 в 14:42)   письмо автору
35.3 Кб
 
 

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


Получается довольно пикантно. См.скриншот
Хочется обойтись минимумом штрихов - поэтому выходит причудливо.

Никому не интересно?

  Ответить  
 
 автор: AlexSol   (15.06.2009 в 14:57)   письмо автору
 
   для: Trianon   (15.06.2009 в 14:42)
 

у вас 4 ответа дают 132% :)

  Ответить  
 
 автор: Trianon   (15.06.2009 в 15:03)   письмо автору
 
   для: AlexSol   (15.06.2009 в 14:57)
 

Правильно. Потому что отвечало три человека.
один выбрал мюсли, другой водку, третий клизму с водкой.
Водка набрала 66% голосов.

У меня два вида опросов: зависимые( т.е. радиобаттоны) и независимые (т.е. чекбоксы)
Но подсчет выбора ведется для каждого варианта опосредованно.

  Ответить  
 
 автор: Valick   (15.06.2009 в 15:03)   письмо автору
 
   для: Trianon   (15.06.2009 в 14:42)
 

Опрос анонимный? А то очень интересно про клизму... )))

  Ответить  
 
 автор: Trianon   (15.06.2009 в 15:04)   письмо автору
 
   для: Valick   (15.06.2009 в 15:03)
 

> Опрос анонимный?
Нет. Опрос жестко персонифициорованный. Так что накрутки невозможны в принципе.

Запечатленное на скриншоте состояние в БД выглядит так:

#
# Table structure for table liteforum_poll_answers
#

DROP TABLE IF EXISTS `liteforum_poll_answers`;
CREATE TABLE `liteforum_poll_answers` (
  `id_author` int(11) NOT NULL,
  `id_poll` int(11) NOT NULL,
  `answer` int(11) NOT NULL,
  PRIMARY KEY  (`id_poll`,`id_author`),
  UNIQUE KEY `autpol` (`id_author`,`id_poll`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

#
# Dumping data for table liteforum_poll_answers
#

INSERT INTO `liteforum_poll_answers` VALUES (1,1,1);
INSERT INTO `liteforum_poll_answers` VALUES (2,1,2);
INSERT INTO `liteforum_poll_answers` VALUES (3,1,6);

  Ответить  
 
 автор: Trianon   (15.06.2009 в 15:26)   письмо автору
 
   для: Valick   (15.06.2009 в 15:03)
 

>А то очень интересно про клизму... )))

То есть водка на завтрак у Вас идет стандартным рационом? =)

  Ответить  
 
 автор: Valick   (15.06.2009 в 15:38)   письмо автору
 
   для: Trianon   (15.06.2009 в 15:26)
 

Ну не шампанское же)) сами знаете почему ;)
Вообще после BIGINT (после того как утёр слезу) подумал, что день обещает быть весёлым))
Водку не пил уже полгода наверное (я не в завязке, просто неохота... в детстве наверное перепил, теперь равнодушен), пиво вкуснее)

  Ответить  
 
 автор: DEM   (15.06.2009 в 15:12)   письмо автору
 
   для: Trianon   (15.06.2009 в 14:42)
 

Довольно интересно, если бы у самого стоял ЛайтФорум с удовольствием унал как вы сделали его (ну или где это надо писать). Вот только с тем, что получается 132% надо бы что нить сделать, а то как-то страно выходит :)

  Ответить  
 
 автор: Trianon   (15.06.2009 в 15:41)   письмо автору
 
   для: DEM   (15.06.2009 в 15:12)
 

Лайтфорум скачивается прям отсюда. Что я вчера и сделал.

  Ответить  
 
 автор: cheops   (15.06.2009 в 16:31)   письмо автору
 
   для: Trianon   (15.06.2009 в 14:42)
 

Кодом поделитесь? Было бы инетресно проводить опросы.

  Ответить  
 
 автор: Diplex   (15.06.2009 в 17:10)   письмо автору
 
   для: cheops   (15.06.2009 в 16:31)
 

Опросы вещь нужная, но совершенно непонятная система в процентах. В голове укладывается только то, что в итоге должно получаться 100%, а не как на скриншоте. Да и всплывающее окно - как-то немного старомодно )) Но если в любом виде, к этому форуму прибавится голосование - то это гуд, уж лишним, точно не будет!

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

Для типичного независимого опроса 100% будет выполняться само собой.

  Ответить  
 
 автор: Trianon   (15.06.2009 в 17:15)   письмо автору
13.2 Кб
 
   для: cheops   (15.06.2009 в 16:31)
 

as is :) код в прицепе.

вариант ответа в опросе создается bb-тегом


Фиксация мнения происходит при ответе на сообщение с опросом.
При ответе даже пустым сообщением. Пока так.
При попытке повторного ответа вариант может быть изменен. Но не накручен.
Менять мнение можно сколько хочешь раз.

Это всё лишь идея, причем никак не претендующая на истину.
И не очень аккуратная сейчас в плане пользовательского интерфейса.
Вероятно, какие-то моменты стоит подточить, привязать к статусу тем (закрыто/заблокировано).
Собственно, я сам лайтфорум практически не глядел серьезно, чтобы понять, как правильно воткнуть эту фичу. Так что что вышло то вышло..

вариант [ v ] ответа в опросе создается bb-тегом


результаты опроса (повариантно) (поименно)

  Ответить  
 
 автор: Великолепно! Спасибо большое за это великолепное, чудесное, замечательное, в конце-концов, дополнение к форуму! Мне очень-очень понравилось! Спасибо еще раз! Как мне вас отблагодарить? Замечательно. Потрясно. Слов нет - одни эмоции! Это же просто ГЕНИАЛЬН   (15.06.2009 в 21:14)
 
   для: Trianon   (15.06.2009 в 17:15)
 

.

  Ответить  
 
 автор: Trianon   (15.06.2009 в 21:16)   письмо автору
 
   для: Великолепно! Спасибо большое за это великолепное, чудесное, замечательное, в конце-концов, дополнение к форуму! Мне очень-очень понравилось! Спасибо еще раз! Как мне вас отблагодарить? Замечательно. Потрясно. Слов нет - одни эмоции! Это же просто ГЕНИАЛЬН   (15.06.2009 в 21:14)
 

эта запись была оставлена исключительно с целью вернуть разметку списка сообщений раздела "Разное", испорченную постом 383428, в товарный вид.
Никакой другой нагрузки она не несет.

  Ответить  
 
 автор: Незнайка   (16.06.2009 в 15:56)   письмо автору
 
   для: Trianon   (15.06.2009 в 21:16)
 

Не, номер поста был другой: id_post=383428 Верно?

  Ответить  
 
 автор: Незнайка   (16.06.2009 в 16:08)   письмо автору
 
   для: Trianon   (15.06.2009 в 21:16)
 

Мне показалось - или Вы его поправили?))

  Ответить  
 
 автор: Незнайка   (15.06.2009 в 21:50)   письмо автору
 
   для: Великолепно! Спасибо большое за это великолепное, чудесное, замечательное, в конце-концов, дополнение к форуму! Мне очень-очень понравилось! Спасибо еще раз! Как мне вас отблагодарить? Замечательно. Потрясно. Слов нет - одни эмоции! Это же просто ГЕНИАЛЬН   (15.06.2009 в 21:14)
 

не, похоже ничего нового по-поводу поля "Ваше имя:" (Автор:) - пока не планируется))

  Ответить  
 
 автор: Commander   (16.06.2009 в 14:33)   письмо автору
 
   для: Великолепно! Спасибо большое за это великолепное, чудесное, замечательное, в конце-концов, дополнение к форуму! Мне очень-очень понравилось! Спасибо еще раз! Как мне вас отблагодарить? Замечательно. Потрясно. Слов нет - одни эмоции! Это же просто ГЕНИАЛЬН   (15.06.2009 в 21:14)
 

Острота на тему ника:


Иванов!
Я!
Петров!
Я!
Сидоров!
Я!
Череззаборногузадерищенко!
Я!
Ничерта себе фамилия!!!
Я!

  Ответить  
 
 автор: Trianon   (16.06.2009 в 13:53)   письмо автору
 
   для: Trianon   (15.06.2009 в 17:15)
 

сегодня обнаружил, что в таблице authors отсутствуют данные о дате-времени регистрации посетителя.

Полагал, что на эту информацию можно опираться для ограничения участия в опросах .
Собственно, можно и без нее, но БД жалко... нагрузка вырастет.
Всё же таблица постов - немаленькая.. да и архивируется она постоянно.

  Ответить  
 
 автор: Trianon   (21.02.2011 в 21:14)   письмо автору
17.1 Кб
 
   для: Trianon   (16.06.2009 в 13:53)
 

Сейчас прикидываю конструкцию для реализации рейтингового (преференциального) опроса.
Идет тяжело, потому что трудно определиться с тем, каким сделать элемент формы.
Если кто что посоветует дельное - буду признателен.

  Ответить  
 
 автор: Лена   (22.02.2011 в 13:16)   письмо автору
 
   для: Trianon   (21.02.2011 в 21:14)
 

Я код не смотрела, но если сделать так:

<input type="checkbox" name="vote[$id_answer]" $checked>
<input type="button" name="p" value="+" onClick="enlarge();">
<input type="button" name="m" value="-" onClick="reduce();">
<div id="number"></div>
<input type="hidden" name="number" value="$id_answer_значение из div`a">


Возле каждого ответа - чекбокс. Возле чекбокса - две кнопки: + и -.
в div id="number" выводится число - рейтинг, который хочет установить пользователь этому ответу, по умолчанию можно поставить 1.
При нажатии на "+", число увеличивается, при "-" - уменьшается.
Само число передается в скрытом поле формы вместе с id ответа.

PS. Вначале думала сделать выпадающий список с рейтингом возле каждого чекбокса.

  Ответить  
 
 автор: Trianon   (22.02.2011 в 13:27)   письмо автору
 
   для: Лена   (22.02.2011 в 13:16)
 

так а в коде этого пока нет.

Я тоже так думал, но не с hidden-полем, а обычным текстовым.
Потому есть люди, которые JS на этом форуме отключают по соображениям безопасности.
А при отключенном JS форма становится мертвой - кнопки-то не работают.
.

  Ответить  
 
 автор: Лена   (22.02.2011 в 13:54)   письмо автору
 
   для: Trianon   (22.02.2011 в 13:27)
 

>Потому есть люди, которые JS на этом форуме отключают по соображениям безопасности.
>А при отключенном JS форма становится мертвой - кнопки-то не работают.

Ну тогда как бы нужно выбирать из двух зол лучшее: или текстовое поле, или выпадающий список.
При текстовом возникает проблема проверить, чтобы вводили то, что нужно, при выпадающем списке - проблема: список будет километровым, если диапазон выбора большой, например, если предложат что-то оценить по 100% шкале - все сто цифр, получается, будут в списке.

Все ж происходит на клиенте, и пока пользователь не нажмет кнопку(заполнит поле), мы о его "рейтинговых предпочтениях" не узнаем. Выбор здесь ограничен - типов полей у формы не так много.

  Ответить  
 
 автор: Trianon   (22.02.2011 в 14:11)   письмо автору
 
   для: Лена   (22.02.2011 в 13:54)
 

>Ну тогда как бы нужно выбирать из двух зол лучшее: или текстовое поле, или выпадающий список.

Была даже идея реализовать оба варианта.

>При текстовом возникает проблема проверить, чтобы вводили то, что нужно, при выпадающем списке - проблема: список будет километровым, если диапазон выбора большой, например, если предложат что-то оценить по 100% шкале - все сто цифр, получается, будут в списке.

Тут еще одно но. болььших цифр всяко не будет - их просто негде хранить.
Пока что в предполагается ограничиться 8-9 вариантами и 10-бальной системой оценок.
Большее в 32 бита не засунуть.

>Все ж происходит на клиенте, и пока пользователь не нажмет кнопку(заполнит поле), мы о его "рейтинговых предпочтениях" не узнаем. Выбор здесь ограничен - типов полей у формы не так много.

конечно

  Ответить  
 
 автор: Лена   (22.02.2011 в 23:10)   письмо автору
 
   для: Trianon   (22.02.2011 в 14:11)
 

А почему надо засовывать в 32 бита?

  Ответить  
 
 автор: Trianon   (22.02.2011 в 23:32)   письмо автору
 
   для: Лена   (22.02.2011 в 23:10)
 

а во сколько надо?

  Ответить  
 
 автор: cheops   (22.02.2011 в 23:54)   письмо автору
 
   для: Лена   (22.02.2011 в 23:10)
 

Можно в 64, кстати, MySQL в типах ENUM и SET то же самое делает, берет целый тип и хранит отдельные значения в отдельных битах.

  Ответить  
 
 автор: Trianon   (23.02.2011 в 00:20)   письмо автору
 
   для: cheops   (22.02.2011 в 23:54)
 

SET - да. ENUM - врядли.

Типа, соответствующего BIGINT, в php нет. Значит - преобразования и потери времени.
Потенциальная длина таблицы тоже вынуждала экономить.
Полагаете, стоит сделать BIGINT?

  Ответить  
 
 автор: cheops   (23.02.2011 в 00:27)   письмо автору
 
   для: Trianon   (23.02.2011 в 00:20)
 

Думаю 32-х позиций более чем достаточно

>SET - да. ENUM - врядли.
>An enumeration can have a maximum of 65,535 elements.
Да нет, похоже все-таки INT (причем 16-битная положительная часть), а строковые имена в заголовке таблицы хранятся.

  Ответить  
 
 автор: Trianon   (23.02.2011 в 00:29)   письмо автору
 
   для: cheops   (23.02.2011 в 00:27)
 

я к тому, что в хранении enum нет ничего поразрядного. Обычное число лежит.

  Ответить  
 
 автор: cheops   (23.02.2011 в 00:30)   письмо автору
 
   для: Trianon   (23.02.2011 в 00:29)
 

А ну в этом смысле конечно.

  Ответить  
 
 автор: Косорылый   (22.02.2011 в 14:03)   письмо автору
 
   для: Trianon   (21.02.2011 в 21:14)
 

Только не понятно кто ему даст полномочие например за меня голосовать

  Ответить  
 
 автор: Trianon   (28.02.2011 в 00:09)   письмо автору
32.6 Кб
 
   для: Trianon   (21.02.2011 в 21:14)
 

версия с рейтинговыми и оценочными опросами.

  Ответить  
 
 автор: Trianon   (28.02.2011 в 00:10)   письмо автору
10.3 Кб
 
   для: Trianon   (28.02.2011 в 00:09)
 

скриншот

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

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