|
|
|
| такая проблема.
форум... в темах некоторые посты видно тому или иному юзеру, а некоторые нет.
вот мне надо вывести последню страницу...
т.е. я не хочу 2 раза сканировать таблицу.
и хочу узнать сколько всего постов через SELECT FOUND_ROWS()
вот мне как то надо узнать start - внутри запроса...
что-то вроде
SELECT * FROM `tbl` WHERE ... LIMIT ceil(count(`ID`)/$list) * $list, $list
такое возможно? | |
|
|
|
|
|
|
|
для: а-я
(05.09.2008 в 03:32)
| | видать невозможно такое... =) | |
|
|
|
|
|
|
|
для: а-я
(05.09.2008 в 18:51)
| | >видать невозможно такое...
...понять. | |
|
|
|
|
|
|
|
для: Trianon
(05.09.2008 в 19:09)
| | Да, извините.
На данный момент скрипт работает примерно таким способом:
<?
$list = 10; // кол-во сообщений на 1 стр
$PAGE = empty($_REQUEST['page']) || !ctype_digit($_REQUEST['page']) ? 1 : intval($_REQUEST['page']);
$start = ($PAGE-1) * $list;
$sql = 'SELECT SQL_CALC_FOUND_ROWS * FROM `forum` ORDER BY `ID` DESC LIMIT '.$start.','.$list;
$_MS = mysql_query($sql);
$ALL = mysql_result(mysql_query('SELECT FOUND_ROWS()'),0); // всего сообщений
$PAGES = ceil($ALL/$list); //всего страниц
?>
|
Вот теперь мне нужно, чтоб была возможность, сразу перейти на последнюю страницу.
Т.е. количество сообщений получаем в конце…
и до основного запроса, я не могу узнать с какой позиции начинаются сообщения «последней страницы»… переменная $start
поэтому мне как-то надо узнать внутри основного запроса, с какой позиции надо сделать выборку…
что-то вроде:
SELECT SQL_CALC_FOUND_ROWS * FROM `forum` ORDER BY `ID` DESC LIMIT (ceil(count(`ID`)/$list) * $list), $list
|
| |
|
|
|
|
|
|
|
для: а-я
(05.09.2008 в 23:46)
| | Что-то я не понимаю...
А SELECT * FROM FORUM ORDER BY id ASC LIMIT 10 не позволяет совесть?
А просто SELECT COUNT(*) FORUM ? | |
|
|
|
|
|
|
|
для: Trianon
(05.09.2008 в 23:55)
| | Ну… так сказать на «последней странице» может быть и не 10 сообщений…
При навигации...
А если через SELECT COUNT(*) FORUM, то получается мы 2 раза полностью смотрим таблицу… не очень хочется таким образом… но видать по-другому никак… | |
|
|
|
|
|
|
|
для: а-я
(06.09.2008 в 00:00)
| | SELECT COUNT(*) смотрит таблицу?! | |
|
|
|
|
|
|
|
для: Trianon
(06.09.2008 в 00:10)
| | нет... но просто там много условий... очень большой запрос...
я же говорю, некоторые сообщения видно, некоторые нет.
а голый COUNT(*) -вернет сколько всего сообщений на весь форум
///////////////////////////////
Т.е. например, в этом форуме в разделе «Форум MySQL» 1312 тем
Навигация показывает:
[1-30] [31-60] [61-90] [91-120] [121-150] ... [1291-1312] [архив]
Если перейти на [1291-1312] то там не все 30 записей, как на предыдущих страницах, а только 22.
Вот мне эти 22 надо показать…
т.е. как бы
http://softtime.ru/forum/index.php?page=END&id_forum=3 | |
|
|
|
|
|
|
|
для: а-я
(06.09.2008 в 00:14)
| | SELECT SQL_CALC_FOUND_ROWS * FROM `forum` ORDER BY `ID` ASC LIMIT 10
SELECT FOUND_ROWS()
Вычисляете остаток последней страницы.
Выводите записи в порядке обратном сортируемому в количестве этого остатка.
Вуаля.
PS. потребуется mysql_data_seek() | |
|
|
|
|
|
|
|
для: Trianon
(06.09.2008 в 00:26)
| | О, Боже! =)
Как же Вы мне помогли, не смотря на мои неправильно сформулированные вопросы…
Огромное спасибо! =)
Это то, что мне нужно!
Все, побежал дальше чудить! =) | |
|
|
|