SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 27.09.2010 01:58:39

Oughtem
Участник
Зарегистрирован: 27.09.2010
Сообщений: 7

Конфликт двух плгинов и ошибка MySQL

Всем привет.
Сайт на КМФ, подключены плагины, всё работает. Я решил немного усовершенствовать один из плагинов (toppages - вывод ТОПа статей) и дописал немного строк кода в отдельный файл (таким образом дописал возможность выводить ТОП статей в header). Этот файл (а вместе с ним и весь плагин) стал конфликтовать с другим плагином (news - вывод новостей на главную в index). По отдельности плагины работаю нормально, а вместе - выдаёт ошибку
Fatal error : SQL error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'l' at line 5

Заранее прошу меня простить за простыни, но спойлера в бб не нашёл. Ниже идёт код того файла, что я написал toppages.header.php

<?PHP

/* ====================
Seditio - Website engine
Copyright Neocrome
http://www.neocrome.net

[BEGIN_SED]
File=plugins/toppages/toppages.header.php
Version=110
Updated=2006-jan-24
Type=Plugin
Author=Azazello
Description=
[END_SED]

[BEGIN_SED_EXTPLUGIN]
Code=toppages
Part=header
File=toppages.header
Hooks=header.tags
Tags=header.tpl:{PLUGIN_TOPPAGES.categorycodehere}
Minlevel=0
Order=10
[END_SED_EXTPLUGIN]

==================== */

if (!defined('SED_CODE')) { die('Wrong URL.'); }

/* ============ MASKS FOR THE HTML OUTPUTS =========== */

$cfg['plu_mask_headertoppages'] = "%2\$s" . "<br>";
//(%3\$s)

// %1\$s = Link to the category
// %2\$s = Link to the page
// %3\$s = Count

