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 `for_r_s` = ?"; 
                            $get_posts = $conn_posts->prepare($query);
                            $get_posts->bind_param("sssiii", $title, $sub_cat ,$brand, $min_range, $max_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` >= ? AND `ad_price` <= ?"; 
                            $get_posts = $conn_posts->prepare($query);
                            $get_posts->bind_param("sssii", $title, $sub_cat ,$brand, $min_range, $max_range);  
                        }
                    }else{
                        $query = "SELECT * FROM `posts` WHERE `ad_title` LIKE CONCAT('%',?,'%') AND `ad_sub_cat` = ? AND `ad_brand` 
                        LIKE CONCAT('%',?,'%') AND `ad_price` >= ? AND `ad_price` <= ?"; 
                        $get_posts = $conn_posts->prepare($query);
                        $get_posts->bind_param("sssii", $title, $sub_cat ,$brand, $min_range, $max_range);  
                    }
                }else{
                    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 `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 `for_r_s` = ?"; 
                            $get_posts = $conn_posts->prepare($query);
                            $get_posts->bind_param("sssii", $title, $sub_cat ,$brand, $max_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, $max_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, $max_range);
                    }
                }else{
                    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 `for_r_s` = ?";
                            $get_posts = $conn_posts->prepare($query);
                            $get_posts->bind_param("sssi", $title, $sub_cat ,$brand, $for_r_s);
                        }else{
                            $query = "SELECT * FROM `posts` WHERE `ad_title` LIKE CONCAT('%',?,'%') AND `ad_sub_cat` = ? AND `ad_brand` LIKE CONCAT('%',?,'%')";
                            $get_posts = $conn_posts->prepare($query);
                            $get_posts->bind_param("sss", $title, $sub_cat ,$brand);
                        }
                    }else{
                        $query = "SELECT * FROM `posts` WHERE `ad_title` LIKE CONCAT('%',?,'%') AND `ad_sub_cat` = ? AND `ad_brand` LIKE CONCAT('%',?,'%')";
                        $get_posts = $conn_posts->prepare($query);
                        $get_posts->bind_param("sss", $title, $sub_cat ,$brand); 
                    }
                }
            }
    }else{
        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_brand` 
                        LIKE CONCAT('%',?,'%') AND `ad_price` >= ? AND `ad_price` <= ? AND `for_r_s` = ?"; 
                        $get_posts = $conn_posts->prepare($query);
                        $get_posts->bind_param("ssiii", $title, $brand, $min_range, $max_range, $for_r_s);
                    }else{
                        $query = "SELECT * FROM `posts` WHERE `ad_title` LIKE CONCAT('%',?,'%') AND `ad_brand` 
                        LIKE CONCAT('%',?,'%') AND `ad_price` >= ? AND `ad_price` <= ?"; 
                        $get_posts = $conn_posts->prepare($query);
                        $get_posts->bind_param("ssii", $title, $brand, $min_range, $max_range);
                    }
                }else{
                    $query = "SELECT * FROM `posts` WHERE `ad_title` LIKE CONCAT('%',?,'%') AND `ad_brand` 
                    LIKE CONCAT('%',?,'%') AND `ad_price` >= ? AND `ad_price` <= ?"; 
                    $get_posts = $conn_posts->prepare($query);
                    $get_posts->bind_param("ssii", $title, $brand, $min_range, $max_range);
                }
            }else{
                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` >= ? 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` <= ? AND `for_r_S` = ?"; 
                        $get_posts = $conn_posts->prepare($query);
                        $get_posts->bind_param("ssii", $title, $brand, $max_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, $max_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, $max_range); 
                }
            }else{
                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 `for_r_s` = ?";
                        $get_posts = $conn_posts->prepare($query);
                        $get_posts->bind_param("ssi", $title, $brand, $for_r_s);
                    }else{
                        $query = "SELECT * FROM `posts` WHERE `ad_title` LIKE CONCAT('%',?,'%') AND `ad_brand` LIKE CONCAT('%',?,'%')";
                        $get_posts = $conn_posts->prepare($query);
                        $get_posts->bind_param("ss", $title, $brand); 
                    }
                }else{
                    $query = "SELECT * FROM `posts` WHERE `ad_title` LIKE CONCAT('%',?,'%') AND `ad_brand` LIKE CONCAT('%',?,'%')";
                    $get_posts = $conn_posts->prepare($query);
                    $get_posts->bind_param("ss", $title, $brand); 
                }
            }
        }
    }
}else{
    $sub_cat = ''; 
    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 `for_r_s` = ?";
            $get_posts = $conn_posts->prepare($query);
            $get_posts->bind_param("ssi", $title, $brand, $for_r_s);
        }else{
            $query = "SELECT * FROM `posts` WHERE `ad_title` LIKE CONCAT('%',?,'%') AND `ad_brand` LIKE CONCAT('%',?,'%')";
            $get_posts = $conn_posts->prepare($query);
            $get_posts->bind_param("ss", $title, $brand);
        }
    }else{
        $query = "SELECT * FROM `posts` WHERE `ad_title` LIKE CONCAT('%',?,'%') AND `ad_brand` LIKE CONCAT('%',?,'%')";
        $get_posts = $conn_posts->prepare($query);
        $get_posts->bind_param("ss", $title, $brand); 
    }
}

mã Html của tôi

 
                    
                        
                        prepare("SELECT * FROM `cats` WHERE `main_cat` = 0;");
                            $get_category->execute();
                            $get_category_results = $get_category->get_result(); // get result
                            while($row = $get_category_results->fetch_assoc()){ 
                                echo '';
                            }
                        ?>
                    
                    


Price

-


For Rent For Sale
Search

Bố cục bảng Cơ sở dữ liệu của tôi

IDad_titlead_sub_catad_priceused_newfor_r_sad_brandad_desad_location1title1210011loermipsumnew york

for_r_s. 1 = cho thuê, 2 = bán

used_new. 1 = đã sử dụng, 2 = mới

Ngoài ra, con mèo phụ được lấy từ ajax nhưng tôi không muốn đưa mã đó vào đây nên chỉ cần điền nó vào bất kỳ danh mục nào như thế này

Tập lệnh đang hoạt động theo cách tôi muốn nhưng tôi chỉ muốn làm sạch mã này (tôi không biết về bất kỳ lỗi nào và nó sẽ hoạt động tốt thôi) và tôi cần một số trợ giúp để thực hiện điều mà bạn tôi đã bảo tôi hỏi tại đây nên tôi

Làm cách nào tôi có thể triển khai nhiều bộ lọc tìm kiếm trong PHP?

một cách để triển khai là kiểm tra từng bộ lọc như. if (isset($_GET['name'] && isset($_GET['city'])) { // thực hiện AND cho hai cái này } elseif(isset($_GET['name'] && (isset($_GET[ .

Làm cách nào tôi có thể tìm kiếm nhiều từ cùng một lúc trong mysql bằng PHP?

Khi người dùng nhấp vào nút tìm kiếm, yêu cầu sử dụng sẽ gửi đến máy chủ và ở phía máy chủ nếu người dùng nhập nhiều hơn một từ thì các từ đó sẽ được chuyển đổi thành mảng bằng cách sử dụng hàm phát nổ () và từ mảng đó tôi sẽ tạo chuỗi tìm kiếm với toán tử THÍCH mysql

Tìm kiếm trong PHP là gì?

Tìm kiếm nhị phân là kỹ thuật tìm kiếm được sử dụng để tìm kiếm một phần tử trong một mảng được sắp xếp . Trong bài viết này, chúng ta sẽ tìm hiểu về cách triển khai Tìm kiếm nhị phân trong PHP bằng phương pháp lặp và đệ quy. Cho một mảng số, chúng ta cần tìm kiếm sự hiện diện của phần tử x trong mảng bằng Tìm kiếm nhị phân.