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

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

Вы не вошли.

Объявление

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

#1 2007-10-24 20:49:44

Romanice
Гость

Ошибка при получении нового ЛС

Когда получаю новое личное сообщение, что сверху появляется строка
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in d:\hst\mouse-enotik0_b4783dc4\http\Forum\include\pms\header_new_messages.php on line 19

С момент установки я ничего не менял.

Кто знает, как можно исправить эту ошибку?

#2 2007-10-29 22:01:46

SDTux
Гость

Re: Ошибка при получении нового ЛС

что-то вы, наверное, все же меняли. У меня на 19-й строке в этом файле закрытие цикла - }

#3 2007-11-19 14:08:34

donasus
Гость

Re: Ошибка при получении нового ЛС

Mдaaaa hmm

#4 2008-03-12 21:06:17

DeRomanok
Гость

Re: Ошибка при получении нового ЛС

У меня точно такая же проблема, только в строке 21.

#5 2008-03-13 16:00:25

Visman
Гость

Re: Ошибка при получении нового ЛС

Romanice пишет:

header_new_messages.php

Текст файла в блоке КОД в студию.

#6 2008-03-13 18:20:23

DeRomanok
Гость

Re: Ошибка при получении нового ЛС

<?php


    if(!$pun_user['is_guest'] && $pun_user['g_pm'] == 1 && $pun_config['o_pms_enabled'] && $pun_user['messages_enable'] == 1 ){
        require PUN_ROOT.'lang/'.$pun_user['language'].'/pms.php';

        // Check for new messages
        $result_messages = $db->query('SELECT COUNT(id) FROM '.$db->prefix.'messages WHERE showed=0 AND owner='.$pun_user['id']) or error('Unable to check for new messages', __FILE__, __LINE__, $db->error());
        //if ($db->result($result_messages, 0)){
        list($new_msg)=$db->fetch_row($result_messages);
        if ($new_msg>0){
         ///$tpl_temp .= "\n\t\t\t\t".'<li class="pmlink"><strong><a href="message_list.php">'.$lang_pms['New messages'].'</a></strong></li>';
        $tpl_temp .= "\n\t\t\t\t".'<ul><li class="pmlink"><strong><a href="message_list.php"> '.$lang_pms['New messages'].' ('.$new_msg. ')</a></strong></li></ul>';


        if ($pun_user['popup_enable'] == 1 )
        {
        ///$result_messages = $db->query('SELECT COUNT(*) FROM '.$db->prefix.'messages WHERE popup=0 AND owner='.$pun_user['id']) or error('Unable update popup status', __FILE__, __LINE__, $db->error());
        $result_messages = $db->query('SELECT id FROM '.$db->prefix.'messages WHERE popup=0 AND owner='.$pun_user['id'] . ' ORDER BY id DESC') or error('Unable update popup status', __FILE__, __LINE__, $db->error());

        $return = mysql_fetch_array($result_messages);


        if ($return[0]) {



            $tpl_temp .="\n\t\t\t\t".'<script language="JavaScript" type="text/javascript">
                    <!--
                        window.open("message_popup.php?id=' . $return[0] . '","NewPM","width=500,height=250,resizable=yes,scrollbars=yes");
                    //-->
                     </script>';

            $db->query('UPDATE '.$db->prefix.'messages SET popup="1" WHERE popup="0"  AND owner='.$pun_user['id']) or error('Unable to update popup status', __FILE__, __LINE__, $db->error());
        }
        }

        }
        // Check if the inbox is full
        //if($pun_config['o_pms_messages'] != 0 && $pun_user['g_id'] > PUN_GUEST){
            $result = $db->query('SELECT count(*) FROM '.$db->prefix.'messages WHERE owner='.$pun_user['id']) or error('Unable to test if the message-box is full', __FILE__, __LINE__, $db->error());
            list($count) = $db->fetch_row($result);

            // Display error message
            if($count >= $pun_user['g_pm_limit'])
                $tpl_temp .= "\n\t\t\t\t".'<ul><li class="pmlink"><strong><a href="message_list.php">'.$lang_pms['Full inbox'].'</a></strong></li></ul>';
        //}
    }


?>

Вот, в строке 21 у меня располагается вот это: $return = mysql_fetch_array($result_messages);

#7 2008-03-13 19:03:45

Visman
Гость

Re: Ошибка при получении нового ЛС

$result_messages = $db->query('SELECT id FROM '.$db->prefix.'messages WHERE popup=0 AND owner='.$pun_user['id'] . ' ORDER BY id DESC') or error('Unable update popup status', __FILE__, __LINE__, $db->error());

заменить на

