Làm cách nào để tạo tìm kiếm cho nhiều tùy chọn tìm kiếm trong php?

Được rồi, tôi đã tạo trang tìm kiếm này để tìm kiếm các bài đăng nhưng mã hiện tại của tôi có vẻ quá cồng kềnh và không hiệu quả

Kịch bản của tôi [trang tìm kiếm]

if[isset[$_GET['title']]]$title = $_GET['title'];else{ $title = ''; }
if[isset[$_GET['ad_brand']]]$brand = $_GET['ad_brand'];else{ $brand = ''; }
if[isset[$_GET['min_range']]]$min_range = $_GET['min_range'];else{ $min_range = ''; }
if[isset[$_GET['max_range']]]$max_range = $_GET['max_range'];else{ $max_range = ''; }
if[isset[$_GET['sub_cat']]]$sub_cat = $_GET['sub_cat'];else{ $sub_cat = ''; }
if[isset[$_GET['for_r_s']]]$for_r_s = $_GET['for_r_s']; else{ $for_r_s = ''; }
if[isset[$_GET['main_cat']]]$main_cat = $_GET['main_cat']; else{ $main_cat = ''; }

if[isset[$_POST['filter_button']]]{
    if[isset[$_POST['ad_brand']]]
        $brand = $_POST['ad_brand'];
    else{$brand = '';}

    if[isset[$_POST['main_cat']]]
    $main_cat = $_POST['main_cat'];
    else{ $main_cat = ''; }

    if[isset[$_POST['sub_cat']]]
        $sub_cat = $_POST['sub_cat'];
    else{ $sub_cat = ''; }

    if[$_POST['min_range'] != '']
        $min_range = $_POST['min_range'];
    else{ $min_range = ''; }

    if[isset[$_POST['max_range']]]
        $max_range = $_POST['max_range'];
    else{ $max_range = ''; }


    if[isset[$_POST['for_r_s']]]
        $for_r_s = $_POST['for_r_s'];
    else{ $for_r_s = ''; }
    header['location:search?title='. $title .'&main_cat='.$main_cat.'&sub_cat='. $sub_cat .'&ad_brand='. $brand .'&min_range='.$min_range.'&max_range='.$max_range.'&for_r_s='.$for_r_s.''];
}

if[isset[$_GET['sub_cat']]]{
    if[$_GET['sub_cat'] != '']{
            if[isset[$_GET['min_range']]]{
                if[isset[$_GET['max_range']] && $_GET['max_range'] != '']{
                    if[isset[$_GET['for_r_s']]]{
                        if[$_GET['for_r_s'] == 1 || $_GET['for_r_s'] == 2]{
                            $query = "SELECT * FROM `posts` 
                            WHERE `ad_title` LIKE CONCAT['%',?,'%'] AND `ad_sub_cat` = ?
                            AND `ad_brand` LIKE CONCAT['%',?,'%'] AND `ad_price` >= ? 
                            AND `ad_price` = ? AND `ad_price` = ? AND `ad_price` = ? AND `for_r_s` = ?"; 
                            $get_posts = $conn_posts->prepare[$query];
                            $get_posts->bind_param["sssii", $title, $sub_cat ,$brand, $min_range, $for_r_s];
                        }else{
                            $query = "SELECT * FROM `posts` WHERE `ad_title` LIKE CONCAT['%',?,'%'] AND `ad_sub_cat` = ? AND `ad_brand` 
                            LIKE CONCAT['%',?,'%'] AND `ad_price` >= ?"; 
                            $get_posts = $conn_posts->prepare[$query];
                            $get_posts->bind_param["sssi", $title, $sub_cat ,$brand, $min_range];
                        }
                    }else{
                        $query = "SELECT * FROM `posts` WHERE `ad_title` LIKE CONCAT['%',?,'%'] AND `ad_sub_cat` = ? AND `ad_brand` 
                        LIKE CONCAT['%',?,'%'] AND `ad_price` >= ?"; 
                        $get_posts = $conn_posts->prepare[$query];
                        $get_posts->bind_param["sssi", $title, $sub_cat ,$brand, $min_range];
                    }
                }
            }else{
                if[isset[$_GET['max_range']] && $_GET['max_range'] != '']{
                    if[isset[$_GET['for_r_s']]]{
                        if[$_GET['for_r_s'] == 1 || $_GET['for_r_s'] == 2]{
                            $query = "SELECT * FROM `posts` WHERE `ad_title` LIKE CONCAT['%',?,'%'] AND `ad_sub_cat` = ? AND `ad_brand` 
                            LIKE CONCAT['%',?,'%'] AND `ad_price` = ? AND `ad_price` = ? AND `ad_price` = ? AND `ad_price` = ? AND `for_r_s` = ?"; 
                        $get_posts = $conn_posts->prepare[$query];
                        $get_posts->bind_param["sssi", $title, $brand, $min_range, $for_r_s];
                    }else{
                        $query = "SELECT * FROM `posts` WHERE `ad_title` LIKE CONCAT['%',?,'%'] AND `ad_brand` 
                        LIKE CONCAT['%',?,'%'] AND `ad_price` >= ?"; 
                        $get_posts = $conn_posts->prepare[$query];
                        $get_posts->bind_param["ssi", $title, $brand, $min_range];
                    }
                }else{
                    $query = "SELECT * FROM `posts` WHERE `ad_title` LIKE CONCAT['%',?,'%'] AND `ad_brand` 
                    LIKE CONCAT['%',?,'%'] AND `ad_price` >= ?"; 
                    $get_posts = $conn_posts->prepare[$query];
                    $get_posts->bind_param["ssi", $title, $brand, $min_range]; 
                }
            }
        }else{
            if[isset[$_GET['max_range']] && $_GET['max_range'] != '']{
                if[isset[$_GET['for_r_s']]]{
                    if[$_GET['for_r_s'] == 1 || $_GET['for_r_s'] == 2]{
                        $query = "SELECT * FROM `posts` WHERE `ad_title` LIKE CONCAT['%',?,'%'] AND `ad_brand` 
                        LIKE CONCAT['%',?,'%'] AND `ad_price` 

Chủ Đề