Simple Multiple Choice Quiz with JavaScript

Как сделать голосовалку для сайта на PHP?

Мне необходимо разместить на сайте небольшую голосовалку. Возможно, ли это реализовать на простом HTML-сайте (без использования движка)? Если да, то как?

Комментарии: 10

Приветствую, спасибо за скрипт. единственный вопрос с накруткой голосов, COOKIE не очень хорошо работают, может возможно добавить защиту по IP?

Добрый день. Переменная $current — отвечает за то какой pool — опрос отображается. Не подскажите как сделать переключатель ввиде далее между опросами? И как добавить больше вопросов и ответов в 1 опрос, буду очень признателен

Как можно создать опросы на сайте, которые сохраняют данные не в базу, а в обычный текстовый файл.
Данная инструкция пригодиться не только тем, у кого нет CMS, но и тем, у кого она есть. Кроме этого данный вариант может также пригодиться тем, у кого имеются высоконагруженные сайты, т.к. предложенная голосовалка для сайта практически не будет создавать нагрузку на процессор, а базу данных она вообще не использует.
Работать созданная система опроса на сайте будет через AJAX и использовать COOKIE (для защиты от накрутки).

Скриншоты, т.е. как будет выглядеть блока опроса и его результаты на сайте:
Форма для голосования -1Результаты формы для голосования -1
Форма для опроса -2Результаты формы для голосования -2

Формат хранения результатов на сервере (JSON):

Как подключить голосовалку к страницам сайта:
1. Вставить в необходимую часть страницы следующий HTML-код голосовалки (оформление формы выполнено с помощью стилей Bootstrap):

Внимание: В HTML коде необходимо указать путь к файлу poll-vote.php (если конечно он не находится в той же директории, в которой расположена и страница).
Если на сайте не используется Bootstrap, то тогда необходимо написать стили для оформления опроса и результатов голосования.
2. Вставить следующий фрагмент сценария JavaScript на страницу (после подключения jQuery):

Читайте также:  CSS Multi-column Layout Tutorial

 
'+ '

'+((result[i]/totalvotes)*100).toFixed(1)+'% (Голосов: '+result[i]+')

'+ '
'+ ''+ '
'; } $('#vote-section').html(output); } else { processPoll(); } }); var processPoll = function() { var _id = vote['id']; var _answers = vote['answers']; var form = $('#vote'); form.parent().parent().find('.question').text(vote['question']); form.prepend(''); form.prepend(''); var answers = form.find('.answers'); for (var i=0; i<=vote['answers'].length-1;i++) { answers.append('
'+ ''+ vote['answers'][i]+ ''+ '
'); } if (form.find('button[type="submit"]:disabled')) { form.find('input[type="radio"]').click(function(){ form.find('button[type="submit"]').prop('disabled',false); form.find('input[type="radio"]').off('click'); }); }; form.submit(function(e) { //отмена действия по умолчанию для кнопки submit e.preventDefault(); $.post(form.attr('action'), form.serializeArray(), function(data) { if (data) { var data = JSON.parse(data); var output = ''; var result = data[_id]; var totalvotes = 0; for (var i=0; i '+_answers[i]+''+ '

'+((result[i]/totalvotes)*100).toFixed(1)+'% (Голосов: '+result[i]+')

'+ '
'+ ''+ '
'; } $('#vote-section').html(output); } }); }); }; });

В переменной pathToPolls указать путь к файлу polls.php.
3. На сервере…
На сервере используются 2 файла php (polls.php и poll-vote.php).

В файле polls.php хранятся все опросы в формате ассоциативного массива (каждый опрос – это объект).
Синтаксис опроса:

// pool-1 $key = 'pool-1'; $value = new stdClass(); $value->id = $key; $value->question = 'Какая стихия вам ближе?'; $value->answers = array('Огонь','Воздух','Вода','Земля'); $votes[$key]=$value;

Для того чтобы добавить новый опрос, необходимо продублировать этот код и ввести необходимые значения в соответствующие переменные.
Установка, какой опрос показывать на страницах управляется с помощью значения переменной $current.

Это очень удобно, т.к. ничего не надо править на страницах. Т.е. для того чтобы установить показ другого опроса на всех страницах сайта достаточно будет просто указать необходимый ключ опроса в качестве значения этой переменной.
Также этот файл возвращает результаты, если пользователь уже проголосовал на сайте (для этого используются COOKIE).

Второй файл (poll-vote.php) записывает данные голосования в файл poll-results.txt, который создаётся по умолчанию в той же директории, в которой расположены эти 2 php файла. В качестве формата данных используется ассоциативный массив. Кроме этого данный файл после того как пользователь проголосовал ещё возвращает результаты голосования (в качестве ответа).

