[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Постраничная навигация
xJlaIIax
Доброе время суток!
Использую скрипт для постраничной навигации:
$result77 = mysql_query("SELECT str FROM options", $db);
$myrow77 = mysql_fetch_assoc($result77);
$num = $myrow77["str"];
// Извлекаем из URL текущую страницу
@$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result00 = mysql_query("SELECT COUNT(*) FROM data WHERE cat='$cat'");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
// Находим общее число страниц
$total = (($posts - 1) / $num) + 1;
$total = intval($total);
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю

if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить сообщения

$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start

$result = mysql_query("SELECT id,title,description,date,author FROM data WHERE cat='$cat' ORDER BY id LIMIT $start, $num",$db);

// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=view_cat.php?cat='.$cat.'&page=1>Первая</a> | <a href=view_cat.php?cat='.$cat.'&page='. ($page - 1) .'>Предыдущая</a> | ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 1) .'>Следующая</a> | <a href=view_cat.php?cat='.$cat.'&page=' .$total. '>Последняя</a>';

// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
if($page - 4 > 0) $page4left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
if($page - 3 > 0) $page3left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if($page - 2 > 0) $page2left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=view_cat.php?cat='.$cat.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';

if($page + 5 <= $total) $page5right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';

// Вывод меню если страниц больше одной

if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}

Для проверки переменной page на число использую в начале страницы код:
if (!preg_match("|^[\d]+$|", $page)) 
{
exit ("<p>Неверный формат запроса! Проверьте URL!");
}

Если перейти на index.php, то скрипт проверки выводит сообщение.
Как сделать, так что бы человек зайдя на index.php перенаправлялся на index.php?&page=1
Хотел ещё спросить хороший скрипт или есть лучше?



Спустя 9 минут, 21 секунда (18.11.2010 - 19:56) koala написал(а):
Цитата
Как сделать, так что бы человек зайдя на index.php перенаправлялся на index.php?&page=1


if (!isset($_GET['page']))
{
header ('location: index.php&page=1');
}


Но мне кажеться что так будет не правильно, я имею ввиду адрес, может index.php?page=1 ? Судя по вашему коду, ссылку надо сделать другой для перенаправления.


Спустя 8 минут, 24 секунды (18.11.2010 - 20:04) T1grOK написал(а):
Проверяйте инициализирована ли переменная page перед проверкой ее на корректность.
Я так понимаю, что ссылка index.php == index.php?page=1, тогда

if (!isset($_GET['page'])){
$page = 1;
}

И не надо никакого перенаправления.
Скрипты есть и получше. Ваш скрипт сложно расширять, то есть если вам нужно будет вывести по 10 страниц с обеих сторон, то нужно будет дописывать еще строки. Используйте циклы, код получится несколько короче и более гибким.

