Уголок веб-разработчика

сайт для веб-мастеров и веб-разработчиков


Реклама на сайте
как разместить свою рекламу?



Что нового в блоге?



Скрипт для голосования своими руками на PHP и MySQL с использованием AJAX
(изменения от 03.01.2012)

Автор:
Источник: /vote.php

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

Важно!
Для того, чтобы пример работал корректно, необходимо:
1. Все файлы должны быть записаны в кодировке UTF-8.
2. Скрипты должны выполняться на веб-сервере, а не запускаться в браузере, как файл.

Рассмотрим пример.

Скачать пример можно здесь, 3,1 Кб

Пример состоит из 5 различных файлов, рассмотрим каждый из них в отдельности.

Файл dbconnect.php

Служит для соединения с базой данных, для создания необходимой таблицы и для заполнения её примером нашего голосования.

Работа с базами данных описана в статье
«Основные приемы работы с СУБД MySQL, используя язык программирования PHP».

В нашем случае база данных состоит из одной таблицы с тремя полями:
id – идентификатор записи;
title – название записи;
votes – количество голосов, отданных за эту запись.

Первоначально таблица заполняется следующими значениями:

idtitlevotes
1Куда вы сегодня пойдетеNULL
2Никуда0
3В кино0
4В клуб0
5В магазин0
6Другое0

Запись, для которой поле votes имеет значение NULL – считаем названием опроса, которое содержится в поле title.

Файл showcontent.js

Содержит в себе AJAX-функцию showContent() для обновления контента без перезагрузки страницы. Подробное описание работы данной функции приведено в статье «AJAX и JavaScript. Загрузка контента без перезагрузки страницы".

Файл functions.php

Содержит описание двух функций, применяющихся нами в программе.

Функция drawForm() отображает форму для голосования.

function drawForm() // отображение формы для голосования
{
	$r=mysql_query ("SELECT * FROM vote WHERE votes is NULL");
	$row=mysql_fetch_array($r);
	echo "<p>".$row['title']."</p>";
	echo "<form name='vote_form'>";
	$r=mysql_query ("SELECT * FROM vote WHERE votes is not NULL");
	while ($row=mysql_fetch_array($r))
		echo "<input type='radio' name='vote' value='{$row['id']}'> {$row['title']}<br/>";
	echo "<br/><input type='button' 
		onclick='showContent(\"vote.php?select=\"
		+getRadioGroupValue(document.vote_form.vote));'
		value='Проголосовать'>";
	echo "</form>";
}

Функция drawResults() отображает результаты голосования.

function drawResults() // отображение результатов
{
	$r=mysql_query ("SELECT * FROM vote WHERE votes is NULL");
	$row=mysql_fetch_array($r);
	echo "<p>".$row['title']."</p>";
	$r=mysql_query ("SELECT * FROM vote WHERE votes is not NULL");
	while ($row=mysql_fetch_array($r))
	echo "{$row['title']}: {$row['votes']}<br/>";
}

Данные для построения формы и вывода результатов берутся из базы данных.

Файл index.php

Основной файл скрипта голосования. Здесь мы рассмотрим его основную часть. Как мы видим — тело документа состоит из контейнера contentBody.

При загрузке этой страницы мы сперва проверяем, было ли уже произведено голосование. Проверку осуществляем через переменную cookie, поскольку это является наиболее простым случаем. Если голосование произведено не было, то мы выводим в контейнер contentBody форму для голосования. Если же пользователь уже голосовал — выводим результаты поиска.

<body>

	<div id="contentBody">
	
		<?php

		if ($_COOKIE['codething_vote']=='1') 	// если уже голосовали, то 
			drawResults();			// выводим результаты,
		else
			drawForm();				// иначе форму для голосования
		?>	
	
	</div>

	<div id="loading" style="display: none">
	Идет загрузка...
	</div>
	
</body>

Файл vote.php

Программный код этого файла выполняется тогда, когда пользователь производит голосование. В этот момент мы создаем переменную cookie, для того, чтобы исключить повторное голосование, сохраняем результат голосования в базу данных и отображаем результаты.

// установка cookie для избежания повторного голосования с одного браузера.
setcookie ("codething_vote","1");
	
// добавление выбранного варианта
$select = $_REQUEST['select'];
mysql_query ("UPDATE vote SET votes = votes + 1 WHERE id = '$select'");

// отображение результатов
drawResults();

Поскольку, выполнение этого файла вызывается через AJAX функцию showContent(), то перезагрузки всей страницы не происходит и результаты выполнения файла помещаются в контейнер contentBody.

Улучшения и упрощения принимаются по адресу:

Статьи по теме

Основные приемы работы с СУБД MySQL, используя язык программирования PHP;
AJAX и JavaScript. Загрузка контента без перезагрузки страницы;
AJAX и jQuery. Как загрузить скрипт JavaScript динамически?;
AJAX и jQuery. Передача параметров из PHP в JavaScript. Использование JSON;
Гостевая книга своими руками на PHP и MySQL. Добавляем динамизма. AJAX + jQuery;
Скрипт текстовой CAPTCHA для защиты от спам-ботов.






Посетите наш веб-сайт https://prostitutkidmitrova2020.com, чтобы найти лучших проституток Дмитрова. У нас есть широкий выбор девушек, которые готовы удовлетворить все ваши желания. | Найди себе огненную шлюху Омска и исполни все свои эротические фантазии уже сегодня. | Проверенные проститутки Петропавловск Камчатска - только проверенные и надежные девушки, готовые доставить тебе максимум удовольствия. | Ашлюхи Стерлитамака - готовы удовлетворить каждое твое желание и сделать ночь незабываемой! | Наслаждайтесь качественным сексом с дешевыми проститутками Томска, которые подарят вам незабываемые моменты. | Проверенные проститутки Ялты - это девушки, которые гарантируют тебе безопасность и абсолютное удовлетворение. | Элитные проститутки Тулы создадут для вас атмосферу роскоши и наслаждения. | В Омске можно найти проституток, которые предложат вам незабываемые моменты наслаждения. | Доверяйте проверенным проституткам Пятигорска, чтобы ваше время было запоминающимся. | Для надежного и безопасного времяпровождения обратитесь к проверенным проституткам Пензы. | Анальные проститутки Перми предлагают особые услуги для ценителей этого вида интима. | Дешевые проститутки Ростова помогут вам реализовать свои сексуальные фантазии без излишних затрат. | Анальные проститутки Стерлитамака откроют для вас новые удовольствия и возможности. | Анальный секс возможен с проститутками из Перми. | Недорогие проститутки Смоленска позволят вам получить максимум удовольствия за минимальную стоимость. | Проверенные проститутки Томска обеспечат вашу конфиденциальность и безопасность во время интимных встреч. | Доверьтесь проверенным проституткам Владимира и получите максимум удовольствия от каждой встречи. | Индивидуалки в Волгограде гарантируют интимное удовлетворение на высоком уровне. | В Анапе можно найти проституток, которые удовлетворят все ваши желания. | Проверенные проститутки Архангельска гарантируют полную конфиденциальность и безопасность встречи.

© 2008 - 2022 :: Codething.ru
При перепечатке и копировании статей с сайта указание автора и URL статьи обязательно!
Программный код, приведенный в статьях в качестве примеров, можно использовать без каких-либо ограничений.
Работоспособность, надежность и безопасность программного кода из примеров не гарантируется.