Перейти к публикации

Открытое голосоваеие


Рекомендованные сообщения

Здравствуйте.

 

Есть новость с голосованием, голосовать могут только зарегистрированные пользователи.

 

Есть какая либо возможность показать пользователям полный отчёт по голосованию в новости? Кто за что проголосовал? Чтоб избежать разговоров о накрутке?

 

В бд идёт статистика по голосованию, можно ли как нибудь её показать?

 

Заранее признателен за ответ.

Ссылка на сообщение
Поделиться на других сайтах

Нашел небольшой модуль чтоб было видно кто проголосовал.

 

1. В файле poll.php найти:
$log = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_poll_log WHERE news_id = '{$row['id']}' AND member ='{$log_id}'" );

ниже вставить:
$votes = $db->query ( "SELECT u.name FROM ". PREFIX ."_users u INNER JOIN ". PREFIX ."_poll_log p ON (u.user_id = p.member) WHERE p.news_id = '{$row['id']}'" );
$all_votes = 0;
while($prow = $db->get_row()){
    $all_votes++;
    if ($config['allow_alt_url'] == "yes") {
        $full_link = "/user/" . stripslashes( $prow['name'] );
    } else {
        $full_link = "/index.php?subaction=userinfo&user=" . stripslashes( $prow['name'] );
    }
    $link = "<a ".$hint." href=\"".$full_link."\" target=\"_blank\"><strong>" . stripslashes( $prow['name'] ) . "</strong></a>";
    $all_users .= " ".$link.",";
}
$all_users = substr_replace( $all_users, '.', -1, 1 );
$db->free();


2. В этом же файле чуть ниже найти:
$tplpoll->set( '{votes}', $poll['votes'] );

ниже вставить:
$tplpoll->set( '{all_votes}', $all_votes );
$tplpoll->set( '{all_users}', $all_users );

 

В файле шаблона poll.tpl используйте следующие переменные:
{all_votes} - количество проголосовавших человек,
{all_users} - список ников проголосовавших.

 

Всё работает, вот что получилось

24f6d2f58909.png

 

Скажите, безопасно ли использовать подобный модуль? И можно ли как-то вывести за кого проголосовал, может при наведении на ник, или хотя бы количество отданных голосов?

Ссылка на сообщение
Поделиться на других сайтах
<?php
if (!defined('DATALIFEENGINE')) {
    
    die();
    
}

$result = $db->query( "SELECT name, answer FROM " . PREFIX . "_vote_result WHERE vote_id = {$vote_id}" );

while ($row = mysqli_fetch_assoc($result)) {
    
    echo '<b>' . $row['name']  . '</b>' . ' проголосовал за вариант '. '<b>' . $row['answer'] . '</b>';
    
}
?>

Вот и весь модуль :)подключить инклюдом с передачей параметра vote_id (айди голосования) {include file="engine/modules/vote.stat.php?vote_id=1"} и выйдет результат

 

 

Вася Пупкин проголосовал за вариант 3

 

 

 

 

 

 

Или сделалть вывод только имен через запятую а вариант за что проголосовал в тайтл какого нибудь тега, что бы всплывало

 

Ну и кэширование прикрутить, если не лень))
 

Ссылка на сообщение
Поделиться на других сайтах
17 минуту назад, alex32 сказал:

<?php
if (!defined('DATALIFEENGINE')) {
    
    die();
    
}

$result = $db->query( "SELECT name, answer FROM " . PREFIX . "_vote_result WHERE vote_id = {$vote_id}" );

while ($row = mysqli_fetch_assoc($result)) {
    
    echo '<b>' . $row['name']  . '</b>' . ' проголосовал за вариант '. '<b>' . $row['answer'] . '</b>';
    
}
?>

Вот и весь модуль :)подключить инклюдом с передачей параметра vote_id (айди голосования) {include file="engine/modules/vote.stat.php?vote_id=1"} и выйдет результат

 

 

Вася Пупкин проголосовал за вариант 3

 

 

 

 

 

 

Или сделалть вывод только имен через запятую а вариант за что проголосовал в тайтл какого нибудь тега, что бы всплывало

 

Ну и кэширование прикрутить, если не лень))
 

Спасибо большое, но данное для меня поверхностно, можете подробнее описать куда и где надо внести изменения? По поводу вывода за кого проголосовал можно через  тег title="проголосовал за: вариант 5, вариант 8"

Да и повторю, голосование в новостях, а не общее.

Изменено пользователем radrigo
Ссылка на сообщение
Поделиться на других сайтах

Я понимаю что нужно внести изменения в код который добавлен в poll.php

Примерно так, выделил жирным

Помогите правильно реализовать.

Цитата

$votes = $db->query ( "SELECT u.name FROM ". PREFIX ."_users u INNER JOIN ". PREFIX ."_poll_log p ON (u.user_id = p.member) WHERE p.news_id = '{$row['id']}'" );
$all_votes = 0;
while($prow = $db->get_row()){
    $all_votes++;
    if ($config['allow_alt_url'] == "yes") {
        $full_link = "/user/" . stripslashes( $prow['name'] );
    } else {
        $full_link = "/index.php?subaction=userinfo&user=" . stripslashes( $prow['name'] );
    }
    $link = "<a title="проголосовал за:  {здесь код который выводит за кого проголосовал}" ".$hint." href=\"".$full_link."\" target=\"_blank\"><strong>" . stripslashes( $prow['name'] ) . "</strong></a>";
    $all_users .= " ".$link.",";
}
$all_users = substr_replace( $all_users, '.', -1, 1 );
$db->free();

 

Ссылка на сообщение
Поделиться на других сайтах

о, не отразил, что голосовалка в новости. Нет, это не прокатит. о я в таблицах post и poll и связанными с ними  поковырялся, так и не понял, куда там что записывается

Ссылка на сообщение
Поделиться на других сайтах

Решил сделать чтоб окно с инфой пользователя всплывало

 

Сделал так

$votes = $db->query ( "SELECT u.name FROM ". PREFIX ."_users u INNER JOIN ". PREFIX ."_poll_log p ON (u.user_id = p.member) WHERE p.news_id = '{$row['id']}'" );
$all_votes = 0;
while($prow = $db->get_row()){
    $all_votes++;
    if ($config['allow_alt_url'] == "yes") {
        $full_link = "/user/" . stripslashes( $prow['name'] );
    } else {
        $full_link = "/index.php?subaction=userinfo&user=" . stripslashes( $prow['name'] );
    }
    $link = "<a ".$hint." onclick=\"ShowProfile('" . stripslashes( $prow['name'] ) . "', '".$full_link."', '1'); return false;\" href=\"".$full_link."\"><strong>" . stripslashes( $prow['name'] ) . "</strong></a>";
    $all_users .= " ".$link.",";
	
}
$all_users = substr_replace( $all_users, '.', -1, 1 );
$db->free();

 

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

Изменено пользователем radrigo
Ссылка на сообщение
Поделиться на других сайтах

http://www.gusev-online.ru/news/obshestvo/5877-vybiraem-samuyu-krasivuyu-paru.html

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

Ссылка на сообщение
Поделиться на других сайтах

Подозреваю, что дело в кодировке. Глянуть бы когда всплывающее окно установлено и работает
 

Ссылка на сообщение
Поделиться на других сайтах

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

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...