Буквально вчера сделал такой пейджер себе и наткнулся сначала на теже грабли :)
Все очень просто, прыгает наверх потому что внутри PAGES парсится activerow и row отдельно внезависимости от текущей итерации, надо обернуть их в еще что-то, например PAGE:
<!-- BEGIN: pages --><b>{MSG}</b><!-- BEGIN: page --><!-- BEGIN: activerow --><p><b>{PAGE_NAME}</b></p><!-- END: activerow --><!-- BEGIN: row --><p><a href="{PAGE_HREF}">{PAGE_NAME}</a></p><!-- END: row --><!-- END: page --><!-- END: pages -->
Вот как это у меня выглядит:
if ($pages_num > 1) { for($i = 1; $i <= $pages_num; $i++) { $template->assign(array( 'PAGE' => $i, 'LINK' => 'plug.php?p=job&a=vaclist&r='.$r.'&pg='.$i )); if ($i == $pg) { $template->parse('VACANCY_LIST.PAGER.PAGE.CURRENT'); } else { $template->parse('VACANCY_LIST.PAGER.PAGE.LINK'); } $template->parse('VACANCY_LIST.PAGER.PAGE'); } $template->parse('VACANCY_LIST.PAGER'); }
и в шаблоне
<!-- BEGIN: PAGER --> <div style="background-color: #62788E; padding: 3px; color: #fff;"> <h3 style="padding: 0; margin: 0; font-weight: normal; display: inline;">Страницы: </h3> <!-- BEGIN: PAGE --> <!-- BEGIN: CURRENT --> <h3 style="padding: 0; margin: 0 3px 0 3px; display: inline; font-weight: normal;">{PAGE}</h3> <!-- END: CURRENT --> <!-- BEGIN: LINK --> <h3 style="padding: 0; margin: 0 3px 0 3px; display: inline;"><a href="{LINK}" style="color: #fff;">{PAGE}</a></h3> <!-- END: LINK --> <!-- END: PAGE--> </div> <!-- END: PAGER-->
Первый раз слышу. Приведите пример запроса, который работает в 4ке и не будет работать в 5ке. Наоборот - да.
Что то я совсем не понял что надо, чем аська обычная не подходит? Или нужно лог вести?
Если быстро и просто замените
$delimiter = mysql_result($db->query("SELECT delimiter FROM advert_delimiters WHERE blocknum = '$advert_block'"),0);
на
$res = $db->query("SELECT delimiter FROM advert_delimiters WHERE blocknum = '$advert_block'");$delimiter = mysql_num_rows($res) ? mysql_result($res, 0) : '';
Если уж они ложатся на сервер с исходными именами, то необходимо определить набор символов и проверять имена на соответствие. А если китайцы или евреи решать свои фотки зааплоадить???
Вообще по хорошему из cp1251 в utf - легко, а вот обратно могут быть трудности
Не стоит использовать в именах файлов или директорий символы кроме latin1 - иначе рано или поздно наткнетесь на проблемы. А если такая необходимость все же возникает - значит у Вас ошибка в проектировании, копайте глубже.
Может не в тему, но разве document.getElementById() или innerHTML умеют кидать исключения?
<?php function spam($str) { $array = array('/index.php', '/'); if (in_array($_SERVER['REQUEST_URI'], $array)) { return file_get_contents('spam/index' . $str . '.txt'); } else { return file_get_contents('spam/other' . $str . '.txt'); } } ?>
Может не совсем в тему или совсем не в тему, но опытным путем было установлено что если создать не массив с элементами, а с такими ключами (особенно если речь идет о тексте, и проверять isset() то работает на несколько порядков быстрее :)
В данном случае было бы так:
<?php function spam($str) { $array = array('/index.php' => null, '/' => null); if (isset($array[$_SERVER['REQUEST_URI']])) { return file_get_contents('spam/index' . $str . '.txt'); } else { return file_get_contents('spam/other' . $str . '.txt'); } } ?>
Может пригодится кому...
Как и обещал, обновленный код, без использования библиотеки:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <script type="text/javascript"> //<![CDATA[ var xmlHttp = createXmlHttpRequestObject(); var serverAddress = 'upl.html'; ///Путь к файлу на сервере var updateInterval = 10; /// Интервал обновления в секундах function createXmlHttpRequestObject() { var xmlHttp; try { xmlHttp = new XMLHttpRequest(); } catch(e) { var XmlHttpVersions = new Array( "MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"); for(var i=0; i<XmlHttpVarsions.length && !xmlHttp; i++) { try { xmlHttp = new ActiveXObject(XmlHttpVersions); } catch (e) {} } } return xmlHttp; } function updateBlock() { if (xmlHttp) { try { xmlHttp.open("GET", serverAddress, true); xmlHttp.onreadystatechange = handleRequestStateChange; xmlHttp.send(null); } catch(e) { } } } function handleRequestStateChange() { var container = document.getElementById('dataCont'); var serverResponse = xmlHttp.responseText; if (container && xmlHttp.readyState == 4 && xmlHttp.status == 200 && serverResponse.length > 0) { container.innerHTML = serverResponse; setTimeout("updateBlock();", updateInterval * 1000); } } //]]> </script> </head> <body onload="updateBlock();"> Block data: <div id="dataCont"></div> </body> </html>