2016-10-08 6 views
1

У меня есть функция расширенного поиска. Все работает отлично, кроме одного AND LIKE .... Существует два варианта: A или A, *AB. Я хочу, когда я выберу A, чтобы возвращать только результаты, которые являются A в базе данных, и когда я выбираю A, *AB, чтобы вернуть результаты, которые только A, *AB.Запрос по запросу не возвращает желаемых результатов

Что происходит сейчас, что, когда я выбираю B, *AB возвращает результаты, как для

A 
A, *AB 

моя форма с действием get. Это мой запрос

$couGe=($ge == "None") ? "" : "AND c.ge LIKE '".substr($ge, 0, 2)."%'"; 
    $active = ($this->showCouCancelled) ? "AND (c.active=1 OR c.active=7)" : ""; 
    $active = ($this->hideCouActive) ? "AND (c.active=1 OR c.active=3 OR c.active=4 OR c.active=7)" : ""; 
    $couName = ($cName) ? "AND course_title LIKE '%$cName%'" : ""; 
    $couDept = ($cDept) ? "AND s.dept='$cDeptArray[0]' AND s.dept_code='$cDeptArray[1]'" : ""; 

    $iRes = _SQLQuery(" 
        SELECT DISTINCT c.id,s.dept,s.dept_code,c.course_title,c.active,s.year,s.sem,c.ge,c.course_type 
        FROM courses AS c, sections AS s, teachers as t, tea_sec_rel as tsr 
        WHERE s.course_id_rel=c.id AND $curYr $curSem $active $couName $couDept $psSearch $couGe 
        ORDER BY s.dept,s.dept_code"); 

меню выбора опции HTML имеет

<select name="ge" id="ge"> 
    <option value="None">All</option> 
    <option value="A">A</option> 
    <option value="A, *AB">A, *AB</option> 
</select> 

В запросе это линия, которая принять ge

$couGe=($ge == "None") ? "" : "AND c.ge LIKE '".substr($ge, 0, 2)."%'"; 

Когда я var_dump($_GET['ge'] я вижу, что я получаю то, Я выбираю. Я очень смущен, и любая помощь приветствуется.

+0

Текст эхо-запроса и посмотреть, что случилось. –

+0

Извините, но какой текст нужно запросить? – Jared

ответ

1

Вам нужно немного изменить свой запрос и способ присвоить $couGe, где вы выбрали ge. Попробуйте этот путь

$couGe=($ge == "None") ? "" : "'".substr($ge, 0, 2)."'"; 
$active = ($this->showCouCancelled) ? "AND (c.active=1 OR c.active=7)" : ""; 
$active = ($this->hideCouActive) ? "AND (c.active=1 OR c.active=3 OR c.active=4 OR c.active=7)" : ""; 
$couName = ($cName) ? "AND course_title LIKE '%$cName%'" : ""; 
$couDept = ($cDept) ? "AND s.dept='$cDeptArray[0]' AND s.dept_code='$cDeptArray[1]'" : ""; 

$iRes = _SQLQuery(" 
       SELECT DISTINCT c.id,s.dept,s.dept_code,c.course_title,c.active,s.year,s.sem,c.ge,c.course_type 
       FROM courses AS c, sections AS s, teachers as t, tea_sec_rel as tsr 
       WHERE s.course_id_rel=c.id AND $curYr $curSem $active $couName $couDept $psSearch $couTea AND c.ge LIKE $couGe 
       ORDER BY s.dept,s.dept_code"); 
+0

Работа с одной небольшой модификацией на '$ couGe':' $ couGe = ($ ge == "None")? «Нет» »:« '».substr ($ ge, 0, 2)."' ";' – Jared

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