Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#26 2011-03-19 20:45:00

kordum
Участник
Зарегистрирован: 2011-03-13
Сообщений: 26

Re: [MOD] Голосовалка / Poll Mod

$db_type = 'mysql';

Вот написано. Исправил. Вышло мне:

This PHP environment doesn't have Improved MySQL (mysqli) support built in. Improved MySQL support is required if you want to use a MySQL 4.1 (or later) database to run this forum. Consult the PHP documentation for further assistance.

Offline

#27 2011-03-19 20:49:20

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Голосовалка / Poll Mod

kordum, верни как было.
Возможно в этом и причина, что твой PHP слишком старый и не поддерживает расширенный режим работы MySQL.
З.Ы. Проси хостера обновить PHP до 5ой версии.

Offline

#28 2011-03-19 20:50:45

kordum
Участник
Зарегистрирован: 2011-03-13
Сообщений: 26

Re: [MOD] Голосовалка / Poll Mod

Блин, обидно. Хорошо, попробуем. Спасибо большое за помощь.

Offline

#29 2011-03-19 21:14:09

kordum
Участник
Зарегистрирован: 2011-03-13
Сообщений: 26

Re: [MOD] Голосовалка / Poll Mod

Повысил версию до 5.2.13, вернул файлик в исходное состояние - ответы в теме с опросом так и не появились. Версия PHP ли влияет? Или 5.2.13 форуму не достаточно?

Offline

#30 2011-03-19 21:39:59

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Голосовалка / Poll Mod

kordum, в config.php пропиши

$db_type = 'mysqli';

вместо

$db_type = 'mysql';

Только бэкап базы сделай.

Offline

#31 2011-03-19 21:56:16

kordum
Участник
Зарегистрирован: 2011-03-13
Сообщений: 26

Re: [MOD] Голосовалка / Poll Mod

Visman, в третий раз спасибо! Все работает! Пойду писать мод "спасибо" big_smile

Offline

#32 2011-03-20 13:45:58

BigElectricCat
Участник
Зарегистрирован: 2011-03-09
Сообщений: 7

Re: [MOD] Голосовалка / Poll Mod

У меня в config.php:

$db_type = 'mysqli_innodb';

Версия сервера, которую phpMyAdmin выдаёт:
phpMyAdmin версии: 3.3.9.2
Apache/2.2.17 (Win32) PHP/5.3.5
Версия MySQL-клиента: mysqlnd 5.0.7-dev - 091210 - $Revision: 304625 $
MySQL-кодировка: UTF-8 Unicode (utf8)
PHP расширение: mysqli

База данный создана как InnoDB imp…


Visman, а можно сюда перенести нашу беседу из твоего тестового форума?

PS: mysql: 5.5.8-win32 (в режиме выделенного сервера)

Редактировался BigElectricCat (2011-03-20 13:47:40)

Offline

#33 2011-03-28 09:33:10

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Голосовалка / Poll Mod

Мод обновлен.
Профиксены французский и создание кэша (кэш файлы при редактировании первых сообщений тем без опросов не создаются теперь).

Offline

#34 2011-04-03 11:29:32

BigElectricCat
Участник
Зарегистрирован: 2011-03-09
Сообщений: 7

Re: [MOD] Голосовалка / Poll Mod

Разобрался в причинах такого поведения опросов.
Проблемы опросов, что в них не подсчитывает голоса возникает от использования в config.php:

$db_type = 'mysqli_innodb';

, если поправить (или на этапе установки форума выбрать первый вариант) в config.php:

$db_type = 'mysqli';

то опросы работают нормально. (Только в вчера было время перебирать варианты установок MySQL и конфигов форума.)

Ещё пару заметок.
У забаненного пользователя  в верху страницы при использовании любого поиска появляется надпись «AJAX_JQUERY». Также кнопка «выход» не работает или, как вариант, моя опера не удаляет кук по нажатию на «выход», а удаляет его только после своего закрытия.

Редактировался BigElectricCat (2011-04-03 11:30:16)

Offline

#35 2011-04-03 13:35:13

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Голосовалка / Poll Mod

BigElectricCat пишет:

Ещё пару заметок.
У забаненного пользователя  в верху страницы при использовании любого поиска появляется надпись «AJAX_JQUERY». Также кнопка «выход» не работает или, как вариант, моя опера не удаляет кук по нажатию на «выход», а удаляет его только после своего закрытия.

