Вот я начал писать:
$in_page = $news_stat_page; // Количество новостей на одной странице
print ("<div align='center'>".draw_bar($page, $amount, $in_page,"news.php?page=")."</div>\n<table>");
Правильно ли я иду? :)
Спустя 11 минут, 29 секунд (24.10.2011 - 14:15) Core_2_Duo написал(а):
Когда-то сам задавался таким вопросом, в итоге написал такое:
$link=mysql_connect($mysql_host,$mysql_user,$mysql_pass); //Подключение к бд с новостями
mysql_select_db($mysql_db); //Подключение к бд с новостями
$query='SELECT * FROM `news`'; //Выбираем из таблицы все
$res=mysql_query($query);
$pages=ceil(mysql_num_rows($res)/$count); //делим нацело с округлением в большую сторону общее количество новостей на количество на одной странице
if ($GET['rem']<=$pages) { //если запрошеная пользователем страница существует
$toplimit=($GET['rem']-1)*$count; //вычисляем "верхний" лимит новости, допустим пользователь ищет 2 страницу, тогда $toplimit=(2-1)*10=10, начинаем 2ую страницу с 10ой новости (почему не с 11? потому что отсчет идет с 0)
$query='SELECT * FROM `news` ORDER BY `id` DESC LIMIT '.$toplimit.' , '.$count; //выдаем 10 новостей начиная с 10.
$res=mysql_query($query);
$content.='<div id="info">';
while ($row=mysql_fetch_array($res)) {
$content.='<h3>'.sk($row['title']).'</h3><p>'.sk($row ['contall']).'</p>';
}
$content.='</div> //в принципе, этот вывод уже зависит от вас)
mysql_close($link);
Спустя 1 минута, 7 секунд (24.10.2011 - 14:16) Ramzil_Nixon написал(а):
Core_2_Duo
спасибо, щас попробую написать, похожее
спасибо, щас попробую написать, похожее
Спустя 1 минута, 39 секунд (24.10.2011 - 14:18) Core_2_Duo написал(а):
Если понадобится переход между страницами (а он понадобится) пишите, скину функцию, которую сам писал
Спустя 15 минут, 41 секунда (24.10.2011 - 14:33) m4a1fox написал(а):
Core_2_Duo
Проверка на число - отсутствует!
Зачем так
Проверка на число - отсутствует!
Зачем так
Цитата |
$row=mysql_fetch_array($res) |
А не так
Цитата |
$row=mysql_fetch_assoc($res) |
Спустя 1 минута, 12 секунд (24.10.2011 - 14:35) Winston написал(а):
Цитата (Ramzil_Nixon @ 24.10.2011 - 14:04) |
$in_page = $news_stat_page; // Количество новостей на одной странице print ("<div align='center'>".draw_bar($page, $amount, $in_page,"news.php?page=")."</div>\n<table>"); |
Пагинатор из 2 строк? Ну ты монстр !
Спустя 30 секунд (24.10.2011 - 14:35) Ramzil_Nixon написал(а):
а что это?
откуда оно береться
$GET['rem']
откуда оно береться
Спустя 43 секунды (24.10.2011 - 14:36) Ramzil_Nixon написал(а):
Winston
Цитата |
Пагинатор из 2 строк? Ну ты монстр ! |
Это начало скрипта
Спустя 42 секунды (24.10.2011 - 14:37) m4a1fox написал(а):
Ramzil_Nixon
Оооооо! Это древняя легенда...... у автора "пагинатора" спроси!
Оооооо! Это древняя легенда...... у автора "пагинатора" спроси!
Спустя (24.10.2011 - 14:37) Ramzil_Nixon написал(а):
m4a1fox
Цитата |
$row=mysql_fetch_array($res) |
у меня так читает количество строк из таблицы. Нормально работает
Спустя 1 минута, 39 секунд (24.10.2011 - 14:38) Core_2_Duo написал(а):
Я скопировал кусок своего кода с сайта. У меня выведет 404 ошибку сайт, если ввести не число.
Касательно второго замечания - Функция mysql_fetch_assoc() аналогична вызову функции mysql_fetch_array() со вторым необязательным параметром, равным MYSQL_ASSOC. Функция возвращает только ассоциативный массив.
$GET['rem']=Номер страницы с новостями, типа- http://test.com/news/2
$GET['rem'] будет равнятся 2 в этом случае
Касательно второго замечания - Функция mysql_fetch_assoc() аналогична вызову функции mysql_fetch_array() со вторым необязательным параметром, равным MYSQL_ASSOC. Функция возвращает только ассоциативный массив.
$GET['rem']=Номер страницы с новостями, типа- http://test.com/news/2
$GET['rem'] будет равнятся 2 в этом случае
Спустя 1 минута, 15 секунд (24.10.2011 - 14:39) m4a1fox написал(а):
А я и не говорил что она будет плохо работать! Поясню тебе как однажды где не помню, но написал twin. Зачем тебе в правой руке вилка а в левой ложка если ты суп собрался есть? Аналогия ясна?
Спустя 1 минута, 15 секунд (24.10.2011 - 14:41) Ramzil_Nixon написал(а):
Цитата |
$GET['rem']=Номер страницы с новостями, типа- http://test.com/news/2 $GET['rem'] будет равнятся 2 в этом случае |
а понял
m4a1fox
Нет ничего не понял
Спустя 39 секунд (24.10.2011 - 14:41) m4a1fox написал(а):
Core_2_Duo
Цитата |
$GET['rem']=Номер страницы с новостями, типа- http://test.com/news/2 $GET['rem'] будет равнятся 2 в этом случае |
Мдя..... вот как вы считаете, ТС знает откуда это
$GET[]
?
Как так можно вырвали кусок из кода, давайте уже и функцию сюда, кот. преобразует все что приходит в $_GET в $GET. Я то например знаю откуда она, а вот ТС навряд!
Спустя 15 секунд (24.10.2011 - 14:42) Winston написал(а):
Цитата (Ramzil_Nixon @ 24.10.2011 - 14:36) |
Это начало скрипта |
Вообще-то код выкладывается после того как уже написан, а не наоборот, еще и просишь совета в правильном направлении
Спустя 57 секунд (24.10.2011 - 14:43) m4a1fox написал(а):
Ramzil_Nixon
Цитата |
Нет ничего не понял |
Почитай про разницу assoc от array.... может так яснее станет!
Спустя 1 минута, 29 секунд (24.10.2011 - 14:44) Winston написал(а):
А лучше напиши и посмотри
echo '<pre>' . print_r(mysql_fetch_array($result, 1)) . '</pre>';
echo '<pre>' . print_r(mysql_fetch_assoc($result, 1)) . '</pre>';
Спустя 12 секунд (24.10.2011 - 14:44) Core_2_Duo написал(а):
Свернутый текст
$GET = array(
'page' => 'main',
'rem' => '1',
'id' => 0,
'num' => 0,
);
if(c2d_rewrite == 'on' && !empty($_GET['route']))
{
$param = explode('/', trim($_GET['route'], '/'));
$i = 0;
foreach($GET as $var => $val)
{
if(!empty($param[$i]))
$GET[$var] = $param[$i];
++$i;
}
}
elseif(count($_GET))
{
foreach($GET as $var => $val)
if(!empty($_GET[$var]))
$GET[$var] = $_GET[$var];
}
! |
Winston |
Спустя 59 секунд (24.10.2011 - 14:45) m4a1fox написал(а):
Свернутый текст
$GET = array(
'page' => 'main',
'rem' => '1',
'id' => 0,
'num' => 0,
);
if(c2d_rewrite == 'on' && !empty($_GET['route']))
{
$param = explode('/', trim($_GET['route'], '/'));
$i = 0;
foreach($GET as $var => $val)
{
if(!empty($param[$i]))
$GET[$var] = $param[$i];
++$i;
}
}
elseif(count($_GET))
{
foreach($GET as $var => $val)
if(!empty($_GET[$var]))
$GET[$var] = $_GET[$var];
}
Пойду что ль модером на треть ставки! :)
Спустя 32 секунды m4a1fox написал(а):
Winston
Красавчик!
А вот и функция подвалила! Я думаю, у ТС теперь больше вопросов чем ответов!
Core_2_Duo
А про внешний вид ссылок забыли? Это тоже не мало важно! И еще пояснить, что сие функция таки делает?
Свернутый текст
Ага! Пасиб!
Спустя 5 минут, 34 секунды (24.10.2011 - 14:51) Core_2_Duo написал(а):
Мой вид ссылок на сайте будет такой же, как я привел в примере:
http://test.ru/news/2
По поводу функции, тут мало объяснить че она делает, тут еще нужны правила реврайта из htaccess'a. К топику это имеет крайне маленькое отношение
http://test.ru/news/2
По поводу функции, тут мало объяснить че она делает, тут еще нужны правила реврайта из htaccess'a. К топику это имеет крайне маленькое отношение
Спустя 1 минута, 46 секунд (24.10.2011 - 14:53) Winston написал(а):
В htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]
Спустя 1 минута, 33 секунды (24.10.2011 - 14:54) Core_2_Duo написал(а):
Цитата (Winston @ 24.10.2011 - 11:53) |
В htaccessRewriteEngine On |
Именно
Спустя 8 секунд (24.10.2011 - 14:54) m4a1fox написал(а):
Core_2_Duo
Цитата |
По поводу функции, тут мало объяснить че она делает, тут еще нужны правила реврайта из htaccess'a. К топику это имеет крайне маленькое отношение |
Собственно к чему я и подводил 2 страницы! К тому, что надо писать по таким примерам, где уже все сделано - а не отрывками. Это как книгу читать, первые 2 страницы, в центре страницы 4 и в конце 1 - вы поймете про что книга?
Спустя 2 минуты, 12 секунд (24.10.2011 - 14:56) Core_2_Duo написал(а):
Я объяснил, что хранится в переменной $GET['rem'] и ТС отлично это понял. Не понимаю претензий.
Спустя 1 минута, 42 секунды (24.10.2011 - 14:58) m4a1fox написал(а):
ТС, теперь понятнее стало? :) Ну что за люди, я ж говорю, объясните человеку правильно - а не бросайтесь кодами....
RewriteEngine On - что это значит [b]RewriteEngine[/b]
RewriteCond %{REQUEST_FILENAME} !-f - что это значит [b]RewriteCond[/b], что такое [b]%[/b] R_F - это понятно более и менее, что такое [b]!-f[/b]
RewriteCond %{REQUEST_FILENAME} !-d что такое [b]!-d[/b]
RewriteRule ^(.*)$ index.php?route= [L,QSA] !-d что такое [b][L,QSA][/b], и почему запятая после [b]L[/b]
Спустя 54 секунды (24.10.2011 - 14:59) m4a1fox написал(а):
Core_2_Duo
Цитата |
Не понимаю претензий. |
Да не. Претензий нет совершенно! Если ТС понял, то безмерно рад за него! Честно...
Спустя 6 минут, 5 секунд (24.10.2011 - 15:05) Winston написал(а):
Цитата (m4a1fox @ 24.10.2011 - 14:58) |
Ну что за люди, я ж говорю, объясните человеку правильно - а не бросайтесь кодами.. |
Та, блин, уже все давно написано/описано, только гугл открыть и вбить нужную строчку, и просто почитать, что написано про ее
Спустя 24 секунды (24.10.2011 - 15:06) Core_2_Duo написал(а):
Флаги [L,QSA]
'last|L' (последнее правило)
Остановить процесс преобразования на этом месте и не применять больше никаких правил преобразований. Это соответствует оператору last в Perl или оператору break в языке C. Используйте этот флаг для того, чтобы не преобразовывать текущий URL другими, следующими за этим, правилами преобразований.
'qsappend|QSA' (query string append - добавлять строку запроса)
Приплюсовать то, что идет после знака вопроса. Например, если урла была такая, http://mysite.com/node/1?size=_original, то в броузере останется такой-же, но скрипту пойдет в таком виде: http://mysite.com/index.php?q=/node/1?size=_original
А вообще, гугл в руки, если вопросы были именно с целью узнать.
'last|L' (последнее правило)
Остановить процесс преобразования на этом месте и не применять больше никаких правил преобразований. Это соответствует оператору last в Perl или оператору break в языке C. Используйте этот флаг для того, чтобы не преобразовывать текущий URL другими, следующими за этим, правилами преобразований.
'qsappend|QSA' (query string append - добавлять строку запроса)
Приплюсовать то, что идет после знака вопроса. Например, если урла была такая, http://mysite.com/node/1?size=_original, то в броузере останется такой-же, но скрипту пойдет в таком виде: http://mysite.com/index.php?q=/node/1?size=_original
А вообще, гугл в руки, если вопросы были именно с целью узнать.
Спустя 36 секунд (24.10.2011 - 15:06) Ramzil_Nixon написал(а):
SELECT * FROM table LIMIT $number_page
Могу ли я так записать если $number_page является количеством записей выводимых на одной странице?
Спустя 6 секунд (24.10.2011 - 15:06) Winston написал(а):
Core_2_Duo
Ага, ТС тебя понял
Ага, ТС тебя понял
Спустя 2 минуты, 3 секунды (24.10.2011 - 15:08) m4a1fox написал(а):
Winston
Цитата |
Та, блин, уже все давно написано/описано, только гугл открыть и вбить нужную строчку, и просто почитать, что написано про ее |
А претензии, дорогие знатоки и не к вам, а, уж прости меня, к ТС!
Спустя 4 минуты, 44 секунды (24.10.2011 - 15:13) Core_2_Duo написал(а):
Цитата (Ramzil_Nixon @ 24.10.2011 - 12:06) |
SELECT * FROM table LIMIT $number_page Могу ли я так записать если $number_page является количеством записей выводимых на одной странице? |
Ну смотрите же, что вы делаете сами:
SELECT * FROM table LIMIT $number_page
Данный запрос выберет из таблицы первые 20 (в вашем случае) рядов. Если вы собираетесь все время показывать первые 20 новостей, то да, можете.
Спустя 1 минута, 47 секунд (24.10.2011 - 15:15) m4a1fox написал(а):
ТС - лови
Спустя 1 минута, 34 секунды (24.10.2011 - 15:16) Ramzil_Nixon написал(а):
Core_2_Duo
Не мне надо по 20 на каждой странице.
Не мне надо по 20 на каждой странице.
Спустя 4 минуты, 28 секунд (24.10.2011 - 15:21) Core_2_Duo написал(а):
Цитата (m4a1fox @ 24.10.2011 - 12:15) |
ТС - лови |
Да, много я часов на ирбисе в свое время провел.. Но пагинатор решил свой написать сам)
Спустя 2 минуты, 30 секунд (24.10.2011 - 15:23) m4a1fox написал(а):
Core_2_Duo
ага.... я вижу!
ага.... я вижу!
Спустя 7 минут, 9 секунд (24.10.2011 - 15:30) Core_2_Duo написал(а):
Давайте я еще раз подробно объясню:
Осталось только вывести, например:
$link=mysql_connect($mysql_host,$mysql_user,$mysql_pass);
mysql_select_db($mysql_db);
$query='SELECT * FROM `news`'; //Выбираем из таблицы все что там есть, все ряды
$res=mysql_query($query);
$pages=ceil(mysql_num_rows($res)/$count); //делим нацело с округлением в большую сторону, mysql_num_rows($res) - общее количество новостей, $сount - новости на одну страницу, получаем количество страниц.
if ($GET['rem']<=$pages) { //как я объяснял уже $GET['rem'] номер страницы, которую пользователь хочет прочитать. Если она меньше или равна количеству страниц, то значит она существует и надо выдать новости этой страницы.
$toplimit=($GET['rem']-1)*$count; //вычисляем "верхний" лимит новости, допустим пользователь ищет 2 страницу, тогда $toplimit=(2-1)*10=10, начинаем 2ую страницу с 10ой новости (почему не с 11? потому что отсчет идет с 0)
$query='SELECT * FROM `news` ORDER BY `id` DESC LIMIT '.$toplimit.' , '.$count; //выдаем 10 новостей начиная с 10. Причем выдаем в обратном порядке (DESC).
$res=mysql_query($query);
Осталось только вывести, например:
$content='';
while ($row=mysql_fetch_array($res))
$content.='<h3>'.$row['title'].'</h3><p>'.$row['body'].'</p>'; //где $row['title'] и $row['body'] - заголовок и тело новости соответственно
echo $content;
mysql_close($link);
Спустя 1 минута, 28 секунд (24.10.2011 - 15:32) Core_2_Duo написал(а):
Цитата (m4a1fox @ 24.10.2011 - 12:23) |
Core_2_Duo ага.... я вижу! |
Ну мой пагинатор получился проще (для меня офк) и быстрее, а в их коде я бы ковырялся долго) Потому что не люблю просто копировать, люблю понимать че происходит в коде
Спустя 10 минут, 2 секунды (24.10.2011 - 15:42) Ramzil_Nixon написал(а):
Core_2_Duo
Спасибо за помощь конечно, но я ничего в этом коде не понял.
Как нибудь сам по тихоньку напишу
Спасибо за помощь конечно, но я ничего в этом коде не понял.
Как нибудь сам по тихоньку напишу
Спустя 6 минут, 12 секунд (24.10.2011 - 15:48) m4a1fox написал(а):
Core_2_Duo
Цитата |
Спасибо за помощь конечно, но я ничего в этом коде не понял. |
Так что утверждение
Цитата |
Я объяснил, что хранится в переменной $GET['rem'] и ТС отлично это понял. Не понимаю претензий. |
fasle!
Спустя 3 минуты, 36 секунд (24.10.2011 - 15:52) Core_2_Duo написал(а):
sad, but true ©
Спустя 2 минуты, 53 секунды (24.10.2011 - 15:55) m4a1fox написал(а):
No doubt
_____________
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...