EvgEsha

Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Скачал тут хак "шапки" (как на этом форуме) для своего invision. Но возникла одна проблема: если шапкой делать первое сообщение темы, то оно дублируется на первойстранице (т.е. отображается шапка и первое сообщение, одинаковые по содержанию). Вот фрагмент кода, ответственный за этот поступок: Код: //-------------------------------------------- // Optimized query? // MySQL.com insists that forcing LEFT JOIN or // STRAIGHT JOIN helps the query optimizer, so.. //-------------------------------------------- if ($this->topic['pinned_post']) { $DB->query( "SELECT p.*, m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_name,m.icq_number, m.signature, m.website,m.yahoo,m.integ_msg,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn, g.g_id, g.g_title, g.g_icon, g.g_dohtml FROM ibf_posts p LEFT JOIN ibf_members m ON (p.author_id=m.id) LEFT JOIN ibf_pfields_content d ON (p.author_id=d.member_id) LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) $join_profile_query WHERE p.pid='".$this->topic['pinned_post']."' and p.queued !='1'"); $post = $DB->fetch_row(); $this->make_post($post, 0); $DB->query( "SELECT p.*, m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_name,m.icq_number, m.signature, m.website,m.yahoo,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn, g.g_id, g.g_title, g.g_icon, g.g_dohtml FROM ibf_posts p LEFT JOIN ibf_members m ON (p.author_id=m.id) LEFT JOIN ibf_pfields_content d ON (p.author_id=d.member_id) LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) WHERE p.topic_id='".$this->topic['tid']."' and p.queued !='1' ORDER BY p.pid LIMIT $first, ".($ibforums->vars['display_max_posts'])); } else { $DB->query( "SELECT p.*, m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_name,m.icq_number, m.signature, m.website,m.yahoo,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn, g.g_id, g.g_title, g.g_icon, g.g_dohtml FROM ibf_posts p LEFT JOIN ibf_members m ON (p.author_id=m.id) LEFT JOIN ibf_pfields_content d ON (p.author_id=d.member_id) LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) WHERE p.topic_id='".$this->topic['tid']."' and p.queued !='1' ORDER BY p.pid LIMIT $first, ".$ibforums->vars['display_max_posts']); } | Чтобы 1-е сообщения не дублировались, я исправил код так: Код: //-------------------------------------------- // Optimized query? // MySQL.com insists that forcing LEFT JOIN or // STRAIGHT JOIN helps the query optimizer, so.. //-------------------------------------------- if ($this->topic['pinned_post']) { $DB->query( "SELECT p.*, m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_name,m.icq_number, m.signature, m.website,m.yahoo,m.integ_msg,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn, g.g_id, g.g_title, g.g_icon, g.g_dohtml FROM ibf_posts p LEFT JOIN ibf_members m ON (p.author_id=m.id) LEFT JOIN ibf_pfields_content d ON (p.author_id=d.member_id) LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) $join_profile_query WHERE p.pid='".$this->topic['pinned_post']."' and p.queued !='1'"); $post = $DB->fetch_row(); $this->make_post($post, 0); $DB->query( "SELECT p.*, m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_name,m.icq_number, m.signature, m.website,m.yahoo,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn, g.g_id, g.g_title, g.g_icon, g.g_dohtml FROM ibf_posts p LEFT JOIN ibf_members m ON (p.author_id=m.id) LEFT JOIN ibf_pfields_content d ON (p.author_id=d.member_id) LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) WHERE p.pid !='".$this->topic['pinned_post']."' and p.topic_id='".$this->topic['tid']."' and p.queued !='1' ORDER BY p.pid LIMIT $first, ".($ibforums->vars['display_max_posts'])); } else { $DB->query( "SELECT p.*, m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_name,m.icq_number, m.signature, m.website,m.yahoo,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn, g.g_id, g.g_title, g.g_icon, g.g_dohtml FROM ibf_posts p LEFT JOIN ibf_members m ON (p.author_id=m.id) LEFT JOIN ibf_pfields_content d ON (p.author_id=d.member_id) LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) WHERE p.topic_id='".$this->topic['tid']."' and p.queued !='1' ORDER BY p.pid LIMIT $first, ".$ibforums->vars['display_max_posts']); } | Сообщения перестали дублироваться, но возник следующий баг: если в теме на последней странице один пост (не считая шапки), то при переходе на эту страницу браузер выдаёт "Невозможно отобразить страницу". Во всех остальных случаях всё работает нормально. В чём ошибка? Может кто подскажет? Заранее спасибо. |