2014-01-25 3 views
0

Итак, у меня есть форму для поиска ищущего работу через базу данных. Форма содержит имя, удостоверение личности, место работы, академический сертификат, возраст и т. Д. Проблема, с которой я сталкиваюсь, - это когда я ищу ищущего работу, основанного только на одной текстовой форме, например, позиции работы, результат показан. Но, если я хочу найти ищущего работу на основе положения работы и академического уровня, результат будет показан только на основе позиции работы. Что-то не так с моим кодом? Нужна помощь здесь .. извините за мой плохой английский, хотя ..PHP: Поиск нескольких текстовых форм

для занимаемой должности:

$jawatan_arr = explode(',', $_POST['txt_jawatan']); 
$jum_jawatan = count($jawatan_arr); 
//echo "jum_didik = ".$jum_didik; 
if($jum_jawatan > 0){ 
    $d = 0; 
    foreach ($jawatan_arr as $value){ 
     $d++; 
     //echo "; value::: ".$value." :::"; 
     if($d == 1){ 
      if($value != ''){ 
       if($str == ''){ 
        $str = " WHERE "; 
      } 
       else{ 
        $str .= " AND ";  
      } 
       $str_jawatan .= " (LOWER(jawatan) LIKE '%".strtolower(rtrim(ltrim($value)))."%' "; 
      } 
     } 
     else{ 
      if($value != ''){ 
       $str_jawatan .= " OR LOWER(jawatan) LIKE '%".strtolower(rtrim(ltrim($value)))."%' "; 
      } 
     } 
    } 
    if($str_jawatan != ''){ 
     $str_jawatan .= ") "; 

     $sql = "SELECT no_kp FROM jobseeker_pengalaman ".$str_jawatan; 
     $res = mysql_query($sql); 
     while($row = mysql_fetch_array($res)){ 
      if($row['no_kp'] != ''){ 
       if(!in_array($row['no_kp'], $senarai_kp)){ 
        array_push($senarai_kp, $row['no_kp']); 
       } 
      } 
     } 
    } 
} 

для академического уровня (флажком, не textform):

$didik_arr = explode(',', $_POST['txt_taraf_pendidikan']); 
$jum_didik = count($didik_arr) - 1; 
//echo "jum_didik = ".$jum_didik; 
if($jum_didik > 0){ 
    $d = 0; 
    foreach ($didik_arr as $value){ 
     $d++; 
     //echo "; value::: ".$value." :::"; 
     if($d == 1){ 
      if($str == ''){ 
        $str = " WHERE "; 
      } 
      else{ 
       $str .= " AND ";  
      } 
      $temp_didik .= $value; 
     } 
     else{ 
      if($value != ''){ 
       $temp_didik .= ",".$value; 
      } 
     } 
    } 

    //$str_didik .= " id_taraf_pendidikan IN (".$temp_didik.")"; 

    $sql = "SELECT no_kp FROM jobseeker_pendidikan WHERE id_taraf_pendidikan IN (".$temp_didik.")"; 

    $res = mysql_query($sql); 
    while($row = mysql_fetch_array($res)){ 
     if($row['no_kp'] != ''){ 
      if(!in_array($row['no_kp'], $senarai_kp)){ 
       array_push($senarai_kp, $row['no_kp']); 
      } 
     } 
    } 
} 

мне нужно сделать присоединиться к моей таблице? потому что положение на должности основано на недавнем опыте работы, а академическое - на учебе. Оба они из разных таблиц

+0

Вы пытаетесь выполнить эхо-запрос после $ sql = "SELECT no_kp FROM jobseeker_pengalaman". $ Str_jawatan; чтобы быть уверенным, что это то, что вы хотите? –

ответ

2

Может быть, вы можете попробовать инструкцию IN? Что-то вроде этого:

$sql = "SELECT no_kp FROM jobseeker_pengalaman ".$str_jawatan." IN 
(
SELECT no_kp FROM jobseeker_pendidikan WHERE id_taraf_pendidikan IN (".$temp_didik.") 
)"; 

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

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