-K-

Рейтинг
97
Регистрация
07.12.2005

Буквально вчера сделал такой пейджер себе и наткнулся сначала на теже грабли :)

Все очень просто, прыгает наверх потому что внутри 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-->
MerlinMAG:
Версия MySQL 5 не совместима с MySQL 4.
Проверьте на какой версии сейчас работает ваша CMS.

Первый раз слышу. Приведите пример запроса, который работает в 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) : '';
dRiveR.dLL:
Дело в том, что в скрипте gallery2, например, не предусмотрено переименовывание пользовательских фотографий.

Если уж они ложатся на сервер с исходными именами, то необходимо определить набор символов и проверять имена на соответствие. А если китайцы или евреи решать свои фотки зааплоадить???

Вообще по хорошему из cp1251 в utf - легко, а вот обратно могут быть трудности

Не стоит использовать в именах файлов или директорий символы кроме latin1 - иначе рано или поздно наткнетесь на проблемы. А если такая необходимость все же возникает - значит у Вас ошибка в проектировании, копайте глубже.

Может не в тему, но разве document.getElementById() или innerHTML умеют кидать исключения?

Зингельшухер:

tommy-gung, я бы предложил всё-же делать так
<?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>
Всего: 287