Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Страницы 1
Тема закрыта
Когда получаю новое личное сообщение, что сверху появляется строка
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
С момент установки я ничего не менял.
Кто знает, как можно исправить эту ошибку?
что-то вы, наверное, все же меняли. У меня на 19-й строке в этом файле закрытие цикла - }
Mдaaaa
У меня точно такая же проблема, только в строке 21.
header_new_messages.php
Текст файла в блоке КОД в студию.
<?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);
$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());
подход странен т.к. во всплывающем окне видать выводится только одно сообщение, а прочитанными помечаются все новые сообщения.
DeRomanok
Нельзя ли привести полный текст ошибки?
Не помог ни один из способов.
Добавлено спустя 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 я написал выше.
Не помог ни один из способов.
Вот текст файла у меня:
<?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>';
}
}
?>
Можно попробовать его поставить или по аналогии поправить.
Попробуй так
замени эти строки:
$return = mysql_fetch_array($result_messages);
if ($return[0]) {
на это:
if ($db->num_rows($result_messages)) {
$return = $db->fetch_row($result_messages);
Добавлено спустя 56 минут 29 секунд:
Все исправления можно взять в этой теме - Сборка нашего форума архив в конце топика.
Все заработало, помог вариант hcs. Всем спасибо за помощь.
Страницы 1
Тема закрыта