Скрин можно с этим глюком?
Какая версия форума?

Offline

#36 2011-04-03 13:48:38

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Голосовалка / Poll Mod

BigElectricCat, в файле common.php строку

define('AJAX_JQUERY', '<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>');

перенеси из конца в начало (поставь перед строкой

define('FORUM_DB_REVISION', 11);

)
З.Ы. И это оффтоп, т.к. к данному плагину проблема не относится, а относится она к моей сборке. Если что, писать в тему https://fluxbb.qb7.ru/forum/viewtopic.php?id=3260

Offline

#37 2011-04-20 04:38:43

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Голосовалка / Poll Mod

Обновил версию мода до 1.2.0.
Добавлен Польский.
Сделал превью опроса в edit.php/post.php.
Оптимизировал число запросов к базе при сохранении голоса.

Offline

#38 2011-04-24 08:36:29

Luca
Участник
Зарегистрирован: 2009-10-08
Сообщений: 164

Re: [MOD] Голосовалка / Poll Mod

Создано 2 голосования. Набрано около десятка голосов. Создано дополнительное третье голосование - вылетает ошибка http://pic2net.ru/view/v/38b0b91f78e706 … 2d507f.jpg

Offline

#39 2011-04-24 09:46:58

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Голосовалка / Poll Mod

Обновил версию мода до 1.2.1.
Исправлена ошибка https://fluxbb.qb7.ru/forum/viewtopic.p … 905#p25905

@Luca, какая версия мода у тебя сейчас используется?
Или покажи строчку 532 из файла include/poll.php

Offline

#40 2011-04-24 14:15:46

Luca
Участник
Зарегистрирован: 2009-10-08
Сообщений: 164

Re: [MOD] Голосовалка / Poll Mod

<?php
            if ($can_vote)
            {
                if ($types[$k] < 2)
                    echo "\t\t\t\t\t".'<label><input type="radio" name="poll_vote['.$k.'][0]" value="'.$i.'" /> '.pun_htmlspecialchars($ch).'</label>';
                else
                    echo "\t\t\t\t\t".'<label><input type="checkbox" name="poll_vote['.$k.']['.$i.']" value="1" /> '.pun_htmlspecialchars($ch).'</label>';
            }
            else if ($can_visi)
            {
                echo "\t\t\t\t\t".'<span class="answer">'.pun_htmlspecialchars($ch).'</span><span class="percent">('.$lang_poll['Votes'].$vote[$i].' ['.$percent.'%])</span>';
                echo '<p class="progressbar"><span style="width: '.round(100 * $percent / $maxPercent).'%;"><span>'.$percent.'%</span></span> </p>';
            }
            else
            {
                echo "\t\t\t\t\t".'<span class="answer">'.pun_htmlspecialchars($ch).'</span>';
            }
?>

            </li>
<?php

521-541 строки.

Offline

#41 2011-04-24 14:51:19

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Голосовалка / Poll Mod

@Luca, 502 у тебя такая?

        $maxPercent = ($top[3] == 0) ? 1 : 100 * $max / $top[3];

Если да, то совсем древняя версия мода используется wink
Замени ее на

        $maxPercent = ($top[3] == 0 || !$max) ? 1 : 100 * $max / $top[3];

Offline

#42 2011-05-04 16:23:01

wikitest
Участник
Зарегистрирован: 2011-05-04
Сообщений: 10

Re: [MOD] Голосовалка / Poll Mod

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

Offline

#43 2011-05-04 16:28:51

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Голосовалка / Poll Mod

@wikitest, что пишет при голосовании?

Offline

#44 2011-05-04 16:38:53

wikitest
Участник
Зарегистрирован: 2011-05-04
Сообщений: 10

Re: [MOD] Голосовалка / Poll Mod

@Visman, вообще ничего.
закоментировал в viewtopic.php строку

header('Location: viewtopic.php?id='.$id.((isset($_GET['p']) && $_GET['p'] > 1) ? '&p='.intval($_GET['p']) : ''));

что бы посмотреть может poll_vote($id, $pun_user['id']) ошибку какую выдает, а там тоже пусто  sad (отображение ошибок включено)

Offline

#45 2011-05-04 16:45:25

wikitest
Участник
Зарегистрирован: 2011-05-04
Сообщений: 10

Re: [MOD] Голосовалка / Poll Mod

Смотрю, $_POST передается

Array ( [poll_max] => Array ( [1] => 3 ) [poll_vote] => Array ( [1] => Array ( [0] => 2 ) ) [poll_type] => Array ( [1] => 1 ) [poll_ques] => 1 [poll_csrf] => 1b209aedba8821e7683ea92a03898c06e427c291 [poll_submit] => Голосовать! ) 

а вот эта функция походу косячит, знания(вернее их отсутсвие) не позволяют осознать подробности пока

function poll_vote($tid, $uid)
{
    global $db;
        print_r($_POST);
    if (poll_bad() || !poll_can_vote($tid, $uid)) poll_mess('Err1');

    $csrf = poll_post('poll_csrf');
    $ques = poll_post('poll_ques');
    $type = poll_post('poll_type');
    $votes = poll_post('poll_vote');
    $amax = poll_post('poll_max');

    if (is_null($csrf) || is_null($ques) || is_null($type) || is_null($votes) || is_null($amax)) poll_mess('Err2');

    if (!is_array($type) || !is_array($votes) || !is_array($amax)) poll_mess('Err2');

    $type = array_map('intval', $type);
    $amax = array_map('intval', $amax);
    $ques = intval($ques);
    
    $csrf2 = pun_hash($tid.(pun_hash($uid.$ques.implode('0',$type))).get_remote_address().implode('.',$amax));
    
    if ($csrf2 != $csrf) poll_mess('Err2');

    $kol = 0;
    foreach($votes as $k => $vote)
    {
        if ($k < 1 || $k > $ques) poll_mess('Err3');
        $kol++;
        $kk = 0;
        $vote = array_map('intval', $vote);
        foreach($vote as $i => $vo)
        {
            if ($type[$k] < 2 && $i != 0) poll_mess('Err2');
            if ($type[$k] < 2 && $vo < 1) poll_mess('Err2');
            if ($type[$k] < 2 && $vo > $amax[$k]) poll_mess('Err2');
            if ($type[$k] > 1 && $i == 0) poll_mess('Err2');
            if ($type[$k] > 1 && $i > $amax[$k]) poll_mess('Err2');
            if ($type[$k] > 1 && $vo != 1) poll_mess('Err2');
            $kk++;
        }
        if ($type[$k] < 2 && $kk != 1) poll_mess('Err4', $k);
        if ($type[$k] > 1 && ($kk < 1 || $kk > $type[$k])) poll_mess('Err5', $k, $type[$k]);
    }
    if ($kol != $ques) poll_mess('Err6');

    $arr = array();
    foreach($votes as $k => $vote)
    {
        $vote = array_map('intval', $vote);
        foreach($vote as $i => $vo)
        {
            if ($type[$k] < 2) $j = $vo;
            else $j = $i;
            $arr[] = '(question='.$k.' AND field='.$j.')';
    }
    }

    if (!empty($arr))
        $db->query('UPDATE '.$db->prefix.'poll SET votes=votes+1 WHERE tid='.$tid.' AND ('.implode(' OR ', $arr).')') or error('Unable to update poll choice', __FILE__, __LINE__, $db->error());

    $db->query('INSERT INTO '.$db->prefix.'poll_voted (tid, uid, rez) VALUES ('.$tid.','.$uid.',\''.$db->escape(serialize($votes)).'\')') or error('Unable to save vote', __FILE__, __LINE__, $db->error());
    $db->query('UPDATE '.$db->prefix.'topics SET poll_kol=poll_kol+1 WHERE id='.$tid) or error('Unable to update topic', __FILE__, __LINE__, $db->error());
    
    poll_cache_delete($tid);
}

Offline

#46 2011-05-04 17:09:10

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Голосовалка / Poll Mod

Перед

    if (!empty($arr))

поставь

echo var_export($arr, true);

Что выводить будет или нет?

Offline

#47 2011-05-04 18:25:16

wikitest
Участник
Зарегистрирован: 2011-05-04
Сообщений: 10

Re: [MOD] Голосовалка / Poll Mod

array ( 0 => '(question=1 AND field=2)', )

Offline

#48 2011-05-04 18:40:37

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Голосовалка / Poll Mod

@wikitest, тогда получается, что у тебя не выполняются далее идущие запросы к базе.
Включи в common.php строки

define('PUN_DEBUG', 1);
define('PUN_SHOW_QUERIES', 1);

