Сейчас: 11:35:42   23-го апреля 2024 г.
UsefulScript.ruСкриптыРазныеОпросы на PHP и MySQLi
10
78

Скрипт опросов на PHP и MySQLi

Ранее мы уже приводили код скрипта голосования на PHP. Теперь настало время рассмотреть более продвинутый код скрипта для голосования на PHP с использованием БД MySQLi.


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


Пример работы предлагаемого нами скрипта голосования на PHP с использованием MySQLi БД и без перезагрузки страницы расположен ниже:


Какую CMS для сайта Вы предпочитаете?










Скрипт учитывает только один голос с одного IP адреса для каждого голосования в отдельности. Таким образом, если с указанного IP адреса голосуют первый раз, то под результатами голосования Вы увидите надпись "Ваш голос учтен!" и Ваш голос будет засчитан. При попытке повторного голосования с IP адреса, который уже принимал участие в опросе, под результатами голосования появится надпись "Вы уже голосовали!" и голос не будет засчитан.


Теперь давайте перейдем непосредственно к созданию подобного скрипта голосования на Вашем сайте. Для начала Вам понадобится создать три таблицы в MySQLi для хранения всех необходимых данных по опросам, как на скриншотах ниже:


Скриншот таблицы polls
Таблица: polls.

Скриншот таблицы poll_ip
Таблица: poll_ip.

Скриншот таблицы poll_answer
Таблица: poll_answer.

Для создания указанных таблиц, Вы можете воспользоваться следующим кодом:

