Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Голосование без перезагрузки страницы / 5 сообщений из 5, страница 1 из 1
16.12.2014, 21:04
    #38835499
Nniicckk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Голосование без перезагрузки страницы
Имеется скрипт для голосования на PHP (+ БД MySQL), посмотреть результаты можно без перезагрузки страницы.

Есть 2 таблицы: polls (с вопросами) и poll_answer (с ответами).
Скрипт для создания этих самых таблиц:
Код: sql
1.
2.
3.
4.
CREATE TABLE IF NOT EXISTS `polls` (
`id` int(10) unsigned NOT NULL auto_increment, `title` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;



Код: sql
1.
2.
3.
4.
5.
CREATE TABLE IF NOT EXISTS `poll_answer` (
`id` int(10) unsigned NOT NULL auto_increment, `poll_id` int(10) unsigned NOT NULL,
`title` varchar(255) NOT NULL, `votes` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;



Далее создаём 2 файла. Первый отвечает за отображение опросов. Его скрипт приведён ниже.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
<script type="text/javascript"
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.mi.."></script>
<?php
$db=mysqli_connect("localhost","root","","vote");
$res=mysqli_query($db,"set names utf8"); 
$res=mysqli_fetch_array(mysqli_query($db,"SELECT max(id) FROM polls LIMIT 1")); 
$poll_id=$res[0];
$max_id=$res[0];
if (isset($_GET["poll_id"]) and is_numeric($_GET["poll_id"]) and $_GET["poll_id"]>0){
$res=mysqli_fetch_array(mysqli_query($db,"SELECT id FROM polls
WHERE id='".$_GET["poll_id"]."' LIMIT 1"));
if ($res[0]!='') $poll_id=$res[0];
}
$poll=mysqli_fetch_array(mysqli_query($db,"SELECT id,title FROM polls
WHERE id='".$poll_id."'"));
?>
<style type="text/css">
.polls{padding:10px; text-align:center; border:1px solid #EEEEEE; width:1050px;}
.poll{text-align:left; display:table; width:100%; font-size:14px;}
.poll label{line-height:2;}
.votes{text-align:center; background-color:#00FF00; border:1px solid #0033FF; 
margin:0 0 10px 0;}
</style>
<?php
echo '<div class="polls"><b>'.$poll["title"].'?</b>';
echo '<div class="poll" id="poll_'.$poll_id.'">';
$res=mysqli_query($db,"SELECT id,title FROM poll_answer
WHERE poll_id='".$poll_id."' ORDER BY id");
while ($answer=mysqli_fetch_array($res)) echo '<label><input type="radio"
name="item" value="'.$answer["id"].'">'.$answer["title"].'</label><br>';
echo '<div align="center"><input type="submit" id="view_res"
value="Посмотреть результат">';
echo '<input type="submit" id="vote" value="Голосовать">';
echo '</div></div></div><br>';
?>
<script type="text/javascript">
$(document).ready(function(){
$(".poll input:first").prop("checked",true);
$("#vote").click(function(){
jQuery.post("polls_result.php",{poll_id:$(this).parents(".poll").attr("id").
split('_')[1], answer_id:$('input:checked').val()},rating_poll);});
$("#view_res").click(function(){
jQuery.post("polls_result.php",{poll_id:$(this).parents(".poll").attr("id").
split('_')[1]},rating_poll);});
function rating_poll(data){
$(".poll").fadeOut(500, function(){$(this).html(data).fadeIn(500);});
}
});
</script>



Второй файл и его код ниже.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
<?php
if (isset($_POST["poll_id"]) and is_numeric($_POST["poll_id"])) {
$poll_id=$_POST["poll_id"];
}
else $poll_id='';
if (isset($_POST["answer_id"]) and is_numeric($_POST["answer_id"])) {
$answer_id=$_POST["answer_id"];
}
else $answer_id='';
if ($poll_id>0) {
$db=mysqli_connect("localhost","root","","vote"); 
$res=mysqli_query($db,"set names utf8");
if ($answer_id!='') {
$res=mysqli_query($db,"UPDATE poll_answer SET votes=(votes+1)
WHERE id='".$answer_id."' LIMIT 1");
$answer='Ваш голос учтён!';
}
$summa=mysqli_fetch_array(mysqli_query($db,"SELECT max(votes) AS max_v, sum(votes)
AS sum_v FROM poll_answer WHERE poll_id='".$poll_id."' LIMIT 1"));
if ($summa["max_v"]==0) $summa["max_v"]=$summa["sum_v"]=1;
$res=mysqli_query($db,"SELECT title,votes FROM poll_answer 
WHERE poll_id='".$poll_id."' ORDER BY votes DESC");
while ($rating=mysqli_fetch_array($res)) {
echo '<div style="width:560px; float:left;">'.$rating["title"]; //устанавливаем ширину линии 560px
echo '<div class="votes" style="width:'.($rating["votes"]/$summa["max_v"]*560); // соотношение с другими линиями (ширина)
echo 'px;">'.$rating["votes"].'</div></div><div style="float:right;"><br>';
echo round(100*$rating["votes"]/$summa["sum_v"],2).' %</div>'; //процентное соотношение ответов 
}
echo '<div style="width:100%;float:left;">Голосов: <b>'.$summa["sum_v"].'</b>';
}
?>



При нажатии на "Посмотреть результат" или на "Голосовать" элементы-переключатели (радио-кнопки) "пропадают"/"исчезают", также как и сами кнопки "Посмотреть результат" и "Голосовать". Как сделать так, чтобы они оставались на прежнем месте, а сам вывод результатов ответов был расположен в нижней части окна?
...
Рейтинг: 0 / 0
17.12.2014, 00:47
    #38835599
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Голосование без перезагрузки страницы
Код: javascript
1.
2.
3.
function rating_poll(data){
$(".poll").fadeOut(500, function(){$(this).append(data).fadeIn(500);});
}
...
Рейтинг: 0 / 0
19.12.2014, 20:32
    #38838485
Nniicckk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Голосование без перезагрузки страницы
Ну или такой вариант:
function rating_poll(data){
$(".result_request").fadeOut( 500, function(){ $(this).html(data).fadeIn(500); });
}

А как сделать так, чтобы при нажатии на кнопки "Посмотреть результат" или на "Голосовать" результаты ответов выводились С ПЕРЕЗАГРУЗКОЙ СТРАНИЦЫ, а не без неё, как в этом скрипте?
...
Рейтинг: 0 / 0
25.12.2014, 18:33
    #38843245
Nniicckk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Голосование без перезагрузки страницы
???
...
Рейтинг: 0 / 0
27.12.2014, 17:41
    #38844518
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Голосование без перезагрузки страницы
после всего этого "Г" рефрешить страницу с каким нибудь GET параметром типа ?poll_result=<id голосовалки>, и на странице проверять если есть гет параметр выводить результаты голосования. Но вопрос нафига...
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Голосование без перезагрузки страницы / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]