Проблем с извличане на данни от db (mysql)

kalpazan4o

Registered
Здравейте,
Имам поставена задача и нещо... не ми идват идеи как да я реализирам.
Ето и какво представлява заданието.
Имаме таблица diamanti в db bdiamonds. Таблицата е със следните полета:
id (int auto_inc), forma (var), karat (float), name (var), color (var), clean (var), obrabotka (var), cena (int), size (var), certificate (var).

Има форма, от която се посочват параметри за да се покажат желаните записи от таблицата.
Посочват се начална и крайна стойност за всеки параметър, като стойностите са следните:
за forma -> от "кръгъл" до "объл";
за karat -> от "0.1", "0.5", "1", "2" до "0.49", "0.99", "1.99", "3";
за color -> D, E, F, G, H, I, J, K (пак са от-до);
за clean -> "FL", "IF", "VVS1", "VVS2", "VS1", "VS2", "SI1" (пак са от-до);
за obrabotka -> "Excellent", "Very Good", "Good" (пак са от-до);
за цена -> две полета за цена от и цена до;

Проблема идва от там, че не се досещам как да напиша коректна заявка към mysql с тези параметри, като е препоръчително да не променям структурата на таблицата в базата данни.
Пробвах с BETWEEN и IN, но не ми ползволява да посоча повече от 1 параметър.

Очаквам вашите съвети.

Благодаря Ви предварително!
 
Идеята е, че трябва според област от стойности да се вадят резултати, а не от определена стойност. И затова си мисля, че AND и ОR няма да са ми особено полезни. Ще посочиш ли някакъв пример за условие?
 
можеш още в формата да създадеш стринг с всички полета между единия и другия опшън - нещо такова 'обълкръгълчетвъртит' и после тоя стринг да го ползваш в заявката с LIKE. Само идея е, не съм го пробвал
 
Направих го с >= <= като смених стойностите за всички опции (параметри) с числови стойности и от там насетне бе въпрос на сравнение на стойности.
:)
Ако някой друг попадне в такова положение, нека пробва този вариант.

Код:
$query = "SELECT * FROM table WHERE field1 >= $na4alna_stoinost AND field1 <= $kraina_stoinost AND field2 >= $na4alna_stoinost2 AND field2 <= $kraina_stoinost2 ... order by... ;

Вярно, направено е малко глупаво, но работи. :)
 

Back
Горе