для просмотра запросов внизу страницы.
З.Ы. Может у базы лог есть, в котором можно глянуть какие запросы выполняются, какие нет.

Offline

#49 2011-05-04 18:50:44

wikitest
Участник
Зарегистрирован: 2011-05-04
Сообщений: 10

Re: [MOD] Голосовалка / Poll Mod

после голосования

0.00022     SET NAMES 'utf8'
0.00068     SELECT u.*, g.*, o.logged, o.idle FROM flux_users AS u INNER JOIN flux_groups AS g ON u.group_id=g.g_id LEFT JOIN flux_online AS o ON o.user_id=u.id WHERE u.id=2
0.00036     UPDATE flux_online SET logged=1304523981 WHERE user_id=2
0.00030     SELECT user_id, ident, logged, idle FROM flux_online WHERE logged<1304523681
0.00043     SELECT t.subject, t.closed, t.num_replies, t.sticky, t.first_post_id, t.poll_type, t.poll_time, t.poll_term, t.poll_kol, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, s.user_id AS is_subscribed FROM flux_topics AS t INNER JOIN flux_forums AS f ON f.id=t.forum_id LEFT JOIN flux_topic_subscriptions AS s ON (t.id=s.topic_id AND s.user_id=2) LEFT JOIN flux_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=1) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=14 AND t.moved_to IS NULL
0.00040     SELECT 1 FROM flux_reports WHERE zapped IS NULL
0.00036     SELECT id FROM flux_posts WHERE topic_id=14 ORDER BY id LIMIT 0,25
0.00019     SELECT w.id, w.message, w.poster, w.posted FROM flux_warnings AS w WHERE w.id IN (42,45,46,48,53,55,56,57,61,62,71,73,75,97,111,129,132,133,134,135,136,139,141,147,148)
0.00167     SELECT u.email, u.title, u.url, u.location, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM flux_posts AS p INNER JOIN flux_users AS u ON u.id=p.poster_id INNER JOIN flux_groups AS g ON g.g_id=u.group_id LEFT JOIN flux_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.id IN (42,45,46,48,53,55,56,57,61,62,71,73,75,97,111,129,132,133,134,135,136,139,141,147,148) ORDER BY p.id
0.00043     SELECT question, field, choice, votes FROM flux_poll WHERE tid=14 ORDER BY question, field
0.00022     SELECT 1 FROM flux_poll_voted WHERE tid=14 AND uid=2
0.00032     UPDATE flux_topics SET num_views=num_views+1 WHERE id=14

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

Offline

#50 2011-05-04 19:09:36

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Голосовалка / Poll Mod

Если это вывод запросов при отключенной строке

header('Location: viewtopic.php?id='.$id.((isset($_GET['p']) && $_GET['p'] > 1) ? '&p='.intval($_GET['p']) : ''));

то получается, что запросы не выполняются.
Попробуй прописать вместо

    if (!empty($arr))
        $db->query('UPDATE '.$db->prefix.'poll SET votes=votes+1 WHERE tid='.$tid.' AND ('.implode(' OR ', $arr).')') or error('Unable to update poll choice', __FILE__, __LINE__, $db->error());

    $db->query('INSERT INTO '.$db->prefix.'poll_voted (tid, uid, rez) VALUES ('.$tid.','.$uid.',\''.$db->escape(serialize($votes)).'\')') or error('Unable to save vote', __FILE__, __LINE__, $db->error());
    $db->query('UPDATE '.$db->prefix.'topics SET poll_kol=poll_kol+1 WHERE id='.$tid) or error('Unable to update topic', __FILE__, __LINE__, $db->error());

это

    if (!empty($arr))
        $db->query('UPDATE '.$db->prefix.'poll SET votes=votes+1 WHERE tid='.$tid.' AND ('.implode(' OR ', $arr).')', true) or error('Unable to update poll choice', __FILE__, __LINE__, $db->error());

    $db->query('INSERT INTO '.$db->prefix.'poll_voted (tid, uid, rez) VALUES ('.$tid.','.$uid.',\''.$db->escape(serialize($votes)).'\')', true) or error('Unable to save vote', __FILE__, __LINE__, $db->error());
    $db->query('UPDATE '.$db->prefix.'topics SET poll_kol=poll_kol+1 WHERE id='.$tid, true) or error('Unable to update topic', __FILE__, __LINE__, $db->error());

Offline

Подвал доски

Под управлением FluxBB. Хостинг Hostens