Цитата:
CREATE TABLE IF NOT EXISTS `polls` (
 `
idint(10unsigned NOT NULL auto_increment, `titlevarchar(255NOT NULL,
 
PRIMARY KEY  (`id`)
ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

CREATE TABLE IF NOT EXISTS `poll_answer` (
 `
idint(10unsigned NOT NULL auto_increment, `poll_idint(10unsigned NOT NULL,
 `
titlevarchar(255NOT NULL, `votesint(10unsigned NOT NULL default '0',
 
PRIMARY KEY  (`id`)
ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

CREATE TABLE IF NOT EXISTS `poll_ip` (
 `
idint(10unsigned NOT NULL auto_increment, `poll_idint(10unsigned NOT NULL,
 `
ipint(10unsigned NOT NULL, `dateint(10unsigned NOT NULL,
 
PRIMARY KEY  (`id`)
ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

Далее Вам понадобится создать файл, например, polls.php, который будет отвечать за отображение Ваших опросов.


В данный файл (polls.php), либо на уже имеющеюся у Вас страничку поместите следующий код:

Цитата:
<?php
$db
=mysqli_connect("localhost","Логин","Пароль","Имя_БД");
$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];

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:10pxtext-align:centerborder:1px solid #EEEEEE; width:700px;}
 
.poll{text-align:leftdisplay:tablewidth:100%; font-size:14px;}
 .
poll label{line-height:2;}
 .
votes{text-align:centerbackground-color:#CCCCFF; 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 style="text-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>

Обращаем Ваше внимание на то, что если у Вас на сайте не подключена библиотека jQuery, или Вы делаете отдельную страничку для опросов, то в файле polls.php Вам необходимо подключить ее следующим образом:

JavaScript код:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js">
</script>

Для того чтобы не создавать для каждого опроса свою страничку, как Вы могли заметить, мы добавили переменную $_GET["poll_id"]. Таким образом, при обращении к файлу polls.php следующим образом: polls.php?poll_id=3, будет отображен опрос с id=3.


Как говорилось ранее, скрипт голосования работает без перезагрузки странички, следовательно, нам понадобится создать еще один файл, например, polls_result.php. Данный файл будет вносить изменения в БД и выводить результаты голосования по нужному опросу.


Обращаем Ваше внимание на то, что наименование файла polls_result.php используется в предыдущем файле (polls.php), так что если Вы захотите переименовать файл polls_result.php, то следует внести изменения и в файл polls.php.


В файл polls_result.php, поместите следующий код:

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","Логин","Пароль","Имя_БД");
 
$res=mysqli_query($db,"set names utf8");

if (
$answer_id!='') {
 
$ip=$_SERVER['REMOTE_ADDR'];
 
$res=mysqli_query($db,"SELECT count(id) FROM poll_ip
     WHERE poll_id='"
.$poll_id."' and ip=INET_ATON('".$ip."') LIMIT 1");
 
$number=mysqli_fetch_array($res);
 if (
$number[0]==0) {
    
$res=mysqli_query($db,"INSERT INTO poll_ip (poll_id,ip,date)
        values ('"
.$poll_id."',INET_ATON('".$ip."'),'".time()."')");
    
$res=mysqli_query($db,"UPDATE poll_answer SET votes=(votes+1)
        WHERE id='"
.$answer_id."' LIMIT 1");
    
$answer='Ваш голос учтен!';
 }
 else 
$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"]=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"];
    echo 
'<div class="votes" style="width:'.($rating["votes"]/$summa["max_v"]*560);
    echo 
'px;">'.$rating["votes"].'</div></div><div style="float:right;"><br>';
    if (
$summa["sum_v"]==0) echo '0 %</div>';
    else echo 
round(100*$rating["votes"]/$summa["sum_v"],2).' %</div>';
 }
 echo 
'<div style="width:100%;float:left;">Голосов: <b>'.$summa["sum_v"].'</b>';
 echo 
'<div style="color:#CC0000; text-align:center;">'.$answer.'</div></div>';
}
?>

После того, как Вы создали БД, файл опросов (polls.php) и файл, вносящий изменения в БД (polls_result.php), можно считать, что все готово, но осталось лишь самое простое - сделать админку по добавлению, изменению и удалению опросов. Для этого лучше создать отдельный файл, закрытый от других пользователей паролем (например, admin_polls.php), в который добавьте следующий код:

PHP код:
<?php
if (session_id()==''session_start();
$db=mysqli_connect("localhost","Логин","Пароль","Имя_БД");
$res=mysqli_query($db,"set names utf8");

 if (isset(
$_POST["add_poll"])) $res=mysqli_query($db,"INSERT INTO polls (title)
     values ('"
.$_POST["new_poll"]."')");
 if (isset(
$_POST["add_answer"])) $res=mysqli_query($db,"INSERT INTO poll_answer
     (poll_id,title) values ('"
.$_SESSION["this_id"]."','".$_POST["new_answer"]."')");
 if (isset(
$_POST["del_answer"])) $res=mysqli_query($db,"DELETE FROM poll_answer
     WHERE id='"
.$_POST["del_answer_id"]."' LIMIT 1");
 if (isset(
$_POST["del_poll"])) {
    
$res=mysqli_query($db,"DELETE FROM polls WHERE id='".$_SESSION["this_id"]."'");
    
$res=mysqli_query($db,"DELETE FROM poll_answer WHERE
        poll_id='"
.$_SESSION["this_id"]."'");
 }
 if (isset(
$_POST["end_poll"]) or isset($_POST["del_poll"])) $_SESSION["this_id"]='';
 if (isset(
$_POST["edit_answer"])) $res=mysqli_query($db,"UPDATE poll_answer
    SET title='"
.$_POST["text_answer"]."' WHERE id='".$_POST["id_answer"]."'");
 if (isset(
$_POST["edit_question"])) $res=mysqli_query($db,"UPDATE polls SET
    title='"
.$_POST["text_question"]."' WHERE id='".$_SESSION["this_id"]."'");

 if (isset(
$_POST["edit_poll"])) {
  
$res=mysqli_fetch_array(mysqli_query($db,"SELECT id FROM polls WHERE
    id='"
.$_POST["poll_id"]."'"));
  if (
$res["id"]!=0$_SESSION["this_id"]=$_POST["poll_id"];
 }

 if (isset(
$_POST["add_poll"]) or isset($_POST["add_answer"]) or
 isset(
$_POST["edit_poll"]) or isset($_POST["edit_question"]) or
 isset(
$_POST["edit_answer"]) or isset($_POST["del_answer"]) or
 isset(
$_POST["del_poll"])) {header("Location: admin_polls.php");exit;}
?>

 <
style type="text/css">
 .
forms {border:1px solid #555555;background-color:#DDDDDD;padding:10px;width:440px;}
 
</style>
 <
div class="forms"><form method="POST" action="admin_polls.php">
 <
b>Добавить новый опрос!</b><br>
 
Вопрос: <input type="text" name="new_poll" maxlength="255" size="40" required>
 <
input type="submit" name="add_poll" value="Добавить"></form>

 <
form method="POST" action="admin_polls.php"><b>Редактировать опрос №</b>
 <
input type="text" name="poll_id" maxlength="5" size="5" required>
 <
input type="submit" name="edit_poll" value="Редактировать"></form></div>

<?
php
if ($_SESSION["this_id"]!='') {
 
$res=mysqli_fetch_array(mysqli_query($db,"SELECT id,title FROM polls WHERE
     id='"
.$_SESSION["this_id"]."'"));
 echo 
'<div class="forms"><b>'.$res["title"].'</b> (id='.$res["id"].')<br>';
 
$res=mysqli_query($db,"SELECT id,title FROM poll_answer WHERE
     poll_id='"
.$_SESSION["this_id"]."' ORDER BY id");
 while (
$answer=mysqli_fetch_array($res))
     echo 
'- '.$answer["title"].' (id='.$answer["id"].')<br>';
?>

 </
div>
 <
div class="forms"><form method="POST" action="admin_polls.php">
 <
b>Добавить варианты ответов к опросу:</b><br>
 
Ответ: <input type="text" name="new_answer" maxlength="255" size="40" required>
 <
input type="submit" name="add_answer" value="Добавить"></form>
 <
form method="POST" action="admin_polls.php"><b>Изменить ответ</b>
 
c id= <input type="text" name="id_answer" maxlength="4" size="4" required><br>
 
Ответ: <input type="text" name="text_answer" maxlength="255" size="40" required>
 <
input type="submit" name="edit_answer" value="Изменить"></form>
 <
form method="POST" action="admin_polls.php"><b>Изменить вопрос на</b><br>
 <
input type="text" name="text_question" maxlength="255" size="47" required>
 <
input type="submit" name="edit_question" value="Изменить"></form>
 <
form method="POST" action="admin_polls.php"><b>Удалить ответ</b>
 
c id= <input type="text" name="del_answer_id" maxlength="4" size="4" required>
 <
input type="submit" name="del_answer" value="Удалить"></form>
 <
form method="POST" action="admin_polls.php">
 <
input type="submit" name="del_poll" value="Удалить текущий опрос">
 <
input type="submit" name="end_poll" value="Закончить редактирование">
 </
form></div>
<?
php
}
?>

Пусть размер приведенного кода в данной теме Вас не пугает, т.к. это все-таки код для трех разных файлов, выполняющих разные функции. Если же Вы все сделали так, как написано в данной теме, то у Вас должна получиться страничка для проведения опросов на PHP и MySQLi, как в примере, продемонстрированном на данной страничке.

Дата создания: 14:32:01 14.06.2014 г.
Дата обновления: 22:42:09 10.05.2015 г.
Посещений: 18718 раз(а).

Комментарии посетителей (63 шт.):
Дмитрий
0
# 2125
(07:17:57  13.12.2014 г.)

Спасибо за опрос. Вопрос: в случае, когда я независимо от того проголосовал ли или нет, при нажатии на кнопку "Просмотреть результаты", высвечивается предупреждение: Notice: Undefined variable: answer in K:\Web\EasyPHP\local\test\polls_result.php on line 42
42 строка: echo '<div style="color:#CC0000; text-align:center;">'.$answer.'</div></div>';
С чем это связано и как исправить, подскажите, пожалуйста.
Ответить

Administrator
3
# 2128
(17:37:58  13.12.2014 г.)

Есть два варианта решения данной проблемы:
1) В файле polls_result.php в самом начале присвоить переменной $answer значение 0.
2) Отключить показ предупреждений: error_reporting(0).
Ответить

Дмитрий
2
# 2130
(02:13:36  14.12.2014 г.)

Спасибо, если я правильно понимаю, то при $answer=0, вместо нотиса высвечивается 0, попробовал так $answer=null, помогло.
Ещё вопрос, как добавить модальное окно с предупреждением, что гость не выбрал ни одного пункта. Спасибо.
Ответить

Administrator
0
# 2131
(14:15:58  14.12.2014 г.)

В файле polls.php, в JavaScript коде после строчки: $("#vote").click(function(){
добавьте код:
if (typeof $('.poll input:checked').val()=="undefined") alert('Ответ не выбран!');
else
Ответить

Александр
0
# 2186
(12:52:56  14.01.2015 г.)

Добрый день, у меня пара вопросов:
1. Что нужно добавить в код чтоб при отображении опроса если уже голосовали с определенного IP, выводился результат по данному голосованию, а не выбор вариантов и далее сообщение что вы уже голосовали?
2. Есть ли в данном скрипте защита от накрутки голосов?
Ответить

Administrator
0
# 2191
(21:46:23  15.01.2015 г.)

1. Тут небольшими изменениями не отделаться.
2. Скрипт учитывает только один голос с одного IP адреса.
Ответить

Александр
0
# 2187
(16:01:49  14.01.2015 г.)

Можно написать изменения для работы с использованием mysql, а не mysqli.
Спасибо.
Ответить

Administrator
1
# 2192
(21:50:43  15.01.2015 г.)

Для этого достаточно подключиться к mysql и использовать аналогичные функции из mysql (без "i" на конце и идентификатор БД перенести в конец функции вторым параметром). На тему различий между mysql и mysqli в сети есть много информации.
Ответить

Александр
-1
# 2199
(23:10:43  17.01.2015 г.)

Еще пару вопросов:
1.А как возможно добавить цвет полоски результата для каждого варианта ответа при добавлении в базу?
2. Как изменить вывод результатов - хотел бы чтоб варианты ответов в одну строчку, а столбики над ними, т.е. не с низу вверх ответы как по умолчанию сейчас, а с лева на право в одной строке.
Спасибо.
Ответить

Administrator
0
# 2206
(21:19:10  20.01.2015 г.)

Все можно, изучайте CSS, не ленитесь! :)
Ответить

Александр
1
# 2221
(16:45:32  24.01.2015 г.)

Спасибо за ответы, с выводом разобрался и переделал (там не только css). Столкнулся со следующей проблемой при размещении скрипта на странице материала Joomla.
При прямой ссылке на */polls.php скрипт отрабатывает и при нажатии клавиши результаты отображает их с использованием jquery.
Если на странице контента подключаю файл polls.php - отображается опрос, но при нажатии результаты или голосовать ничего не происходит - в чем может быть проблема?

P.S. можете оставить свой email для оперативного общения, буду очень признателен. Спасибо.
Ответить

Administrator
2
# 2222
(23:25:39  24.01.2015 г.)

Тут так просто не сказать, в чем проблема. При клике отправляется POST запрос к файлу polls_result.php. Проверьте, чтобы к нему был указан правильный путь. Возможно, что какой-нибудь другой скрипт перехватывает клики, попробуйте поочередно их убирать и проверять.
Ответить

Марсель
1
# 2258
(11:48:00  11.02.2015 г.)

Доброго времени суток, а можно пожалуйста уже готовые исходники? И как сделать защиту ещё по куки? Извините, не очень разбираюсь, поэтому прощу уже готовые исходники с БД и самим скриптом. Там уж как-нибудь разберусь, заранее благодарю!
Ответить

Administrator
0
# 2259
(20:21:51  11.02.2015 г.)

Так все исходники приведены в данной теме выше и даже код для создания БД имеется.
Ответить

Дмитрий
0
# 2385
(20:19:02  12.04.2015 г.)

А где скачать можно исходники? Я не нашел… дайте ссылку, заранее спасибо.
Ответить

Administrator
0
# 2386
(21:13:12  12.04.2015 г.)

Все коды имеются в теме выше. Просто скопируйте их и вставьте в указанные файлы.
Ответить

Дмитрий
0
# 2387
(21:26:31  12.04.2015 г.)

А на движке WP он будет работать, т.е. виджетах?
Ответить

Виктория
0
# 2468
(17:36:16  10.05.2015 г.)

Добрый день, если можете, подскажите, пожалуйста такой момент:
при подключении скрипта с помощью <?php include ("polls.php");?> все работает отлично, но выводится только второй опрос из двух созданных, я пыталась вывести первый опрос, сделав такой запрос:
<?php include ("polls.php?poll_id=1"); ?> - выдается ошибка. В каком из трех файлов и как правильно прописать, чтобы подключать разные опросы к разным страницам?
Ответить

Administrator
1
# 2469
(20:20:07  10.05.2015 г.)

Попробуйте подключать так: <?php $_GET["poll_id"]=1; include ("polls.php"); ?>
Ответить

Виктория
0
# 2470
(21:23:54  10.05.2015 г.)

Спасибо огромное! Все ОК. Один остался вопрос - в новом опросе получается так: если голосовал ранее в другом опросе, а в новом еще не голосовал, то при нажатии клавиши "посмотреть результат" (если не хочешь голосовать, а просто хочешь посмотреть статистику), внизу выводится сообщение "Голосов:1", хотя должно быть "Голосов:0". Почему-то учитывается голос, который был в предыдущем опросе. Можно ли это как-нибудь устранить?
Ответить

Administrator
4
# 2471
(22:46:07  10.05.2015 г.)

Спасибо, поправил. Скопируйте заново код файла polls_result.php.
Ответить

Виктория
0
# 2472
(12:20:23  11.05.2015 г.)

Теперь все прекрасно работает. Хочу выразить благодарность за оперативные ответы на комментарии и за очень полезный материал.
Ответить

Паша
0
# 2521
(08:40:33  12.06.2015 г.)

Добрый день у меня на странице отображается только кнопки. Как исправить?
Ответить

Administrator
0
# 2522
(14:54:34  12.06.2015 г.)

Добавьте опрос с вариантами ответов. Также проверьте правильность подключения к БД.
Ответить

Александр
0
# 2588
(10:13:05  24.07.2015 г.)

Возможно ли сделать так чтобы учитывался "вес" пользователя, и привязка была к базе пользователей, а не IP - адресу? Т.е. Маша по клику вносит 10%, а Паша - 2%.
Ответить

Administrator
0
# 2591
(20:46:39  24.07.2015 г.)

Возможно. В строчке:
$res=mysqli_query($db,"UPDATE poll_answer SET votes=(votes+1) WHERE id='".$answer_id."' LIMIT 1");
Код votes=(votes+1) добавляет к суммарному числу голосов по единичке. Единичку можно заменить переменной, которая будет содержать любое другое число, полученное из БД.
Добавьте в базу пользователей столбец, который будет хранить "вес голоса" для каждого пользователя в отдельности. А в приведенный выше код нужно внести изменения: votes=(votes+'".$answer_weight."'), где переменная $answer_weight содержит предварительно полученное из БД значение "веса голоса" для данного пользователя.
Чтобы сделать привязку к id, замените INET_ATON('".$ip."') на $id_user, где $id_user - id пользователя в БД.
Ответить

Дмитрий
0
# 2927
(18:56:14  26.12.2015 г.)

Спасибо за простой и добротный скрипт!
Единственный вопрос - в БД некорректно отображается IP и дата голоса.
Как с этим быть? Спасибо!
Ответить

Administrator
1
# 2928
(19:00:29  26.12.2015 г.)

Все корректно! IP и дата специально переведены в формат int(10) для уменьшения размера БД.
Ответить

Соня
0
# 3039
(10:28:18  12.02.2016 г.)

Добрый день!
Я попыталась использовать ваш код для создания опросов, но у меня сейчас есть одна проблемка.
Когда кликаю на добавить, страничка admin_polls.php просто обновляется и больше ничего.
Подскажите, пожалуйста, где я могла ошибаться.
Спасибо!
Ответить

Administrator
0
# 3042
(22:23:26  12.02.2016 г.)

А в БД добавляется введенный Вами вопрос? Если да, то все нормально.
Далее нужно в поле "Редактировать опрос №" ввести 1 (или другую цифру в зависимости от того, какой опрос будете редактировать) и нажать на кнопку "Редактировать".
Ответить

Юрий
0
# 3124
(17:50:13  27.03.2016 г.)

Добрый день! Добавляю записи в таблицу polls_answer. В файле polls.php не выводятся категории с формой радио. По идеи должно работать.
Ответить

Administrator
1
# 3125
(17:54:33  27.03.2016 г.)

Таблица должна называться poll_answer (без буквы s после poll).
Ответить

Юрий
0
# 3126
(18:15:03  27.03.2016 г.)

Спасибо! Все работает. Только теперь в файле admin_polls.php выдает ошибку
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at X:\home\localhost\www\raschet\admin_polls.php:20) in X:\home\localhost\www\raschet\admin_polls.php on line 21
Ответить

Administrator
0
# 3127
(18:24:07  27.03.2016 г.)

Перенесите строчку if (session_id()=='') session_start(); внутри странички как можно выше до вывода любой информации на экран.
Ответить

Юрий
0
# 3128
(18:30:41  27.03.2016 г.)

Ошибка сохранилась.
Ответить

Administrator
0
# 3129
(18:39:15  27.03.2016 г.)

Посмотрите внимательнее, возможно есть пробел или табуляция. Попробуйте открыть файл другим редактором, возможно в самом начале файла имеется невидимый служебный символ и пересохранить его в кодировке UTF-8 без BOM!
Ответить

Юрий
0
# 3130
(19:05:49  27.03.2016 г.)

Создал новый файл с нуля. Все получилось! Спасибо Вам за вашу роботу. Теперь не много изменю CSS и будет конфетка.
Ответить

Юрий
0
# 3134
(19:14:30  28.03.2016 г.)

Добрый вечер! Как сделать, чтобы при нажатии "Посмотреть результат". Выводилась информация на странице polls_result.php?
Ответить

Игорь
0
# 3161
(09:27:35  05.04.2016 г.)

Здравствуйте! Как сделать так, чтобы не было ограничения по IP? Ведь если несколько людей сидят в одном здании и подключены к одному роутеру, то у них будет один внешний IP. Соответственно сможет проголосовать только один человек.
Ответить

Administrator
0
# 3162
(20:50:40  05.04.2016 г.)

Сделать конечно можно, но тогда Вы рискуете столкнуться с накруткой голосов, т.к. любой посетитель сможет многократно голосовать с одного IP. Код выложил на форуме.
Ответить

Александр
0
# 3196
(03:09:51  03.05.2016 г.)

Доброго времени суток! Не могу понять, где нужно изменить, чтобы подгружался другой опрос, а никак не третий? Заранее спасибо!
Ответить

Administrator
0
# 3197
(13:15:59  03.05.2016 г.)

Указывайте номер опроса в $_GET переменной. Например, чтобы отобразить опрос с id=2, используйте URL вида: http://usefulscript.ru/polls.php?poll_id=2
Ответить

Александр
0
# 3198
(14:02:37  03.05.2016 г.)

Это я понял, мол, если страница 'polls.php' отдельно имеется. А как быть, если я php-код вставил в уже имеющуюся страницу, а там несколько опросов.
Ответить

Administrator
0
# 3199
(15:54:33  03.05.2016 г.)

В самом начале кода мы помещаем в переменную максимальный id опроса: $poll_id=$res[0];
Вы можете явно указать номер опроса, например, $poll_id=2;
Ответить

Вадим
0
# 3283
(13:45:52  22.06.2016 г.)

Здравствуйте, не знаю почему, но этот скрипт Ваш тоже у меня не работает, почему не знаю.
Ответить

Administrator
0
# 3285
(20:54:18  23.06.2016 г.)

Либо что-то не так делаете, либо проблема в настройках хостинга. На этой страничке точно такой же скрипт прекрасно работает (более 1000 проголосовавших).
Ответить

Illya
0
# 3641
(21:04:21  27.12.2016 г.)

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at I:\home\adventists_lviv4.com\www\admin_polls.php:5) in I:\home\adventists_lviv4.com\www\block\admin_polls.php on line 2 - See more at: ...
Помогите! Я не понимаю что делать.
Ответить

Administrator
0
# 3642
(21:52:48  27.12.2016 г.)

Эта ошибка возникает из-за того, что до строчки if (session_id()=='') session_start(); что-то выводится на экран (например, обычный пробел).
Проверьте, чтобы в файле admin_polls.php до строчки if (session_id()=='') session_start(); не было никаких служебных символов или тегов кроме "<?php".
Ответить

Александр
-1
# 3751
(13:52:29  26.02.2017 г.)

Здравствуйте! Спасибо за скрипт. Скажите, а реально выводить сразу два скрипта на экран?
Ответить

НИ
2
# 4108
(11:50:36  25.10.2017 г.)

У меня кнопки голосовать и посмотреть результаты не работают.
Ответить

Administrator
0
# 4109
(12:30:37  25.10.2017 г.)

Возможно, не подключена библиотека jQuery или отключен JavaScript.
Ответить

Сергей
1
# 4152
(19:55:36  26.11.2017 г.)

Здравствуйте, из описания непонятно что будет если создать несколько опросов, какой из них будет выводится, тот у которого самый старший айди или скрипт будет все опросы рандомно подставлять? Если не рандомно, то как сделать чтоб выводился рандомный опрос?
Ответить

Сергей
1
# 4161
(17:34:01  03.12.2017 г.)

В общем внедряю опрос через <?php include('1111.php'); ?>
В самом 1111.php

<?php $banners = array (); ?>
<?php $banners[] = '1'; ?>
<?php $banners[] = '2'; ?>
<?php $banners[] = '3'; ?>
<?php $_GET["poll_id"]=$banners[array_rand ($banners)]; include ("polls.php"); ?>
=====
$banners[] = '1'; - это айди опроса, в данном случае в ротации опросы с айди 1,2,3 (можно сколько угодно опросов добавить)

Наверное через одно место, но работает, может кому пригодится.
Ответить

Даня
2
# 4164
(17:14:53  04.12.2017 г.)

Привет!
$res=mysqli_fetch_array(mysqli_query($db,"SELECT max(id) FROM polls LIMIT 1"));// вот тут показано, что выбирается по максимальному id.
А по поводу вопроса про рандом, посмотрите тут: http://usefulscript.ru/forum/showthread.php?tid=374
Ответить

Даня
2
# 4154
(21:37:55  27.11.2017 г.)

Здравствуйте. Подскажите, пожалуйста, кнопки голосовать и посмотреть результат не реагируют на нажатия. jQuery подключена, JavaScript включен. Ошибок никаких не выдает, добавление опроса через admin_polls работает, записи в БД появляются. В чем может быть проблема и как ее решить? Заранее спасибо.
Ответить

Даня
1
# 4163
(17:02:47  04.12.2017 г.)

Разобрался сам, спасибо. Вся проблема была вот в этой строчке:
echo '<div class="poll" id="poll_id'.$poll_id.'">';//так было у меня, почему я так сделал, сам понять не могу.
echo '<div class="poll" id="poll_'.$poll_id.'">';//так правильно.
Короче говоря, я сам себе злобный буратино.
Ответить

Игорь
0
# 4334
(09:36:13  15.08.2018 г.)

Добрый день! Подскажите пожалуйста вставляю <?php $_GET["poll_id"]=1; include ("polls.php"); ?> как вы ранние писали, у меня 2 опроса на одной странице:
<?php $_GET["poll_id"]=1; include ("polls.php"); ?>
<?php $_GET["poll_id"]=2; include ("polls.php"); ?>
, при нажатии кнопки результат голосования в первом и во втором опросе открывается один и тот же результат.
Ответить

Сергей
0
# 4419
(04:16:37  22.02.2019 г.)

Здравствуйте, при добавлении ответов к опросу движок опроса обрезает слишком длинные ответы (лимит 255 знаков). А как отключить лимит на количество знаков в ответе?
Ответить

Administrator
1
# 4421
(15:20:12  22.02.2019 г.)

В MySQL базе в таблице poll_answer, у столбца title указан тип переменной и ее длинна - varchar(255). Измените, например, тип переменной на text.
Ответить

Нина
0
# 4471
(13:42:35  25.05.2019 г.)

Подскажите, пожалуйста, кнопки голосовать и посмотреть результат не реагируют на нажатия. jQuery подключена, JavaScript включен. Ошибок никаких не выдает, добавление опроса через admin_polls работает, записи в БД появляются. В чем может быть проблема и как ее решить?
Ответить

Ольга
0
# 4844
(13:30:20  14.07.2021 г.)

У меня тоже самое.
Ответить

лена
0
# 4879
(07:30:02  24.12.2021 г.)

if ($_SESSION["this_id"]!='') здесь у меня произошла ошибка что это значит?
Ответить

Александр
0
# 4891
(16:42:13  28.01.2022 г.)

Поддерживает ли этот скрипт логику и ветвление в зависимости от выбора пользователя определенного ответа?
Ответить

Закрыть
Ваше имя:
174 + 8 =
Добавить комментарий:
Ваше имя:
174 + 8 =

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Посетителей онлайн: 6

Как Вы узнали о нашем сайте?