Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как узнать сколько строк в наборе данных?
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Как узнать сколько строк в наборе данных?

Страниц (1): [1]
 

1. as_pushkin - 19 Мая, 2010 - 16:54:29 - перейти к сообщению
Помогите новичку, пожалуйста.
Для выбора данных из таблицы использую запрос:
PHP:
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query("SELECT * FROM ".$table_name."  LIMIT 0, 30", $link);
  3.  

понятно, что он содержит только первые 30 записей. Вопрос, как узнать сколько записей в БД удовлетворяют условию этого запроса, чтоб потом вывести с 31 по 60, с 61 по 90 и.т.д.
2. ZeiZ - 19 Мая, 2010 - 17:22:18 - перейти к сообщению
пагинация?

PHP:
скопировать код в буфер обмена
  1.  
  2. $a = 0; // стартовая позиция
  3. $b = 30; // сколько выводить
  4.  
  5. if (isset($_GET['page']) $a = $b*($_GET['page']-1);
  6.  
  7.  $sql = "SELECT * FROM ... LIMIT $a, $b; ";
  8.  


!!! переменную $_GET['page'] надо защитить !!!

это первое что пришло в голову, усложнить можно всегда.
не претендую на лучшее решение Закатив глазки
3. valenok - 19 Мая, 2010 - 17:55:04 - перейти к сообщению
Придется делать две выборки.
Одну из них можно сделать один раз и результат куда нибудь записать.
Можно выбирать 31 запись. Если их 31, значит есть следующая страница.
4. as_pushkin - 19 Мая, 2010 - 22:33:02 - перейти к сообщению
valenok пишет:
ПЕсли их 31, значит есть следующая страница.

умнО, нечего сказать. А если их 1000031?
5. AdMeen - 20 Мая, 2010 - 07:39:15 - перейти к сообщению
я мб чего не понял, но что мешает сделать выборку количества записей в таблице, потом просто смотреть, большее ли чем всего есть мы хотим выбрать. И если это не так, значит страница есть
6. Djin_dj - 20 Мая, 2010 - 08:15:33 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SET @a=(SELECT count(0) AS TotalRows FROM `Event`);
  2. SELECT *,@a FROM `Event`
  3. LIMIT 0,30

 

Powered by ExBB FM 1.0 RC1