2010-09-07 2 views
0

У меня есть Репетитор база данных (MySQL), которые хранят Репетитор доступные предметов, примера: - tutor1 доступно при условии = А, В, С tutor2 доступны при условии = А, В tutor3 доступны при условии = АКак я могу найти несколько критериев в раскрывающемся списке?

в SearchTutor .php;

<select id="select3" class="medium" name="upsr"> 
<option selected="selected" value="%">-</option> 
<option value="A">A only</option> 
<option value="A,B">A and B only</option> 
<option value="A,B,C">All Subjects</option> 
</select> 

в DisplayTutor.php;

$subjectin = ''; 
$subdescription = ''; 
    if(strlen($upsr) > 1) 
{ 
    $subjectin .= "'106',"; 
    if($upsr == "A") 
    $subdescription .= "'A',"; 
    else if($upsr == "A,B") 
    $subdescription .= "'A','B',"; 
    else if($upsr == "A,B,C") 
    $subdescription .= "'A','B','C',"; 
    else 
    $subdescription .= "'".$upsr."',"; 
} 

так .. то, что я хочу есть, когда я выбираю «А только», результат должен быть tutor3, потому что я хочу «А только» те, Репетитор с A, B, C не право, то же самое происходит, когда я выбираю «Все субъекты», результат должен быть наставником1, потому что только у tutor1 есть все предметы,

но в моем кодировании я знаю, что это было неправильно, есть ли кто-нибудь, кто может помочь мне решить это?

Спасибо всем программист, ^^

ответ

0

Вы можете изменить эту часть, вы получите результат, как вам нужно я так думаю

$subjectin = ''; 
$subdescription = ''; 
    if(strlen($upsr) > 0) 
{ 
    $subjectin .= "'106',"; 
    if($upsr == "A") 
    $subdescription .= "'A',"; 
    else if($upsr == "A,B") 
    $subdescription .= "'A','B',"; 
    else if($upsr == "A,B,C") 
    $subdescription .= "'A','B','C',"; 
    else 
    $subdescription .= "'".$upsr."',"; 
} 

Потому что в первом результате вы получаете длину строки в 1 , поэтому вы ничего не можете получить. Попробуй.

0
 
$arr=array('A'=>'tutor3','A,B'=>'tutor2','A,B,C'=>'tutor1') 
echo(arra[$upsr]); 
+0

Спасибо Имран, но это не то, что я хочу, – Myrth

0

Вы не можете достичь этого слишком легко (только так, как я знаю, существует суб-запрос, но я утверждаю, что я предлагаю более читаемым и легче динамически создавать в зависимости от выбора) со значением в («A», «B», «C»), предполагая, что вы используете их в другой таблице с некоторым столбцом, ссылающимся на таблицы преподавателя и субъекта.

Я предлагаю вам присоединиться ко второй таблице более одного раза с левым соединением. Я просто бросаю имена таблиц, заменяю их правильными. Также исправить имена столбцов, ссылающийся

select othercolumns, 
    s1.description as DESCA, 
    s2.description as DESCB, 
    s3.description as DESCC 
from tutor t 
left join subject s1 on s1.description = 'A' and s1.idref = t.id 
left join subject s2 on s2.description = 'B' and s2.idref = t.id 
left join subject s3 on s3.description = 'C' and s3.idref = t.id 

В ГДЕ -clause вы убедитесь, что те, которые вы хотите нулевые, а другие нет. For A только:

where DESCA is not null and DESCB is null and DESCC is null 

для A и B:

where DESCA is not null and DESCB is not null and DESCC is null 

Я думаю, вы получите идею. Это не должно быть слишком сложно «преобразовать» в PHP if и elses.

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