id = $key; $value->question = 'Какая стихия вам ближе?'; $value->answers = array('Огонь','Воздух','Вода','Земля'); $votes[$key]=$value; // pool-2 $key = 'pool-2'; $value = new stdClass(); $value->id = $key; $value->question = 'Какой ваш любимый цвет?'; $value->answers = array('Красный','Оранжевый','Зелёный','Синий','Нет, другой'); $votes[$key]=$value; /* блок для вывода результатов если пользователь проголосовал */ if (isset($_COOKIE['polls'])) { $arrayPolls = explode(',',$_COOKIE['polls']); if (in_array($current, $arrayPolls)) { // получаем содержимое файла $output = file_get_contents(dirname(__FILE__).'/'.$nameFile); // декодируем содержимое в массив $output = json_decode($output, true); // проверяем есть если указанный ключ голосования в ассоциативном массиве if (array_key_exists($current, $output)) { // получаем значение, связанное с указанным ключом $votes[$current]->result = $output[$current]; } } } echo json_encode($votes[$current]); exit();

Источник

🎅MnogoBlog

⛄как создать сайт на wordpress, настроить и оптимизировать wordpress

🎅MnogoBlog

Как создать тест или опрос на JavaScript

Здравствуйте, давайте создадим тест и опрос на html, который будет состоять из 3 вопросов и 6 ответов в каждом из них и обработаем их результаты с помощью javascript.

Для того чтобы узнать какой товар (услуга) пользуется наибольшим спросом на данный момент времени применяют различные опросы и тесты.
Как только вы сможете проанализировать результаты тестов и опросов – начинайте рекламировать ваш товар (услугу) – лучше всего для этого подойдет Яндекс.Директ – идеальная площадка для размещения рекламы на просторах Рунета. Ежедневно эту сеть посещает свыше 5 миллионов пользователей в России и других странах СНГ, поэтому частотность показов релевантных объявлений достаточно высокая. А для того чтобы ваша реклама была максимальна эффективна, то лучше всего обратиться по настройке Яндекс.Директа к профессионалам от Direct-UP – dircet-up.ru. Удачного вам бизнеса!

1. Создаем тест на JavaScript:

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

Рассмотрим код первого вопроса:

Вопрос #1
Value 1
Value 2
Value 3
Value 4
Value 5
Value 6

Здесь правильный ответ помечен значением value2, все остальные имеют значение value1.

Теперь давайте посмотрим на простой оператор if, который мы используем в JavaScript, чтобы найти сколько же набрано правильных ответов в тесте:

В принципе, мы проверяем только значение value2 и в зависимости от его количества выставляем оценку.

После того, как мы узнали оценку, то можем перенаправить посетителя на разные странички, в зависимости от результата:

window.location = result + '.html';

Например, перенаправить посетителя на страничку /ocenka2.html.

Вот готовый код файл index.html:

     @import url('https://fonts.googleapis.com/css?family=Open+Sans:400,600,700'); *, *:before, *:after body .top < padding-right: 20px; background: #261F41; text-align: right; >a < color: rgba(255,255,255,0.6); text-transform: uppercase; text-decoration: none; line-height: 42px; >h1 .main .main .quizsection 

JavaScript Quiz

Value 1
Value 2
Value 3
Value 4
Value 5
Value 6
Value 1
Value 2
Value 3
Value 4
Value 5
Value 6
Value 1
Value 2
Value 3
Value 4
Value 5
Value 6


2. Создаем простой опрос на javaScript:

Рассмотрим код первого вопроса:

 
Value 1
Value 2
Value 3
Value 4
Value 5
Value 6

Затем мы повторяем этот шаблон для каждого вопроса.

Теперь давайте посмотрим на простой оператор if, который мы используем в JavaScript, чтобы найти ответ с наибольшим значением:

if (value1 >= value2 && value1 >= value3 && value1 >= value4 && value1 >= value5 && value1 >= value6 && value1 > 0) < // value1 is the highest result = "value1"; >

В принципе, мы проверяем, что сумма всех ответов со значением value1 выше суммы других возможных вариантов, а также что она выше 0.

Мы выполняем одинаковую проверку для каждого значения.

После того, как мы знаем, самое высокое значение, мы можем использовать этот результат, например, чтобы перенаправить посетителя на разные url:

window.location = result + '.html';

Так если в большинстве вопросов был выбран ответ под цифрой 1, то result = value1 и соответственно посетитель попадет на страничку value1.html.

Источник

Оцените статью