if (!defined('SED_CODE')) { die('Wrong URL.'); }
$plu_empty = $L['None']."<br />";
function sed_get_headertoppages($c, $limit, $mask)
        {
        global $L, $db_pages, $usr, $cfg, $sed_cat, $sed_catacc, $plu_empty;

        $mtch = $sed_cat[$c]['path'].".";
        $mtchlen = strlen($mtch);
        $catsub = array();
        $catsub[] = $c;

        @reset($sed_cat);
        while (list($i,$x) = each($sed_cat) )
                {
                if (substr($x['path'],0,$mtchlen)==$mtch)
                        {
                        $catsub[] = $i;
                        }
                }

        $sql = sed_sql_query("SELECT page_id,page_cat,page_title,page_count,page_alias,page_img,page_extra2,page_key FROM $db_pages
                WHERE page_state=0
                AND page_cat NOT LIKE 'system'
                AND page_cat IN ('".implode("','", $catsub)."')
                ORDER by page_count DESC LIMIT $limit");

        while ($row = sed_sql_fetcharray($sql))
                {
                $row['page_urlpar'] = (empty($row['page_alias'])) ? "id=".$row['page_id'] : "al=".$row['page_alias'];
               
$headertoppages_width = $cfg['plugin']['toppages']['hwidth'];
$headertoppages_height = $cfg['plugin']['toppages']['hheight'];
$headertoppages_linkclass = $cfg['plugin']['toppages']['hlinkclass'];
$headertoppages_divclass = $cfg['plugin']['toppages']['hdivclass'];
$headertoppages_cut = $cfg['plugin']['toppages']['hcut'];
$headertoppages_pageav = $cfg['plugin']['toppages']['hpageav'];
$headertoppages_defav = $cfg['plugin']['toppages']['hdefav'];

if ($row['page_img'] == "")
    {
    $topicon = $row['page_extra2'];
    }
elseif ($row['page_extra2'] == "")
    {
    $topicon = "".$headertoppages_pageav."".$row['page_img']."";
    }
if ($row['page_img'] == "")
    {
    if ($row['page_extra2'] == "")
        {
        $topicon = "".$headertoppages_defav."";
        }
    }
                $res .= (sed_auth('page', $row['page_cat'], 'R')) ? sprintf($mask,
               
                    "<a class=\"".$headertoppages_linkclass."\" href=\"page.php?".$row['page_urlpar']."\"><img src=\"".$topicon."\" border=\"0\" width=\"".$headertoppages_width."\" height=\"".$headertoppages_height."\"  align=\"left\" alt=\"".$row['page_title']."\" ></a>",
                    "<a href=\"page.php?".$row['page_urlpar']."\" title=\"".sed_cc(sed_cutstring(stripslashes($row['page_key']),$headertoppages_cut))." ".$L['examened']." ".$row['page_count']." ".$L['examenedcount']."\">".sed_cc(sed_cutstring(stripslashes($row['page_key']),$headertoppages_cut))."</a>"
                    ) : '';
                }

                $res = (empty($res)) ? $plu_empty : $res;
       
                return($res);
        }


if ($cfg['plugin']['toppages']['headermaxpages']>0 && !empty($cfg['plugin']['toppages']['categories']))
        {
        $cats = explode(',', $cfg['plugin']['toppages']['categories']);
        foreach($cats as $k => $i)
                {
                $i = trim($i);
                $toppages[$i] = sed_get_headertoppages(
                        $i,
                        $cfg['plugin']['toppages']['headermaxpages'],
                        $cfg['plu_mask_headertoppages']);
                }
        }

$t-> assign(array(
        "PLUGIN_TOPPAGESHEADER" => $toppages,
        "PLUGIN_TOPPAGESHEADER_MAXLINES" => $cfg['plugin']['toppages']['headermaxpages']
                ));

?>

тот, с которым конфликтует news.functions.php в аттаче. То, что конфликтуют именно эти два файла - лично моё мнение, а оно может быть ошибочным, т.к. я аматор. Очень прошу вас помочь разобраться.

Неактивен

 

#2 27.09.2010 10:28:10

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Конфликт двух плгинов и ошибка MySQL

Вам всё-таки нужно вывести запрос целиком. Без этого можно копаться
несколько лет. Ну и вопросы по PHP следует задавать на webew.ru smile

Неактивен

 

#3 27.09.2010 11:22:34

Oughtem
Участник
Зарегистрирован: 27.09.2010
Сообщений: 7

Re: Конфликт двух плгинов и ошибка MySQL

Хм.. я думал этот вопрос в конфликте запросов. Сам запрос вот
$sql
= sed_sql_query("SELECT page_id,page_cat,page_title,page_count,page_alias,page_img,page_extra2,page_key FROM $db_pages WHERE page_state=0 AND page_cat NOT LIKE 'system' AND page_cat IN ('".implode("','", $catsub)."')

Неактивен

 

#4 27.09.2010 12:27:36

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Конфликт двух плгинов и ошибка MySQL

Это не запрос. Это то, что делает запрос. А какой он в конце концов получается?

Неактивен

 

#5 27.09.2010 14:08:09

Oughtem
Участник
Зарегистрирован: 27.09.2010
Сообщений: 7

Re: Конфликт двух плгинов и ошибка MySQL

SELECT page_id,page_cat,page_title,page_count,page_alias,page_img,page_extra2,page_key FROM sed_pages
                WHERE page_state=0
                AND page_cat NOT LIKE 'system'
                AND page_cat IN ('категория1_из настроек','к2','к3','к4')
                ORDER by page_count DESC LIMIT $limit

На счёт $limit точно не знаю, но думаю он тут ни при чём

Неактивен

 

#6 27.09.2010 18:12:54

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Конфликт двух плгинов и ошибка MySQL

Если запрос работает, значит, дело не в нем smile

Неактивен

 

#7 27.09.2010 19:14:57

Oughtem
Участник
Зарегистрирован: 27.09.2010
Сообщений: 7

Re: Конфликт двух плгинов и ошибка MySQL

А что тогда ещё может быть причиной ошибки Fatal error : SQL error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'l' at line 5
?
К чему относится указание near 'l' at line 5? В каком документе эта пятая строчка?

Неактивен

 

#8 27.09.2010 21:44:23

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Конфликт двух плгинов и ошибка MySQL

В запросе, который Вы пытаетесь выполнить. Собственно, я ожидал, что Вы
напишете его текст smile

Неактивен

 

#9 27.09.2010 22:20:44

Oughtem
Участник
Зарегистрирован: 27.09.2010
Сообщений: 7

Re: Конфликт двух плгинов и ошибка MySQL

Спасибо! Вы уточняющими вопросами натолкнули меня на верный путь! Этот плагин выполняется в хедере и он выполняется, а news из индекса и индекс выдаёт указанную ошибку. Значит она относится к запросу news
Вот сам запрос
SELECT p.*, u.user_name, user_avatar FROM $db_pages AS p
    LEFT JOIN $db_users AS u ON u.user_id=p.page_ownerid
    WHERE page_state=0 AND page_cat != 'system'
    AND    page_begin<'".$sys['now_offset']."' AND page_expire>'".$sys['now_offset']."'
    AND page_cat IN ('".implode("','", $catsub)."') ORDER BY page_".$order." ".$way." LIMIT $d, $limit

Если удалить в пятой строчке
ORDER BY page_".$order." ".$way." LIMIT $d, $limit
то всё работает, но тогда не ограничивается количество выводимых новостей на индексе и нарушается их сортировка по дате. Подскажите, что не так в ORDER BY page_".$order." ".$way." LIMIT $d, $limit   ?  и почему он не совместим с предыдущим запросом?

Отредактированно Oughtem (27.09.2010 22:50:55)

Неактивен

 

#10 27.09.2010 23:56:12

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Конфликт двух плгинов и ошибка MySQL

Если бы Вы вывели таки запрос, то обнаружили бы ошибку. Скорее всего,
какая-то переменная имеет плохое значение.

Неактивен

 

#11 28.09.2010 00:20:44

Oughtem
Участник
Зарегистрирован: 27.09.2010
Сообщений: 7

Re: Конфликт двух плгинов и ошибка MySQL

Я не знаю что надо сделать, чтобы их вывестиsad Как мне узнать какие запросы формируются этими двумя плугами при загрузке главной страницы?

Неактивен

 

#12 28.09.2010 00:40:31

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Конфликт двух плгинов и ошибка MySQL

Вывести — с помощью чего-нибудь типа print($sql). В любом случае,
PHP следует обсуждать на webew.ru smile

Неактивен

 

#13 28.09.2010 00:41:38

Oughtem
Участник
Зарегистрирован: 27.09.2010
Сообщений: 7

Re: Конфликт двух плгинов и ошибка MySQL

Ок, буду писать туда. подскажите, пожалуйста, поподробнее как вывести? Чё делать с print ?

Отредактированно Oughtem (28.09.2010 00:42:15)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson