2015-08-19 3 views
0

У меня есть форма, в которой пользователи могут вставлять свои навыки в базу данных mysql. Можно выбрать один из трех вариантов: живопись, рисунок или живопись & рисунок. Одно из этих значений затем вставляется в поле базы данных.Поисковый запрос Mysql с опциями

Я хочу иметь возможность запрашивать эти значения, используя форму с элементами выбора. У меня все нормально, но с логикой столкнулась с проблемой.

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

Аналогично, если кто-то выбирает живопись & рисунка из формы поиска только строки возвращаются, где это точное значение существует, но на самом деле это должно вернуть все строки, в которых обе картине и рисунка существует. Как я могу это достичь? Кусок поиска кода ниже:

<div class="form-group"> 
          <label class="sr-only" for="job"></label> 
          <div class="input-group"> 
          <select id="jobtitle" name="jobtitle" class="form-control"> 
           <option value="" disabled selected>jobtitle</option> 
        <option value="drawing"> 
        Drawing 
        </option> 
        <option value="painting"> 
        Painting 
        </option> 
    <option value="Drawing & Painting">Drawing & Painting</option> 

       </select> 

Запрос MySQL является:

sql="select name, jobtitle from mytable where jobtitle='jobtitle'" 
+1

можно изменить <параметр значение = "Drawing & Painting"> Рисование и живопись до <опции значение = "рисунок, живопись"> Рисование и живопись и затем использовать MySQL FIND_IN_SET на jobtitle поле в запросе –

ответ

0

использовать как вместо этого. Вы можете уйти с

SELECT name,jobtitle FROM mytable WHERE jobtitle LIKE "%painting%"; 

и он выберет все, где «живопись» находится в поле. % - это шаблон. Вам придется немного переписать его с конкатенацией строки PHP, чтобы включить переменную, но это должно дать вам хорошее начало, не так ли?

Это будет работать для вас, если вы разместите больше опций и сделайте (Живопись, рисунок & Раскраска) или (окраска, покраска &). Он вернет совпадение либо потому, что «живопись» находится в обоих полях.

+0

, что привычка работайте, если он передает «живопись и рисунок» в качестве значения для поиска. –

+0

ах да, из-за & знак. –

+0

Итак, я следовал за предложением FuncDoc. Может ли кто-нибудь сказать мне, почему это не работает? 'code' SELECT name from mytable WHERE FIND_IN_SET ('jobtitle', 'painting, drawing')' code' – JulianJ

Смежные вопросы