PHP - интерактивный опрос AJAX
Используя PHP и AJAX, вы можете проводить интерактивные опросы, которые мгновенно отображают результаты, не замедляя работу вашего сайта. Такие опросы PHP часто используются на различных новостных сайтах, чтобы узнать, что их читатели думают по той или иной теме.
Опрос AJAX
Обучение использованию PHP и AJAX очень эффективно для всех, кто обрабатывает данные, поскольку комбинация этих двух систем позволяет отправлять информацию из браузера на сервер и обратно. Он может помочь вам в выполнении различных задач, таких как создание системы опроса AJAX. Формы, созданные таким образом, довольно легкие и удобные в использовании. Благодаря функциям AJAX любая система голосования PHP может отображать результаты без перезагрузки всей веб-страницы.
В следующем примере продемонстрирован опрос, в котором результат отображается без перезагрузки страницы.
Вам пока нравятся PHP и AJAX?
Первый шаг: HTML-файл
Мы подготовим HTML с двумя вариантами ответа на один вопрос. После того, как выбор сделан, система голосования AJAX отображает результаты без перезагрузки страницы.
Когда пользователь выбирает один из вариантов, выполняется функция getVote(). Функция запускается событием onclick.
Давайте посмотрим на сценарий опроса PHP, чтобы разобраться, как это работает:
Пример
Попробуй сам »<html>
<head>
<script>
function getVote(int) {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (this.readyState==4 && this.status==200) {
document.getElementById("poll").innerHTML=this.responseText;
}
}
xmlhttp.open("GET","poll_vote.php?vote="+int,true);
xmlhttp.send();
}
</script>
</head>
<body>
<div id="ajax_poll">
<h3>Is Bitdegree Learn a good learning platform?</h3>
<form>
Yes!
<input type="radio" name="res" value="0" onclick="get_votes(this.value)">
<br>No!
<input type="radio" name="res" value="1" onclick="get_votes(this.value)">
</form>
</div>
</body>
</html>
Пояснение к коду:
Объявляем функцию getVote(), которая выполняет следующие шаги.
- Сначала она создает новый объект XMLHttpRequest и сохраняет его в переменной xmlhttp
- Затем она определяет функцию onreadystatechange, которая будет выполняться каждый раз при изменении состояния готовности запроса ajax.
- Далее открывается запрос. Здесь мы использовали метод GET, потому что он быстрый и отлично работает с опросом.
- poll_vote.php — это файл, который мы создадим на следующем шаге.
- Наконец, отправляется запрос на сервер
xmlhttp.send()
.
Примечание: Обратите внимание, что к URL-адресу добавлен параметр (голосование) (со значением варианта «да» или «нет»).
Обработчик запросов AJAX
Страница на сервере, вызываемая выше приведенным JavaScript, представляет собой PHP-файл "poll_vote.php".
Пример
Скопировать<?php
$vote = $_REQUEST['vote'];
//получить содержимое текстового файла
$filename = "poll_result.txt";
$content = file($filename);
//поместить содержимое в массив
$array = explode("||", $content[0]);
$yes = $array[0];
$no = $array[1];
if ($vote == 0) {
$yes = $yes + 1;
}
if ($vote == 1) {
$no = $no + 1;
}
//вставить голоса в текстовый файл
$insertvote = $yes."||".$no;
$fp = fopen($filename,"w");
fputs($fp,$insertvote);
fclose($fp);
?>
<h2>Результат:</h2>
<table>
<tr>
<td>Да:</td>
<td><img src="poll.gif"
width='<?php echo(100*round($yes/($no+$yes),2)); ?>'
height='20'>
<?php echo(100*round($yes/($no+$yes),2)); ?>%
</td>
</tr>
<tr>
<td>Нет:</td>
<td><img src="poll.gif"
width='<?php echo(100*round($no/($no+$yes),2)); ?>'
height='20'>
<?php echo(100*round($no/($no+$yes),2)); ?>%
</td>
</tr>
</table>
Пояснение к коду:
JavaScript отправляет значение и происходит следующее:
- Получено содержимое файла poll_result.txt и помещено в переменные
- К значению выбранной переменной добавляется единица
- Результаты записываются в файл poll_results.txt
- Отображается графическое представление результатов опроса PHP (poll.gif)
Текстовый файл для результатов опроса PHP
Результаты каждого опроса AJAX должны где-то храниться. В этом примере мы сохраним данные результатов для созданной нами системы голосования PHP в текстовом документе poll_results.txt. Результаты будут храниться так:
Да
в опросе PHP. Второе число представляет собой голоса Нет
.
Примечание: Не забудьте в настройках разрешить веб-серверу редактировать текстовый файл.