Задавайте вопросы, мы ответим
Вы не зашли.
Всем привет.
Сайт на КМФ, подключены плагины, всё работает. Я решил немного усовершенствовать один из плагинов (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 в аттаче. То, что конфликтуют именно эти два файла - лично моё мнение, а оно может быть ошибочным, т.к. я аматор. Очень прошу вас помочь разобраться.
Неактивен
Вам всё-таки нужно вывести запрос целиком. Без этого можно копаться
несколько лет. Ну и вопросы по PHP следует задавать на webew.ru
Неактивен
Хм.. я думал этот вопрос в конфликте запросов. Сам запрос вот
$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)."')
Неактивен
Это не запрос. Это то, что делает запрос. А какой он в конце концов получается?
Неактивен
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 точно не знаю, но думаю он тут ни при чём
Неактивен
Если запрос работает, значит, дело не в нем
Неактивен
А что тогда ещё может быть причиной ошибки 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? В каком документе эта пятая строчка?
Неактивен
В запросе, который Вы пытаетесь выполнить. Собственно, я ожидал, что Вы
напишете его текст
Неактивен
Спасибо! Вы уточняющими вопросами натолкнули меня на верный путь! Этот плагин выполняется в хедере и он выполняется, а 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)
Неактивен
Если бы Вы вывели таки запрос, то обнаружили бы ошибку. Скорее всего,
какая-то переменная имеет плохое значение.
Неактивен
Я не знаю что надо сделать, чтобы их вывести Как мне узнать какие запросы формируются этими двумя плугами при загрузке главной страницы?
Неактивен
Вывести — с помощью чего-нибудь типа print($sql). В любом случае,
PHP следует обсуждать на webew.ru
Неактивен
Ок, буду писать туда. подскажите, пожалуйста, поподробнее как вывести? Чё делать с print ?
Отредактированно Oughtem (28.09.2010 00:42:15)
Неактивен