Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2014, 20:41   #1
Nick888
 
Регистрация: 10.11.2014
Сообщений: 9
По умолчанию Голосование Без Перезагрузки Страницы

Имеется скрипт для голосования на PHP (+ БД MySQL), посмотреть результаты можно без перезагрузки страницы.

Есть 2 таблицы: polls (с вопросами) и poll_answer (с ответами).
Скрипт для создания этих самых таблиц:

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;

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 код:
<script type="text/javascript"
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></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).append(data).fadeIn(500);}); 

}); 
</script>
Второй файл и его код ниже.

PHP код:
<?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>'

?>
Как сделать так, чтобы при нажатии на кнопки "Посмотреть результат" или на "Голосовать" результаты ответов выводились С ПЕРЕЗАГРУЗКОЙ СТРАНИЦЫ, а не без неё, как в этом скрипте?
Nick888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Голосование без перезагрузки страницы Nick888 PHP 2 26.12.2014 09:21
Submit без перезагрузки страницы Tyoma5891 PHP 21 05.03.2014 16:53
Загрузка контента без перезагрузки страницы alextrof94 JavaScript, Ajax 3 02.09.2013 21:53
Отправка формы без перезагрузки страницы Adidas7 PHP 10 24.10.2012 13:40
Динамическое изменение URL страницы в JavaScript без перезагрузки страницы ilusha JavaScript, Ajax 7 25.02.2009 09:59