简体   繁体   中英

PHP : Multiple Textform Search

So , i got a form to search for jobseeker through the database . The form contain name , identity card , job position , academic certificate , age etc . The problem that i'm facing is when i'm searching for jobseeker based only on one text form for example , job position , the result is shown . But , if i want to search for jobseeker based on job position and academic level , the result is shown based on job position only . Is there anything wrong with my code ? need help here .. sorry for my bad english though ..

for job position :

$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']); 
                }
            }
        }
    }
}

for academic level(checkbox , not a 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']); 
            }
        }
    }
}

Do i need to join the my table ? because the job position is based on recent job experience , and academic is based on their study . Both of them are from different table

May be you can try IN statement? Something like this:

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

So you will search by job positions within that jobseekers that already passed through your academic based search. I hope this approach will help.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM