Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MySQL запросы, выборка в пределах от ... до 
:(
    Опции темы
BlackHawk
  Дата 20.8.2003, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 15.8.2003

Репутация: нет
Всего: нет



Может у меня просто Apache и MySQL как-то криво сконфигурированы, потому, что я не первый раз сталкиваюсь с подобными проблемами, когда казалось бы все должно безупречно работать, приходится искать какие-то хитрые уловки.

Всю платформу для разработки я взял из комплексного пакета Denver2, по-моему с сайта www.dklab.ru, если не ошибаюсь.

Может все-таки стоит еще раз обратить внимание на синтаксис запроса. Я полагаю, что в этой части запроса ...and (age BETWEEN '$age1' AND '$age2') ORDER BY ..., не совсем корректно расставлены кавычки. Что скажешь?

PM MAIL ICQ   Вверх
MuToGeN
Дата 20.8.2003, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Попробуй сделать просто выборку типа
Код
SELECT * FROM table WHERE age BETWEEN 20 AND 30;
Кстати, конфиг апача тут точно не причем. Он только "передает управление" PHP парсеру, и с MySQL работает уже PHP.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
BlackHawk
Дата 20.8.2003, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 15.8.2003

Репутация: нет
Всего: нет



Ты прав, MuToGeN, твой простой пример сработал, т.е. явно указанный константами интервал - действует.
Причина в передаче переменных $age1 и $age2.
Нужно работать над синтаксисом, видимо здесь собака зарыта!

Синтаксис типа
...and (age BETWEEN '$age1' AND '$age2') ORDER BY ... здесь точно не работает
PM MAIL ICQ   Вверх
BlackHawk
Дата 20.8.2003, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 15.8.2003

Репутация: нет
Всего: нет



Сильно каюсь, ибо я ввел в заблуждение и себя и тебя. Дело в том, что код сенария у меня находится в стадии отладки. И в коде имеется много всякого закоментированного "мусора", как на зло одна из "лишних" строк случайно раскоментировалась, незаметно для меня, поэтому я даже не "шарил" по всему коду в поисках подобных косяков.

Я устранил причину конфликта, и теперь все работает отлично. Мне не понятно только одно, почему интерпретатор не выдавал сообщение об шибке? Именно это и загнало меня в тупик.
PM MAIL ICQ   Вверх
MuToGeN
Дата 20.8.2003, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



BlackHawk, проверь, как выглядит запрос после подставления значений переменных, т.е. на той стадии, когда он из ...(age BETWEEN '$age1' AND... уже превратился, например, в ...(age BETWEEN '24' AND...


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
BlackHawk
Дата 21.8.2003, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 15.8.2003

Репутация: нет
Всего: нет



Ты абсолютно прав, MuToGeN,
я заметил еще вчера, что после подстановки значений из формы запрос на выборку интервала работает безукоризненно.

Но есть одно огромное "НО":
он блокирует сам собой весь остальной запрос, кстати конструкция типа (age>=$age1 AND age<=$age2) работает точно также.

Если подставить перед скобкой OR вместо AND, то весь запрос начинает работать, кроме части запроса по интервалу (в этом случае он "вываливает" все значения, независимо от установленного интервала).
PM MAIL ICQ   Вверх
MuToGeN
Дата 21.8.2003, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Ну проверь тогда, чему равны $age1 и $age2, т.е. пропиши перед строкой $query=.... такую вещь: echo "age1: $age1, age2: $age2<br />";. Не удивлюсь, если вылетит age1: 0, age2: 0


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
BlackHawk
  Дата 21.8.2003, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 15.8.2003

Репутация: нет
Всего: нет



Нет, MuToGeN, дело немножко не в этом. Данные в вышеуказанных переменных передаются замечательно и выборка по интервалу производится безупречно, но остальная часть запроса блокируется и совсем не реагирует на переменные, передаваемые с формы, хотя я уверен на все 100%, что абсолютно все переменные передаются одинаково хорошо, будь то переменные интервала возраста или имени или профессии и т.д.
Я все переменные проверил через echo.

Проблема состоит в том, что в запросе
$query="SELECT * FROM people WHERE lastname LIKE '%$last_name%' and name LIKE '%$name%' and town LIKE '%$s_town%' and job_title LIKE '%$job_title%' and sex LIKE '%$s_sex%' and education LIKE '%$s_education%' and address LIKE '%$address%' and (age BETWEEN '$age1' AND '$age2') ORDER BY `ID`";
выражение
and (age BETWEEN '$age1' AND '$age2')
блокирует весь остальной запрос, но если его удалить, то весь запрос работает отлично!
PM MAIL ICQ   Вверх
BlackHawk
Дата 21.8.2003, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 15.8.2003

Репутация: нет
Всего: нет



Может все дело во взаимосвязи с конструкцией визуального вывода результата?

Код визуального вывода результата немного "большеват", но в оригинале выглядит так:

$list=mysql_query($query);
for($i=0; $i<@mysql_num_rows($list); $i++)
{
$r=mysql_fetch_array($list);

echo "<tr><td width='50%' bgcolor='3163BD'><TABLE><TR><TD width='1%'><img src='img/style/05.gif'></TD><TD width='99%' height='25'><font face='verdana' size='1' color='ffffff'><b>",@$r[lastname]," ",@$r[name]," ",@$r[surname],", ",@$r[age]," ",@лет,"</b></font></TD></TR></TABLE></td><td width='50%' align='right' bgcolor='3163BD' height='25'><img src='img/style/titlebg.gif'>", "</td></tr><tr class='text'><td background='img/style/bg03.gif' colspan='2'>", "<font face='verdana' color='9cc2e4' size='1'><b>","Общая информация: ", "</b></font></td></tr><tr class='text'><td background='img/style/bg04.gif' colspan='2'>", "<font face='verdana' color='151E27' size='1'><b>","Кандидат на вакансию: ", "</b></font>" , @$r[job_title],"</td></tr><tr class='text'><td background='img/style/bg04.gif' width='30%'>", "<font face='verdana' color='151E27' size='1'><b>","Образование: ", "</b></font>" , @$r[education],"</td><td width='70%' background='img/style/bg04.gif'>",@$r[ed_story],"</td></tr><tr class='text'><td background='img/style/bg04.gif' width='30%'>", "<font face='verdana' color='151E27' size='1'><b>","Опыт работы: ", "</b></font>" , @$r[stage],"</td><td background='img/style/bg04.gif' width='70%'>",@$r[text],"</td></tr><tr class='text'><td background='img/style/bg04.gif' width='30%'>", "<font face='verdana' color='151E27' size='1'><b>","Занятость: ", "</b></font>" , @$r[employment],"</td><td background='img/style/bg04.gif' width='70%'>", "<font face='verdana' color='151E27' size='1'><b>","График работы: ", "</b></font>" , @$r[work_grafic],"</td></tr><tr class='text'><td background='img/style/bg04.gif' colspan='2'>", "<font face='verdana' color='55A3FF' size='1'><b>","Желаемый уровень заработной платы: ", "</b></font>" , " от ", @$r[payment], "$", "</td></tr><tr class='text'><td background='img/style/bg04.gif' colspan='2'>", "<font face='verdana' color='326595' size='1'><b>","Гражданство: ", "</b></font>" , @$r[sitizenship], " ", @$r[another_sitiz], "</td></tr><TR height='10'><TD colspan='2' background='img/style/bg04.gif'>", " " ,"</TD></TR><tr class='text'><td background='img/style/bg03.gif' colspan='2'>", "<font face='verdana' color='9cc2e4' size='1'><b>","Контактная информация: ", "</b></font></td></tr><tr class='text'><td background='img/style/bg04.gif' colspan='2'>", "<font face='verdana' color='151E27' size='1'><b>","Место проживания: ", "</b></font>" ,@$r[town]," ",@$r[another_town],", ",@$r[address],", станция метро (г. Москва): ",@$r[metro],"</td></tr><tr class='text'><td background='img/style/bg04.gif' colspan='2'>", "<font face='verdana' color='151E27' size='1'><b>","Телефон: ", "</b></font>" ,@$r[telephone],"</td></tr><tr class='text'><td background='img/style/bg04.gif' colspan='2'>", "<font face='verdana' color='151E27' size='1'><b>","E-mail: ", "</b></font>" ,@$r[mail],"</td></tr><tr class='text'><td background='img/style/bg03.gif' colspan='2'>", "<font face='verdana' color='9cc2e4' size='1'><b>","Дополнительная информация: ", "</b></font></td></tr><tr class='text'><td background='img/style/bg04.gif' width='30%'>", "<font face='verdana' color='151E27' size='1'><b>","Пол: ", "</b></font>" , @$r[sex],"</td><td width='70%' background='img/style/bg04.gif'><font face='verdana' color='151E27' size='1'><b>","Семейное положение: ", "</b></font>" ,@$r[family],"</td></tr><tr class='text'><td background='img/style/bg04.gif' colspan='2'>", "<font face='verdana' color='151E27' size='1'><b>","Группа в базе: ", "</b></font>" ,@$r[chapter],"</td></tr><tr class='text'><td background='img/style/bg04.gif' colspan='2'>", "<font face='verdana' color='151E27' size='1'><b>","Знание иностранного языка: ", "</b></font>" ,@$r[lang],"</td></tr><tr class='text'><td background='img/style/bg04.gif' width='30%'>", "<font face='verdana' color='ff0000' size='1'><b>","Личный ID соискателя: ", "</b></font>" , @$r[ID],"</td><td width='70%' background='img/style/bg04.gif'><font face='verdana' color='151E27' size='1'><b>","Дата и время внесения резюме: ", "</b></font>" ,@$r[data],"</td></tr><TR height='40'><TD>" , "</TD></TR>";
}
echo "</table>";

PM MAIL ICQ   Вверх
MuToGeN
Дата 21.8.2003, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Цитата
$i<@mysql_num_rows($list);
На время отладки про @ лучше вообще забыть. Короче говоря, убери все @ и посмотри, что выдаст скрипт.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
BlackHawk
Дата 21.8.2003, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 15.8.2003

Репутация: нет
Всего: нет



Я убрал все @ из сценария, мне пришлось только в части визуального вывода в квадратных скобках имена полей взять в одинарные кавычки (иначе интерпретатор выдает: "undefined variable ...."), а в целом все работает точно также !!!
PM MAIL ICQ   Вверх
MuToGeN
Дата 21.8.2003, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



мдя... вообще, чтоб точно убедиться, в чем проблема - в выводе данных или в MySQL, возьми пример запроса с подставленными данными и прогони его, например, через phpMySQLAdmin


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
BlackHawk
Дата 21.8.2003, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 15.8.2003

Репутация: нет
Всего: нет



phpMySQLAdmin у меня нет, но вместе с Денвером установилась phpMyAdmin.
Я ввожу пример своего запроса в режиме SQL в phpMyAdmin, в ответ получаю: "Your SQL-query has been executed successfully!", но результата выборки я не вижу! Вот в чем беда!

PM MAIL ICQ   Вверх
MuToGeN
Дата 21.8.2003, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



А как запрос выглядит, который в phpMyAdmin-e вводил?


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
BlackHawk
Дата 21.8.2003, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 15.8.2003

Репутация: нет
Всего: нет



Я попытался максимально упростить вывод результата:

$list=mysql_query($query);
for($i=0; $i<mysql_num_rows($list); $i++)
{
$r=mysql_fetch_array($list);
echo "$r['lastname'], $r['name'], $r['surname'], $r['age']","<br>";
}

но получил тот же эффект: выводятся пустые значения !!!

PM MAIL ICQ   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0581 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.