Спустя 4 минуты, 3 секунды (18.11.2010 - 20:08) DySprozin написал(а):
;;Как сделать, так что бы человек зайдя на index.php перенаправлялся на index.php?&page=1
я бы на вашем месте курил в сторону .htaccess (; ну или как T1grOK посоветовал (;

;;Error_Reporting(E_ALL & ~E_NOTICE);
а вот тут лучше бы перенаправлять ошибки в лог-файл, не стоит юзверю показывать подноготную (;

Спустя 17 минут, 30 секунд (18.11.2010 - 20:26) xJlaIIax написал(а):
T1grOK, спасибо сделал проверку, как ты посоветовал:
if (!isset($_GET['page']))
{
$page = 1;
}

/* Проверяем, является ли переменная числом */
if (!preg_match("|^[\d]+$|", $page))
{
exit ("<p>Неверный формат запроса! Проверьте URL!");
}

Хотел ещё спросить стоит ли делать ссылки вида: index.php?page=1 вместо index.php?&page=1 и что это даст?

Спустя 15 минут, 48 секунд (18.11.2010 - 20:42) xJlaIIax написал(а):
Цитата (DySprozin @ 18.11.2010 - 17:08)
;;Error_Reporting(E_ALL & ~E_NOTICE);
а вот тут лучше бы перенаправлять ошибки в лог-файл, не стоит юзверю показывать подноготную (;

А если это вообще убрать и сделать так?
if ($total > 1)
{
echo "<div class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}

Спустя 33 минуты, 55 секунд (18.11.2010 - 21:16) DySprozin написал(а):
;;А если это вообще убрать
логи - они нужны (; покури вот эту статью - ИМХО оч. пользительно:
http://i-novice.net/skryvaem-vyvod-oshibok-v-php/

Спустя 1 час, 33 минуты, 11 секунд (18.11.2010 - 22:49) inpost написал(а):
xJlaIIax
Знаешь репутация Попова? Они ниже плинтуса, этот скрипт Попова =)
1) irbis-team.com // постраничная навигация
2) на форуме в конкурсах были попытки сделать качественные постраничные навигации, на их примере + комментариях экспертов можно и самому написать все качественно.
3) Тигрок ответил правильно, если переменной нету, значит будет ставиться 1. Так же в этой навигации нету даже простой защиты от инъекций! Надо написать (int) при получении номера страницы.

Спустя 9 часов, 15 минут, 20 секунд (19.11.2010 - 08:04) xJlaIIax написал(а):
Посмотрел, там 8 работ.
Какую Вы бы посоветовали и почему?
Так же нашел статейку: http://pyha.ru/articles/php/paginator/
Что Вы думаете об ней?

Спустя 7 часов, 25 минут, 3 секунды (19.11.2010 - 15:29) xJlaIIax написал(а):
Цитата (inpost @ 18.11.2010 - 19:49)
xJlaIIax
Так же в этой навигации нету даже простой защиты от инъекций! Надо написать (int) при получении номера страницы.

Зачем я же в самом начале проверил переменную page.
if (!isset($_GET['page']))
{
$page = 1;
}

/* Проверяем, является ли переменная числом */
if (!preg_match("|^[\d]+$|", $page))
{
exit ("<p>Неверный формат запроса! Проверьте URL!");
}

Если вместо числа будут символы, то завершится работа и выведется текст "Неверный формат запроса! Проверьте URL!".
Или я что то не понял?

Спустя 8 минут, 36 секунд (19.11.2010 - 15:38) twin написал(а):
xJlaIIax
Цитата
Что Вы думаете об ней?
Весьма прилично, но достаточно прмитивный пагинатор. Основы там не в пример Попову расписаны.

Попов кстати свой скрипт нагло спер у softtime, он там не очень, они сами признавали. Только Попов умудрился его еще и испртить.

Спустя 1 час, 15 минут, 51 секунда (19.11.2010 - 16:54) xJlaIIax написал(а):
twin, подредактировал скрипт:
MySQL таблица:
CREATE TABLE `options`
(
`id` INT(2) NOT NULL AUTO_INCREMENT,
`nums` INT(2) NOT NULL,
`neighbours` INT(2) NOT NULL,
PRIMARY KEY (`id`)
);

Скрипт:
<?php
/* Проверяем является ли переменная page числом */
$page = (int)$_GET['page'];
if (!isset($_GET['page']))
{
$page = 1;
}
/* Количество записей выводимых на страницу */
$result1 = mysql_query ("SELECT nums FROM options", $db);
$myrow1 = mysql_fetch_assoc($result1);
$nums = $myrow1['nums'];
/* Подсчитываем количество строк */
$result2 = mysql_query ("SELECT COUNT(*) AS id FROM data", $db);
$myrow2 = mysql_fetch_assoc($result2);
$elements = $myrow2['id'];
/* Выясняем количество страниц */
$pages = ceil($elements/$nums);
/* Теперь проверяем чтобы переменная page не была меньше 1 и не больше последней страницы */
if ($page < 1)
$page = 1;
elseif ($page > $pages)
$page = $pages;
/* Для лимита в нашем запросе, подсчитываем первый оператор, который показывает с какой записи мы начинаем делать выборку */
$start = ($page-1)*$nums;
/* В конце нашего запроса добавляем LIMIT $start, $nums */
$result = mysql_query ("SELECT name,description,author,date FROM data LIMIT $start, $nums", $db);
?>
<!-- Стиль для листинга -->
<
div class="navigation">
<?php
/* Количество выводимых страниц, выводим только соседние страницы по отношению к текущей */
$result3 = mysql_query ("SELECT neighbours FROM options", $db);
$myrow3 = mysql_fetch_assoc($result3);
$neighbours = $myrow3['neighbours'];
$left_neighbour = $page - $neighbours;
if ($left_neighbour < 1) $left_neighbour = 1;
/* Выводим листинг */
$right_neighbour = $page + $neighbours;
if ($right_neighbour > $pages) $right_neighbour = $pages;

if ($page > 1)
{
echo ' <a href="?page=1">начало</a> ... <a href="?page='. ($page-1) .'">←сюда</a> ';
}

for ($i=$left_neighbour; $i<=$right_neighbour; $i++)
{
if ($i != $page)
{
echo ' <a href="?page='. $i .'">'. $i .'</a> ';
}
else
{
echo ' <b>'. $i .'</b> ';
}
}


if ($page < $pages)
{
echo ' <a href="?page='. ($page+1) .'">туда→</a> ... <a href="?page='. $pages .'">конец</a> ';
}
?>
<!-- Закрываем стиль для листинга -->
</
div>

Стиль для листинга:

.navigation
{
font-family: Tahoma; /* Шрифта для текстов и номеров */
text-align:center; /* Выравниваем листинг по центру */
}

.navigation a:link,
.navigation a:visited,
.navigation a:hover,
.navigation a:active
{
text-decoration:none; /* Отмена подчёркиваний у ссылок */
color: #000; /* Цвета ссылок */
background-color: #fff; /* Цвета блоков в случае, если картинка не найдена */
background-image: url(nav.gif); /* Фоновое изображение */
padding:3px 6px; /* Отступы для формирования блоков */
font-size:12px; /* Размер шрифта ссылок */
font-weight:bold; /* Полужирный шрифт ссылок */
}

/* Тоже самое, только после наведения курсора мыши */
.navigation a:hover
{
color:#000;
background-color: #fff;
background-image: url(fon.gif);
}

.navigation span
{
text-decoration:none;
color:#000;
background:#fff;
padding:3px 6px;
font-size:12px;
}

Хочу услышать Ваше мнение, какие есть недостатки, достойная ли защита?

Спустя 43 минуты, 24 секунды (19.11.2010 - 17:37) twin написал(а):
Скажи чесно, на какм-нибудь боее-менее приличном сайте ты встречал такое
/* Проверяем является ли переменная page числом */
if (!preg_match("|^[\d]+$|", $page))
{
exit ('<p>Неверный формат запроса! Проверьте URL!</p>');
}

?

Спустя 2 минуты, 26 секунд (19.11.2010 - 17:39) Basili4 написал(а):
Цитата (twin @ 19.11.2010 - 18:37)
if (!preg_match("|^[\d]+$|", $page))

зато по взрослому. Сарзу видно что программирование это сложно и уважение к автору появляется. и денег ему хочится отвалить что научил

Спустя 3 минуты, 4 секунды (19.11.2010 - 17:42) xJlaIIax написал(а):
Нет, я же не могу залесть и посмотреть php код на других сайтах, как там проверяется переменная на число.
Или ты про то что выводится если переменная не является числом?
twin, если я сделал не правильно объясни, как надо.

Спустя 58 минут, 7 секунд (19.11.2010 - 18:41) inpost написал(а):
Регулярка - это тяжелый процес, лучше просто: $page = (int)$page; и нет проблем, пройдут только цифры.

Спустя 19 минут, 44 секунды (19.11.2010 - 19:00) twin написал(а):
Цитата
Или ты про то что выводится если переменная не является числом?
Да, про это. exit в боевой программе - моветон. Если он в таком ключе. Это только для отладки годится.

Спустя 14 минут, 25 секунд (19.11.2010 - 19:15) xJlaIIax написал(а):
twin, если я правильно тебя понял, то не хорошо пользователю показывать белый экран с этой надписью, надо это оформить под сайт?

Спустя 1 минута, 15 секунд (19.11.2010 - 19:16) inpost написал(а):
xJlaIIax
Конечно, в основном это редирект на 404, или специальные предупреждения, что не правильно сделали то и то.

Спустя 9 минут, 57 секунд (19.11.2010 - 19:26) twin написал(а):
В постраничке обычно на первую. Можно прям на этом форуме посмотреть.

Спустя 28 минут, 15 секунд (19.11.2010 - 19:54) xJlaIIax написал(а):
twin, а если так:
if (!preg_match("|^[\d]+$|", $page)) 
{
exit ('<meta http-equiv="refresh" content="0; url=index.php">');
}


Я думаю простой пользователь не будет в переменную вместо числа ставить символы.

Спустя 3 минуты, 23 секунды (19.11.2010 - 19:58) twin написал(а):
Еще хуже. Если не число, сделай числом. Единицей. и не пудри людям моск всякими перенаправлениями и смешными надписями с восклицательными знаками. Откуда мода такая... Подозреваю Мэтра.

Спустя 9 минут, 38 секунд (19.11.2010 - 20:07) xJlaIIax написал(а):
twin, ну так я ещё в этом деле не опытен, вот и делаю такие ошибки.
Так делать надо:
if (!preg_match("|^[\d]+$|", $page)) 
{
$page = 1;
}

Спустя 13 минут, 52 секунды (19.11.2010 - 20:21) inpost написал(а):
xJlaIIax
thispage.php?page=9999999 - какая выведется?
И зачем, зачем регулярка? Можешь объяснить?

Спустя 38 минут, 57 секунд (19.11.2010 - 21:00) xJlaIIax написал(а):
Цитата (inpost @ 19.11.2010 - 17:21)
xJlaIIax
thispage.php?page=9999999 - какая выведется?
И зачем, зачем регулярка? Можешь объяснить?

Да действительно, косяк с page=9999999 есть.
Я думаю надо
if ($page < 1)
{
$page = 1;
}
elseif ($page > $pages)
{
$page = $pages;
}

Заменить на
if ($page < 1)
{
$page = 1;
}
elseif ($page > $pages)
{
$page = 1;
}

То есть, если page больше чем количество страниц, то мы page присваиваем значение 1.
Теперь косяк с page=9999999 исправлен?

Насчёт регулярки, честно не знаю я просто переделал скрипт.
Возможно обойтись без регулярки?

Спустя 1 минута, 39 секунд (19.11.2010 - 21:02) xJlaIIax написал(а):
Хотел ещё спросить, как лучше переменную проверять на число?
Так:
if (!is_numeric($page)) 
{
$page = 1;
}

Или как было:
if (!preg_match("|^[\d]+$|", $page)) 
{
$page = 1;
}

Спустя 6 минут, 23 секунды (19.11.2010 - 21:08) inpost написал(а):
Не нужна проверка вообще.
$page = (int)$page;
if(($page < 1) || ($page > $pages)
{
$page = 1;
}

Спустя 5 минут, 51 секунда (19.11.2010 - 21:14) xJlaIIax написал(а):
inpost, хотя я сейчас подумал там косяка с page нет.
То есть, если page менешь 1, то делаем page=1, если page больше чем количество страниц, то делаем page=номер последней страницы.

Спустя 22 минуты, 2 секунды (19.11.2010 - 21:36) inpost написал(а):
xJlaIIax
Прочитай мой код, у меня отсутствует регулярка!

Спустя 6 минут, 45 секунд (19.11.2010 - 21:43) xJlaIIax написал(а):
inpost, то есть регулярка это elseif?
А чем плоха регулярка?

Спустя 6 минут, 47 секунд (19.11.2010 - 21:49) inpost написал(а):
int - переводит любые данные в число! Если там страшный скрипт, то будет ответ "0", если там числа - вернёт числа. Выполнит эту работу в 10 раз быстрее.
Регулярка лишь проверит строку, и если вдруг там будут не только числа - выйдет false, и тогда получится page=1. Разница в скорости выполнения.
Смотри, в адресную строку я введу: index.php?page=5`'|;+" - при твоей регулярке откроется страница 1, при обычном int возьмется число до первого знака, значит выйдет ответ 5, и откроется 5-ая страница, как бы вырежет остальное.
Это такой, детский-легкий пример, чтобы ты понимал, как устроено приблизительно. Регулярка - зло в ПХП, просто в некоторых моментах без него нельзя! Если есть любой другой способ без них сделать тоже самое, то лучше обойтись без них.

Спустя 23 минуты, 32 секунды (19.11.2010 - 22:13) xJlaIIax написал(а):
inpost, если я буду использовать int, то в начале скрипта нужно?
if (!isset($_GET['page']))
{
$page = 1;
}

Спустя 1 минута, 39 секунд (19.11.2010 - 22:15) inpost написал(а):
Ну эта надпись нужна независимо от того, используешь int или нет! Я говорю, что вместо регулярки надо int.

Спустя 4 минуты, 11 секунд (19.11.2010 - 22:19) xJlaIIax написал(а):
То есть, мы убираем из скрипта код:
if (!preg_match("|^[\d]+$|", $page)) 
{
exit ('<p>Неверный формат запроса! Проверьте URL!</p>');
}

И меняем
if ($page < 1)
{
$page = 1;
}
elseif ($page > $pages)
{
$page = $pages;
}

На
$page = (int)$page;
if(($page < 1) || ($page > $pages)
{
$page = 1;
}

и всё, больше ничего менять не надо, я правильно понял?

Спустя 4 минуты, 28 секунд (19.11.2010 - 22:23) inpost написал(а):
Можно и твоим способом:
$page = (int)$_GET['page']; // В самом начале, далее обращаться непосредственно к $page!
// тут куча текста

if ($page < 1)
$page = 1;
elseif ($page > $pages)
$page = $pages;


UPDATE: Я подправил, чтобы не портить твой скрипт

Спустя 51 минута, 52 секунды (19.11.2010 - 23:15) xJlaIIax написал(а):
Я подредактировал скрипт, посмотрите.

Спустя 57 минут, 37 секунд (20.11.2010 - 00:13) twin написал(а):
Где смотреть?

Спустя 4 минуты, 10 секунд (20.11.2010 - 00:17) twin написал(а):
Вот это
$result00 = mysql_query("SELECT COUNT(*) FROM data WHERE cat='$cat'");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];

лучше так
$result00 = mysql_query("SELECT COUNT(*) AS cnt FROM data WHERE cat='$cat'");
$posts = mysql_result($result00, 0);

А в целом пойдет.

Спустя 6 минут, 43 секунды (20.11.2010 - 00:24) xJlaIIax написал(а):
twin, не то smile.gif
12 пост в этой теме, http://phpforum.ru/index.php?act=Print&cli...imin=11&limit=1

Спустя 14 минут, 45 секунд (20.11.2010 - 00:38) twin написал(а):
А тоже самое. Это место поправь и пойдет.

Спустя 6 часов, 37 минут, 18 секунд (20.11.2010 - 07:16) xJlaIIax написал(а):
Заменил:
/* Подсчитываем количество строк */
$result2 = mysql_query ("SELECT COUNT(*) AS id FROM data", $db);
$myrow2 = mysql_fetch_assoc($result2);
$elements = $myrow2['id'];
/* Выясняем количество страниц */
$pages = ceil($elements/$nums);

На:
/* Подсчитываем количество строк */
$result2 = mysql_query ("SELECT COUNT(*) AS cnt FROM data", $db);
$myrow2 = mysql_result ($result2, 0);
/* Выясняем количество страниц */
$pages = ceil($myrow2/$nums);

Если больше нет проблем к безопасности скрипта и к коду, можно создать тему с этим скриптом и прицепить её, много новичков ищут хорошую и не сложную постраничную навигацию.

P.S. twin, у тебя опечатка, не
$posts = myscl_result($result00, 0);

а
$posts = mysql_result($result00, 0);

Спустя 1 час, 48 минут, 24 секунды (20.11.2010 - 09:04) twin написал(а):
<?php
/*
* Количество записей выводимых на страницу
*/

$num = 10;

/*
* Количество выводимых страниц, выводим только соседние страницы по отношению к текущей
*/

$height = 10;

/*
* Проверяем является ли переменная page числом
*/

$page = !empty($_GET['page']) ? (int)$_GET['page'] : 1;

/*
* Подсчитываем количество строк
*/

$result = mysql_query("SELECT COUNT(*) AS `cnt` FROM `table` ", $db);
$elements = mysql_result($result, 0);

/*
* Выясняем количество страниц
*/

$total = ceil($elements / $num);

/*
* Теперь проверяем чтобы переменная page не была меньше 1 и не больше последней страницы
*/

if ($page < 1)
$page = 1;
elseif ($page > $total)
$page = $total;

/*
* Для лимита в нашем запросе, подсчитываем первый оператор, который
* показывает с какой записи мы начинаем делать выборку
*/

$start = ($page - 1) * $num;

/*
* В конце нашего запроса добавляем LIMIT $start, $nums
*/

$result = mysql_query ("SELECT * FROM `table` LIMIT ". $start .", ". $num, $db);

?>
<!-- Стиль для листинга -->
<
div class="navigation">
<?php

$left = $page - $height / 2;

if ($left < 1)
$left = 1;

$right = $page + $height / 2;

if ($right > $total)
$right = $total;

/*
* Выводим листинг
*/

if ($page > 1)
echo ' <a href="?page=1">начало</a> ... <a href="?page='. ($page - 1) .'">←сюда</a> ';


for ($i = $left; $i <= $right; ++$i)
{
if ($i != $page)
echo ' <a href="?page='. $i .'">'. $i .'</a> ';
else
echo ' <b>'. $i .'</b> ';
}

if ($page < $total)
echo ' <a href="?page='. ($page + 1) .'">туда→</a> ... <a href="?page='. $total .'">конец</a> ';

?>
<!-- Закрываем стиль для листинга -->
</
div>



Проверяй и пиши описание пошагово, как тут, закрепим. Отчего же нет.

Спустя 30 минут, 35 секунд (20.11.2010 - 09:35) xJlaIIax написал(а):
twin, хорошо сегодня вечером сделаем. Описание писать в этой теме или создавать новую?
Ты думаешь, значение переменным лучше писать так: $num = 10 $height = 10?
Просто, зачем я сделал выборку значений из базы, потому что если человек в пять файлов вставил скрипт, то ему будет проще подредактировать значение в БД, чем открывать 5 этих файлов и править в них.

Спустя 22 минуты, 33 секунды (20.11.2010 - 09:57) twin написал(а):
Создай новую, её и закрепим.
Цитата
Ты думаешь, значение переменным лучше писать так: $num = 10 $height = 10?
Просто, зачем я сделал выборку значений из базы, потому что если человек в пять файлов вставил скрипт, то ему будет проще подредактировать значение в БД, чем открывать 5 этих файлов и править в них.

Проще это установить в канфигурационном файле, чем лишний раз дергать базу.

Спустя 12 часов, 9 минут, 4 секунды (20.11.2010 - 22:06) xJlaIIax написал(а):
twin, я не много не пойму, ты написал
    $left = $page - $height / 2;

if ($left < 1)
$left = 1;

$right = $page + $height / 2;

if ($right > $total)
$right = $total;

Зачем делить на 2, если можно сделать просто без деления
    $left = $page - $height;

if ($left < 1)
$left = 1;

$right = $page + $height;

if ($right > $total)
$right = $total;

Спустя 5 минут, 5 секунд (20.11.2010 - 22:11) twin написал(а):
Можно. Просто хочется задать 10 и чтобы 10 ссылок и было. А не 20...
Мож я не прав, обоснуй.

Спустя 29 минут, 11 секунд (20.11.2010 - 22:41) xJlaIIax написал(а):
А зачем нужны лишние телодвижения? smile.gif
Ты не много не так понял скрипт, в height пишем сколько мы хотим выводить страниц, не считая начало <сюда текущей странице сюда> конец.
На пример, если делить на 2, то нам надо писать в height 8, если не делить на 2, то пишем 4.
Например, мы находимся на 2 страницы: начало...<сюда 1 2 3 4 5 сюда>...конец

Спустя 2 минуты, 43 секунды (20.11.2010 - 22:43) xJlaIIax написал(а):
Ну или если взять при делении height 10, то без деления надо писать 5
Получится:
начало...<сюда 1 2 3 4 5 6 сюда>...конец

Ну, как убираем деление?

Спустя 20 минут, 53 секунды (20.11.2010 - 23:04) xJlaIIax написал(а):
Ты попробуй, установи скрипт на тестовой сайт, как ты делал в конкурсах и сразу всё поймёшь.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.