Добрый день! Хочу ограничить вывод текстовых блоков в новостной колонке, для этого решил использовать limit, т.е.: select .... from news order by ... desc limit 10 Так вот простой ламерский вопрос как получить следующую "порцию" 10 новостей?
Ты потерял 17 минут на проблему (разница между 1-м и 2-м сообщением), а между тем глянуть в мануал заняло бы максимум 2-3 минуты... В следующий раз подумай дважды, а у тебя настолько много свободного времени что можно его так просто выкидывать в никуда ?
Vladson Еще один ламерский вопрос, ответ на который думаю в мануале не найду, как мне перемещаться по "порциям" новостей используя гиперссылки? Использовать <form action> и таким образом передавать переменные для запроса? или есть альтернатива?
выводить по страницам я слава богу уже научился месяца 3 тому назад, когда впервые открыл книжку по php просто не хотел URL "засорять". Хотел передавать переменные POSTом. А как это с гиперссылкой связать не наю. Прийдется использовать GET
Блин! Что за народ пошел все вые... извратиться хочет. URL всю жизнь был предназначен для передачи параметров, и лишать его этого вообще нонсенс! Хорошо, вот захочу я дать ссылку на 3-ю страницу другу, как мне быть?
Горбунов Олег хорошо буду использовать GET. Просто опыта ещё маловато и подсказать особо некому. Мне почему-то казалось что много параметров в url это плохой тон. Теперь буду придерживаться другого мнения
Rus, сугубо имхо, плохой тон — это не то, на что стоит ориентироваться при разработке. Я руководствуюсь обычно здравым смыслом, и удобством пользователя. А если есть сомнения, просто сажусь и на бумажку выписываю плюсы и минусы каждого подхода. Вообще, стоит держать в уме одну простую вещь — различные стандарты разрабатывались людьми для легкого изучения, запоминания и использования другими людьми, поэтому интуитивное, логичное и самое простое решение — как правило еще и самое верное.
Вопрос следующий Код (Text): SELECT * FROM my_table WHERE id>10 LIMIT 5 Однако записей в таблице больше чем 5. А возможно ли получить их реальное колличество и использовать при этом LIMIT, но при этом не потерять данные при групперовке например Код (Text): (*неправельный) SELECT count(distinct(id)) c, * FROM my_table WHERE id>10 GROUP BY id LIMIT 5 Задача такая при поиске у меня формируется запрос, но выводится он постранично с использованием «LIMIT $from, $to». И для того чтобы узнать сколько реально записей найдено, мне приходится дублировать запрос чтобы выяснить колличество найденных записей. Хочу их узнать из одного запроса, может кто сталкивался.
Код (Text): EXPLAIN SELECT * FROM my_table WHERE id>10 LIMIT 5 в этом случае rows будет доступен, но он будет приблезительным.
draak можно использовать вложенный подзапрос: SELECT id, (SELECT COUNT(id) FROM your_table) from your_table where id > 10 group by id limit 5;
Думаю ты как раз все верно прочитал, обязательно попробую, вложенный подзопрос подойдет думаю. Только вот запрос станет в 2 раза больше так как WHERE придется дубилировать, надеюсь он это сделает только один раз... хм а может он будет делать этот запрос при каждом чтении, каждый записи из основоного запроса. Можно еще варианты.
УЖОС..... SQL_CALC_FOUND_ROWS ... Код (Text): $result = mysql_query('SELECT SQL_CALC_FOUND_ROWS id FROM table WHERE id > 10 GROUP BY id LIMIT 0, 5', $database); $total = mysql_result(mysql_query('SELECT FOUND_ROWS()', $database), 0, 0); В $result будут твои данные, а в $total - кол-во записей, удовлетворяющее твоему запросу, если бы в нём небыло LIMIT'a, иными словами записей воообще.
Код (Text): //700 rows with jcda total 2000 $command = "SELECT * FROM table where nick='jcda' LIMIT 5"; $q = mysql_query($command); $rows = mysql_num_rows($q); //$rows is 700 with jcda Вот мне что нужно, получить количество при таком же условие как если бы не было параметра LIMIT ----------------------------- ИЗВЕНЯЮСЬ, спасибо все работает....
FOUND_ROWS() Возвращает количество строк, которые возвратила бы последняя команда SELECT SQL_CALC_FOUND_ROWS ... при отсутствии ограничения оператором LIMIT. mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE id > 100 LIMIT 10; mysql> SELECT FOUND_ROWS(); Второй вызов команды SELECT возвратит количество строк, которые возвратила бы первая команда SELECT, если бы она была написана без выражения LIMIT. Отметим, что, хотя при использовании команды SELECT SQL_CALC_FOUND_ROWS ..., MySQL должен пересчитать все строки в наборе результатов, этот способ все равно быстрее, чем без LIMIT, так как не требуется посылать результат клиенту. Функция SQL_CALC_FOUND_ROWS появилась в MySQL 4.0.0.