$result_messages = $db->query('SELECT id FROM '.$db->prefix.'messages WHERE popup=0 AND owner='.$pun_user['id'] . ' ORDER BY id DESC LIMIT 1') or error('Unable update popup status', __FILE__, __LINE__, $db->error());

и посмотреть, что выйдет.

А вообще такой

        ///$result_messages = $db->query('SELECT COUNT(*) FROM '.$db->prefix.'messages WHERE popup=0 AND owner='.$pun_user['id']) or error('Unable update popup status', __FILE__, __LINE__, $db->error());
        $result_messages = $db->query('SELECT id FROM '.$db->prefix.'messages WHERE popup=0 AND owner='.$pun_user['id'] . ' ORDER BY id DESC') or error('Unable update popup status', __FILE__, __LINE__, $db->error());

        $return = mysql_fetch_array($result_messages);


        if ($return[0]) {



            $tpl_temp .="\n\t\t\t\t".'<script language="JavaScript" type="text/javascript">
                    <!--
                        window.open("message_popup.php?id=' . $return[0] . '","NewPM","width=500,height=250,resizable=yes,scrollbars=yes");
                    //-->
                     </script>';

            $db->query('UPDATE '.$db->prefix.'messages SET popup="1" WHERE popup="0"  AND owner='.$pun_user['id']) or error('Unable to update popup status', __FILE__, __LINE__, $db->error());

подход странен т.к. во всплывающем окне видать выводится только одно сообщение, а прочитанными помечаются все новые сообщения.

#8 2008-03-13 20:36:42

hcs
Гость

Re: Ошибка при получении нового ЛС

DeRomanok
Нельзя ли привести полный текст ошибки?

#9 2008-03-13 20:40:33

DeRomanok
Гость

Re: Ошибка при получении нового ЛС

Не помог ни один из способов. sad

Добавлено спустя     1 минуту   43 секунды:
Полный текст ошибка, появляется в самом верху страницы >

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\include\pms\header_new_messages.php on line 21

Текст файла header_new_messages.php я написал выше.

#10 2008-03-14 04:15:21

Visman
Гость

Re: Ошибка при получении нового ЛС

DeRomanok пишет:

Не помог ни один из способов.

Вот текст файла у меня:

<?php
// Make sure no one attempts to run this script "directly"
if (!defined('PUN'))
    exit;

    if(!$pun_user['is_guest'] && $pun_user['g_pm'] == 1 && $pun_config['o_pms_enabled'] && $pun_user['messages_enable'] == 1 ){
        require PUN_ROOT.'lang/'.$pun_user['language'].'/pms.php';

        // Check for new messages
        $result_messages = $db->query('SELECT COUNT(id) FROM '.$db->prefix.'messages WHERE showed=0 AND owner='.$pun_user['id'].' AND owner_status=0') or error('Unable to check for new messages', __FILE__, __LINE__, $db->error());
        list($new_msg)=$db->fetch_row($result_messages);
        if ($new_msg>0){
            $tpl_temp .= "\n\t\t\t\t".'<ul><li class="pmlink"><strong><a href="message_list.php"> '.$lang_pms['New messages'].' ('. $new_msg . ')</a></strong></li></ul>';
// Всплывающие окна удалены
        }
        // Check if the inbox is full
        if($pun_user['g_pm_limit'] != 0 && $pun_user['g_id'] > PUN_GUEST){
            $result = $db->query('SELECT count(*) FROM '.$db->prefix.'messages WHERE (owner='.$pun_user['id'].' AND owner_status=0) OR (sender_id='.$pun_user['id'].' AND sender_status=0)') or error('Unable to test if the message-box is full', __FILE__, __LINE__, $db->error());
            list($count) = $db->fetch_row($result);
            // Display error message
            if($count >= $pun_user['g_pm_limit'])
                $tpl_temp .= "\n\t\t\t\t".'<ul><li class="pmlink"><strong><a href="message_list.php">'.$lang_pms['Full inbox'].'</a></strong></li></ul>';
        }
    }


?>

Можно попробовать его поставить или по аналогии поправить.

#11 2008-03-14 07:42:12

hcs
Гость

Re: Ошибка при получении нового ЛС

Попробуй так
замени эти строки:

        $return = mysql_fetch_array($result_messages);


        if ($return[0]) {

на это:

        if ($db->num_rows($result_messages)) {
            $return = $db->fetch_row($result_messages);

Добавлено спустя     56 минут   29 секунд:
Все исправления можно взять в этой теме - Сборка нашего форума архив в конце топика.

#12 2008-03-14 19:27:35

DeRomanok
Гость

Re: Ошибка при получении нового ЛС

Все заработало, помог вариант hcs. Всем спасибо за помощь. smile

Подвал доски

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