Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вопрос по LIMIT
 
 автор: kapitalist   (15.09.2015 в 18:52)   письмо автору
 
 

Всем доброго времени суток. Возник вопрос, связанный с limit
Есть запрос к БД

$sql = "SELECT order.id, order.user_num, order.date, order.status, order.id_company, order.client, clients.name,
order.parent, order.what, company.form, company.name FROM `order`, `clients`, `company` WHERE order.id_company IN
($company) and clients.id=order.client and order.parent='$ParentID' and company.id=order.id_company $where ORDER BY
id DESC LIMIT $start, $num";

Этот запрос выводит древовидный список.
Все отлично работает, когда
$start = 0;
Но когда, значение 20, 40 и т.д. древовидность пропадает.
Собственно 2 вопроса, почему так происходит и как это исправить?

  Ответить  
 
 автор: KPETuH   (16.09.2015 в 10:18)   письмо автору
 
   для: kapitalist   (15.09.2015 в 18:52)
 

Вы уверены что у вас правильные значения подставляются в
 $start
и
$num

  Ответить  
 
 автор: kapitalist   (16.09.2015 в 10:24)   письмо автору
 
   для: KPETuH   (16.09.2015 в 10:18)
 

Да, на 100%. Проверил через echo. Я бы скинул дамп, чтобы проверить, но в базе конфиденциальная информация, поэтому не могу показать ее...

  Ответить  
 
 автор: kapitalist   (16.09.2015 в 10:28)   письмо автору
 
   для: KPETuH   (16.09.2015 в 10:18)
 

Например:

SELECT order.id, order.user_num, order.date, order.status, order.id_company, order.client, clients.name, order.parent,
order.what, company.form, company.name FROM `order`, `clients`, `company` WHERE order.id_company IN (7,9,22,17) and
clients.id=order.client and order.parent='4227' and company.id=order.id_company ORDER BY id DESC LIMIT 0, 20

Отлично работает. Дерево отображается.

SELECT order.id, order.user_num, order.date, order.status, order.id_company, order.client, clients.name, order.parent,
order.what, company.form, company.name FROM `order`, `clients`, `company` WHERE order.id_company IN (7,9,22,17) and
clients.id=order.client and order.parent='4111' and company.id=order.id_company ORDER BY id DESC LIMIT 20, 20

Не отображает дерево (((

  Ответить  
 
 автор: Igorek   (16.09.2015 в 12:42)   письмо автору
 
   для: kapitalist   (16.09.2015 в 10:28)
 

Селект и не должен ничего отображать. Его задача вернуть данные.
Если второй запрос возвращает то, что должен - значит проблема не в запросе.
Если нет, то возможно вы не до конца понимаете, что от него требуете, либо просто данных таковых в базе нет.

Кстати, для второго запроса другой парент используется - 4111 вместо 4227

  Ответить  
 
 автор: kapitalist   (16.09.2015 в 18:19)   письмо автору
 
   для: Igorek   (16.09.2015 в 12:42)
 

Я понимаю, что отбражение идет через Php код.
Данные точно в бд есть...
Понятное дело для второго запроса используется другое значение ))) Я же прямо с живой базы запрос написал.

  Ответить  
 
 автор: KPETuH   (17.09.2015 в 11:22)   письмо автору
 
   для: kapitalist   (16.09.2015 в 18:19)
 

Этот запрос например phpmyadmin вам данные отдает нужные или нет?

  Ответить  
 
 автор: kapitalist   (19.09.2015 в 17:10)   письмо автору
 
   для: KPETuH   (17.09.2015 в 11:22)
 

Да в том и прикол, что не отдает. Если бы отдавал было бы ясно, что косяк в php скрипте.

  Ответить  
 
 автор: kapitalist   (21.09.2015 в 09:15)   письмо автору
 
   для: KPETuH   (17.09.2015 в 11:22)
 

Создал тестовую базу, решил поиграть с ней. И все равно не могу понять, как написать нужный запрос. Т.к. если в запросе использовать Limit даже в phpmyadmin отдает не то что нужно.
CREATE TABLE IF NOT EXISTS `tree` (
  `id` int(11) NOT NULL,
  `title` varchar(100) NOT NULL,
  `parent_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `tree`
--

INSERT INTO `tree` (`id`, `title`, `parent_id`) VALUES
(1, 'первый', 0),
(2, 'второй', 0),
(3, 'третий', 0),
(4, 'во втором', 2),
(5, 'во втором1', 2),
(6, 'во втором2', 2),
(7, 'во втором3', 2),
(8, 'подпункт', 3),
(9, 'подпункт2', 6),
(10, 'подпункт3', 6);

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования