Автор Тема: Использование "временной таблицы" MySQL  (Прочитано 9927 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Shamandeffer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 95
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.BraBruS.com
:cool:
Хочу реализовать постраничный вывод из базы данных.
Т.е. если SELECT нашёл 25 строки, а я вывожу по 10 строк.
Как лучше сделать - временая таблица в MySQL или...

Может где-нибудь есть похожая реализация для примера?
А то у меня что-то долго не получается...
:cool:

Оффлайн Xander

  • санитар леса
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1780
  • +0/-0
  • 2
    • Просмотр профиля
Использование "временной таблицы" MySQL
« Ответ #1 : 12 Июня 2003, 02:31:18 »
Shamandeffer
почитай статьи на самом сайте webscript.ru
и по форуму поищи, было.

но временные таблицы совсем не для этого. Это делается через LIMIT что ли...
•••Jah\'d never let us down!•••

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Использование "временной таблицы" MySQL
« Ответ #2 : 12 Июня 2003, 02:50:23 »
Цитировать
Xander:
Это делается через LIMIT что ли

Именно так
Цитировать
Shamandeffer:
временая таблица

Лисапед не изобретай
SELECT ... FROM ... LIMIT $startValue, $RecordsOnPage
AS IS...

Оффлайн nagash

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 341
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.nagash.org
Использование "временной таблицы" MySQL
« Ответ #3 : 12 Июня 2003, 04:28:00 »
а чтобы знать сколько у тебя всего записаей
SELECT COUNT(*)

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Использование "временной таблицы" MySQL
« Ответ #4 : 12 Июня 2003, 11:32:22 »
nagash
SELECT COUNT(1) работает быстрее
AS IS...

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Использование "временной таблицы" MySQL
« Ответ #5 : 12 Июня 2003, 11:55:30 »
ThE0ReTiC, неа ;)
Они работают оба одинаково, т.к. для таблиц MyISAM берут готовое значение, а не считают.
На Машине Тьюринга далеко не уедешь.

Оффлайн Shamandeffer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 95
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.BraBruS.com
Использование "временной таблицы" MySQL
« Ответ #6 : 12 Июня 2003, 14:09:50 »
а чтобы знать сколько у тебя всего записаей
SELECT COUNT(*)
А я узнаю количество записей с помощью mysql_num_rows - это не правильно?!

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Использование "временной таблицы" MySQL
« Ответ #7 : 12 Июня 2003, 14:18:25 »
SELECT * FROM tab LIMIT 0,20 - для него mysql_num_rows вернет 20 (или меньше, если записей меньше 20) потому как ты получишь первые 20 записей, а в таблице их может быть больше.
Чтобы узнать сколько всего записей в таблице
SELECT COUNT(*) FROM tab
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Shamandeffer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 95
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.BraBruS.com
Использование "временной таблицы" MySQL
« Ответ #8 : 12 Июня 2003, 14:43:38 »
Цитировать


Xander:
Это делается через LIMIT что ли
ThE0ReTiC
Именно так

 А где это в мануале (там должны быть примеры).

В статьях я не нашёл. (тяжело в учении - легко в бою).

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
На Машине Тьюринга далеко не уедешь.

Оффлайн Shamandeffer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 95
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.BraBruS.com
Использование "временной таблицы" MySQL
« Ответ #10 : 12 Июня 2003, 16:42:31 »
Я сделал вот, что (и вроде работает):

SELECT ... FROM ... ORDER BY ... LIMIT $Mes_count, $Mes_limit,
где $Mes_count - начальная старока (изменяется простым умножением на переменную $page(по-умолчанию равной 0, и изменяющейся на 1);
      $Mes_limit - cоответственно количество выводимых строк.
Это информация для тех кто интересуется или ищет (будет искать) ответ на такой же вопрос.

Но хотел бы уточнить - Где надо использовать СOUNT(*)?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Использование "временной таблицы" MySQL
« Ответ #11 : 12 Июня 2003, 16:55:33 »
Цитировать
fidget:
Они работают оба одинаково, т.к. для таблиц MyISAM берут готовое значение, а не считают.

постраничный вывод редко обходится без where
а в этом случае готове значение взять неоткуда.

Shamandeffer
количество всех записей тебе понадобится в том случае, если ты хочешь вывести ссылки на все страницы.

еще тебе понадобится команда PHP ceil, которая округляет в большую сторону

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Использование "временной таблицы" MySQL
« Ответ #12 : 12 Июня 2003, 16:56:32 »
Цитировать
Shamandeffer:
Где надо использовать СOUNT(*)?


ну если тебе надо узнать общее кол-во строк в таблице :)

SELECT COUNT(*) FROM table
На Машине Тьюринга далеко не уедешь.

Оффлайн Shamandeffer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 95
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.BraBruS.com
Использование "временной таблицы" MySQL
« Ответ #13 : 14 Июня 2003, 02:32:33 »
Ещё несколько слов о SELECT CUONT(*) From table....
Я пишу:
$All_Mes=mysql_query(" SELECTCOUNT(*) FROM $Table WHERE... ");
но
echo $All_Mes; выдаёт мне Resource id #17
Не могу понять как получить число?

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Использование "временной таблицы" MySQL
« Ответ #14 : 14 Июня 2003, 10:50:45 »

$All_Mes
=mysql_query(" SELECT COUNT(*) FROM $Table WHERE... ");
$row mysql_fetch_row($All_Mes);
echo 
$row[0];
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28