Проблема. Запрос с лимитированием

JonnyTK

Новичок
Проблема. Запрос с лимитированием

Прошу помочь с решением проблемы.

Есть запрос содержащий выборку из нескольких таблиц + проверка по условию (проверка - равна ли ячейка переменной) + сортировка + лимит(LIMIT a,b).

При первом переходе на эту страницу с выводом результатов все работает.

При переходе на следующую страницу результатов запроса (через PHP_SELF a=a+25)

выдает ошибку:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND raion*=* AND type_series*=* AND san_uzel*=* AND phone*=* AND apartments.ph' at line 6

т.е. при повторном запросе не воспринимает WHERE "что-либо с переменными".

Если все эти условия убрать - все работает, но тогда выводится не выборка, а вся таблица.

То ли все переменные теряются, то ли при повторном запросе эти условия не воспринимаются. Не понимаю.

Как решить проблему? Заранее спасибо.
 

440hz

php.ru
JonnyTK

>Как решить проблему? Заранее спасибо

1. привести тут исходные коды SQL 1 и 2 запросов.
2. НЕ php кода, а именно SQL, который идет в базу.

т.е. выдать print($SQL) перед mysql_query($SQL) и результаты сюда один в один.
 

JonnyTK

Новичок
PHP:
SELECT apartments.Id, id_raion_liv.object_t AS 'Район', adres AS 'адрес', rooms AS 'ком.', floor AS 'эт.', photo_plan_id.photo_plan_img AS 'план фото', price AS 'цена тыс.$', s_all AS 'S общ', s_r AS 'S жилая', s_kitchen AS 'S кух', san_uzel_id.variants AS 'с/у', phone_id.phoneID AS 'тел', id_ts_liv.object_t AS 'тип дома', series AS 'серия дома', metro AS 'ближайшее метро', description AS 'описание', seller AS 'к. лицо', contact_phone AS 'контактный телефон' FROM apartments, id_raion_liv, phone_id, san_uzel_id, photo_plan_id, id_ts_liv WHERE apartments.phone = phone_id.id AND apartments.raion=id_raion_liv.id_ob AND apartments.san_uzel = san_uzel_id.id AND apartments.photo_plan = photo_plan_id.Id AND operation=2 AND raion*0=-1*0 AND type_series*0=-1*0 AND san_uzel*0=-1*0 AND phone*0=-1*0 AND apartments.photo_plan*0 = 0*0 AND rooms >= 0 AND rooms <= 1000 AND s_all >= 0 AND s_all <= 10000 AND s_kitchen >= 0 AND s_kitchen <= 1000 AND price >= 0 AND price <= 10000 AND type = 1 AND object = 1 AND apartments.type_series = id_ts_liv.id_ob ORDER BY photo_plan_id.photo_plan_img DESC, price DESC LIMIT 0, 25
-~{}~ 22.03.06 14:07:

А это после попытки перейти на след.страницу.

PHP:
SELECT apartments.Id, id_raion_liv.object_t AS 'Район', adres AS 'адрес', rooms AS 'ком.', floor AS 'эт.', photo_plan_id.photo_plan_img AS 'план фото', price AS 'цена тыс.$', s_all AS 'S общ', s_r AS 'S жилая', s_kitchen AS 'S кух', san_uzel_id.variants AS 'с/у', phone_id.phoneID AS 'тел', id_ts_liv.object_t AS 'тип дома', series AS 'серия дома', metro AS 'ближайшее метро', description AS 'описание', seller AS 'к. лицо', contact_phone AS 'контактный телефон' FROM apartments, id_raion_liv, phone_id, san_uzel_id, photo_plan_id, id_ts_liv WHERE apartments.phone = phone_id.id AND apartments.raion=id_raion_liv.id_ob AND apartments.san_uzel = san_uzel_id.id AND apartments.photo_plan = photo_plan_id.Id AND operation= AND raion*=* AND type_series*=* AND san_uzel*=* AND phone*=* AND apartments.photo_plan*0 = *0 AND rooms >= AND rooms <= AND s_all >= AND s_all <= AND s_kitchen >= AND s_kitchen <= AND price >= 0 AND price <= 10000 AND type = AND object = AND apartments.type_series = id_ts_liv.id_ob ORDER BY photo_plan_id.photo_plan_img DESC, DESC LIMIT 25, 50
-~{}~ 22.03.06 14:09:

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

В начале скрипта стоят
PHP:
$p_t=$_REQUEST['p_t'];	
$san_uzel=$_REQUEST['san_uzel'];
$phone=$_REQUEST['phone'];
...
которые успешно работают при получении переменных из форма запроса.

Но, видимо, тут другая опера?
 

Фанат

oncle terrible
Команда форума
совсем другая.
где у тебя во втором скрипте $_REQUEST?
 

JonnyTK

Новичок
Подскажите, где почитать топик .....мммм....
на тему, похожую на "объявление глобальных переменных"....

я правильно понял ошибку?
 

Фанат

oncle terrible
Команда форума
читать ничего не надо.
нету в пхп никаких "глобальных" переменных в том смысле, в котором ты это написал
надо писать. всю строку запроса в ссылку с лимитом.

а статью могу дать, просто для лучшего понимания:
PHP FAQ: Самые основы. Как работает PHP.
 

JonnyTK

Новичок
это тот же скрипт.... ссылка идет на эту же страницу...
PHP:
print '<a href="'.$_SERVER['PHP_SELF'].'?lim_a='.$lim_t2.'">'.вперед."</a>\n";
-~{}~ 22.03.06 14:17:

всю строку запроса в ссылку с лимитом
т.е.?
 

JonnyTK

Новичок
Спасибо за ссылку....

Если я все правильно понял:
а. скрипт все таки знает куда его послали, но о том что это тот же скрипт - нет

значит надо передать переменные. У меня возникает следующий вопрос.
Передать нужно ок. 25 переменных.... хотелось бы сделать скопом.
В статье есть упоминание про GET... не это ли решение проблемы?

PS Фанат, спасибо за помощь....

-~{}~ 22.03.06 14:28:

Или руками.... каждую?.....((((
 

Фанат

oncle terrible
Команда форума
решение лежит в вызове функции phpinfo(32) когда у тебя есть реквест
 

Фанат

oncle terrible
Команда форума
ну ты вызови =)
просто напиши её в скрипте.
и сразу поймёшь =)
 

JonnyTK

Новичок
ДА, ДА!!! Я ВСЕ ПОНЯЛ!!!

Фанат, сорри, но не получилось...)))
Я с этой "маленькой" таблицей не дружу...

Единственное, что я увидел, это наличие кучи реквестов и постов при первом открытии страницы и их отсутствие при переходе на следующую....

Значит надо их как то оставить...

Но как?

-~{}~ 22.03.06 14:56:

Млин.... но это же один и тот же скрипт....
в одних <? ?> лежит.....
 

Фанат

oncle terrible
Команда форума
JonnyTK
Млин.... но это же один и тот же скрипт....
ты прочитал ссылку, которую я дал?
Значит надо их как то оставить...
перебрать в цикле массив $_GET и и составить из него строку.
дел - на одну строчку кода.
 

Jonny_TK

Новичок
Фанат, да прочитал, и все понял.... Это так - в голове не укладывается. Как сделать массив, в даном случае, я не знаю...

Думаю, что мне под силу только:

PHP:
print '<a href="http://www.*.php?lim_a=$lim_t1&amp;operation=$operation&amp;***">'назад'</a>\n';
print '<a href="http://www.*.php?lim_a=$lim_t2&amp;operation=$operation&amp;***">'вперед'</a>\n';
да и то, прошу подсказать синтаксис, потому что ТАК скрипт не работает.

Parse error: parse error, unexpected T_VARIABLE in *** on line ***
 

Фанат

oncle terrible
Команда форума
массив у тебя уже есть.
тебе из него надо сделать строку. в цикле.
у тебя с программированием как? Судя по всему - какой-то опыт есть. Почему тебя это так затрудняет?
 

Jonny_TK

Новичок
Фанат, ты бы знал, как приятно это слышать, но...

На самом деле опыта нет.... - 2 книги, этот форум + статьи в инете. Я начинающий, хотя и работаю в PHP, MySQL уже пару месяцев...

К сожалению, не знаю, что дальше.... по этому, в принципе, и прошу помощи...
 

Фанат

oncle terrible
Команда форума
просто ты как был уверен в том, что переменне должны сохраняться, что я решил, будто у тебя есть опыт оффлайн программирования.
Ну, окей.

тебе знакомо понятие цикла? Оператор foreach?
 
Сверху