Здравейте!
Имам нужда от помощ за заявка към БД:
Правя страница за имоти (аман от тази лудост!), но забих на търсенето, а това май е и основната мъчнотия на подобни сайтове (като изключим хамалогията).
Заявката е за търсене по няколко параметъра, извличани от ХТМЛ форма:
$cenamin и $cenamax за сравняване в полето на БД за цената,
$tip (от падащо меню) - полето за тип на обявата със стойности: продажба/наем - ако не е избрано да търси и за двете
$vid (също падащо меню): вид на имота, също отделна графа в таблицата - ако не е избрано да търси за всички видове
$grad (падащо меню) - поле в таблицата град - пак ако няма стойност да търси за всички градове
и $search - търсене по низ в заглавието на обявата и в съдържанието й.
С формата проблем нямам - получавам си променливите, както трябва.
Ето как се опитах да направя заявката към БД:
$result=mysql_query("SELECT * FROM ads WHERE (cena>='$cenamin') AND (cena<='$cenamax')) AND tip='$tip' AND vid='$vid' AND grad='$grad' AND (zaglavie like '%$search%' OR opis like '%$search%') ORDER BY ref DESC")
or die ("Zaqwkata ne mozhe da se izpylni!");
Организацията на таблицата в БД съм ориентирал към търсенето, така че една променлива от формата да се отнася към едно поле в таблицата.
Търсенето само по низ (в двете полета заглавие и опис) се получава, само по един параметър също мога да го направя (то не е и съвсем търсене, а повече сортиране), но цялата заявка в този (или подобен вид) не успявам да направя. - ПРОБЛЕМ 1
Другия препъни камък (още не съм стигнал до него - засега е хипотетичен, но все пак предстоящ) е, че търсенето може да става и без формата да е изцяло попълнена, т.е. в една заявка (съдържащ всички възможни условия) трябва да прави търсене само по променливите, които имат стойност. - ПРОБЛЕМ 2
Винаги мога да проверя дали една променлива е изпратена и ако да, дали има стойност и в зависимост от това да се включва онази заявка, която ще съдържа в себе си само наличните стойности, но това означава да правя 1001 различни заявки към базата данни в зависимост от комбинациите между променливите ("тука има-тука нема")
Другата екзотична идея, която ми хрумна е да направя пълен селект на всички редове в БД и да обработя резултата преди листване с помощта на РНР операторите за сравняване на стойност... При 20 реда в таблицата ще работи, но при 2000?!
Съществува ли някаква възможност да въвеждам някаква стойност на променливата според която търся в БД(константа?) като All, която да означава в заявката, че за въпросното поле в БД се приемат всички възможни стойности?
Или иначе казано (пак се оплетох), какъв е начина да се направи една обща заявка (като неработещата по-горе), съдържаща всички възможни опции за търсене, но вземаща предвид само онези, които имат стойност?
Имате ли идея, как може да стане? Моля, помогнете!
Благодаря предварително!
Имам нужда от помощ за заявка към БД:
Правя страница за имоти (аман от тази лудост!), но забих на търсенето, а това май е и основната мъчнотия на подобни сайтове (като изключим хамалогията).
Заявката е за търсене по няколко параметъра, извличани от ХТМЛ форма:
$cenamin и $cenamax за сравняване в полето на БД за цената,
$tip (от падащо меню) - полето за тип на обявата със стойности: продажба/наем - ако не е избрано да търси и за двете
$vid (също падащо меню): вид на имота, също отделна графа в таблицата - ако не е избрано да търси за всички видове
$grad (падащо меню) - поле в таблицата град - пак ако няма стойност да търси за всички градове
и $search - търсене по низ в заглавието на обявата и в съдържанието й.
С формата проблем нямам - получавам си променливите, както трябва.
Ето как се опитах да направя заявката към БД:
$result=mysql_query("SELECT * FROM ads WHERE (cena>='$cenamin') AND (cena<='$cenamax')) AND tip='$tip' AND vid='$vid' AND grad='$grad' AND (zaglavie like '%$search%' OR opis like '%$search%') ORDER BY ref DESC")
or die ("Zaqwkata ne mozhe da se izpylni!");
Организацията на таблицата в БД съм ориентирал към търсенето, така че една променлива от формата да се отнася към едно поле в таблицата.
Търсенето само по низ (в двете полета заглавие и опис) се получава, само по един параметър също мога да го направя (то не е и съвсем търсене, а повече сортиране), но цялата заявка в този (или подобен вид) не успявам да направя. - ПРОБЛЕМ 1
Другия препъни камък (още не съм стигнал до него - засега е хипотетичен, но все пак предстоящ) е, че търсенето може да става и без формата да е изцяло попълнена, т.е. в една заявка (съдържащ всички възможни условия) трябва да прави търсене само по променливите, които имат стойност. - ПРОБЛЕМ 2
Винаги мога да проверя дали една променлива е изпратена и ако да, дали има стойност и в зависимост от това да се включва онази заявка, която ще съдържа в себе си само наличните стойности, но това означава да правя 1001 различни заявки към базата данни в зависимост от комбинациите между променливите ("тука има-тука нема")

Другата екзотична идея, която ми хрумна е да направя пълен селект на всички редове в БД и да обработя резултата преди листване с помощта на РНР операторите за сравняване на стойност... При 20 реда в таблицата ще работи, но при 2000?!
Съществува ли някаква възможност да въвеждам някаква стойност на променливата според която търся в БД(константа?) като All, която да означава в заявката, че за въпросното поле в БД се приемат всички възможни стойности?
Или иначе казано (пак се оплетох), какъв е начина да се направи една обща заявка (като неработещата по-горе), съдържаща всички възможни опции за търсене, но вземаща предвид само онези, които имат стойност?
Имате ли идея, как може да стане? Моля, помогнете!
Благодаря предварително!