Dalam pencarian muka PHP kami memiliki banyak opsi untuk memfilter data MySQL. Menggunakan opsi ini kami membuat kondisi permintaan basis data untuk membuat pencarian lanjutan. Dalam tutorial sebelumnya, kita telah melihat pencarian PHP sederhana untuk menyaring catatan MySQLyang hanya memiliki satu bidang untuk memasukkan kata kunci pencarian.
Dalam bentuk pencarian lanjutan, kami memiliki masukan untuk mencari dengan hormat ke kata yang tepat atau salah satu dari kata yang diberikan, untuk mengecualikan string yang diberikan dan untuk mencari hasil yang dimulai dengan kata yang diberikan. Dan juga kita juga dapat memilih kolom basisdata tempat pencarian seharusnya terjadi.

Formulir Pencarian Lanjutan HTML
Kode ini berisi input bentuk HTML untuk opsi pencarian lanjutan.
<form name = "frmSearch" method = "pos" action = "index.php"> <input type = "hidden" id = "advance_search_submit" name = "advance_search_submit" value = "<? php echo $ advance_search_submit;?>"> <div class = "search-box"> <label class = "search-label"> Dengan Any One of the Words: </ label> <div> <input type = "text" name = "cari [with_any_one_of]" class = "demoInputBox" value = "<? php echo $ with_any_one_of;?>" /> <span id = "advance_search_link" onClick = "showHideAdvanceSearch ()"> Pencarian Lanjutan </ span> </ div> <div id = "advanced-search-box" <? php if (kosong ($ advance_search_submit)) {?> style = "display: none;" <? php}? >> <label class = "search-label"> Dengan String Exact: </ label> <div> <input type = "text" name = "cari [with_the_exact_of]" id = "with_the_exact_of" class = "demoInputBox" value = "<? php echo $ with_the_exact_of;?>" /> </ div> <label class = "search-label"> Tanpa: </ label> <div> <input type = "text" name = "cari [tanpa]" id = "tanpa" class = "demoInputBox" value = "<? php echo $ tanpa;?>" /> </ div> <label class = "search-label"> Mulai Dengan: </ label> <div> <input type = "text" name = "search [starts_with]" id = "starts_with" class = "demoInputBox" value = "<? php echo $ starts_with;?>" /> </ div> <label class = "search-label"> Kata Kunci Pencarian di: </ label> <div> <pilih nama = "cari [search_in]" id = "search_in" class = "demoInputBox"> <option value = ""> Pilih Kolom </ pilihan> <option value = "title" <? php if ($ search_in == "title") {echo "dipilih"; }? >> Judul </ pilihan> <option value = "description" <? php if ($ search_in == "description") {echo "dipilih"; }? >> Deskripsi </ option> </ pilih> </ div> </ div> <div> <input type = "submit" name = "go" class = "btnSearch" value = "Cari"> </ div> </ div> </ form>
Menciptakan Kondisi Pencarian Lanjut di PHP
Kode ini menerima input formulir dan membentuk query MySQL dengan kondisi pencarian lanjutan. Jika pengguna lebih suka kolom database untuk mencari maka pencarian akan berlaku pada kolom itu. Jika tidak, kami akan mencari di semua kolom. Kuncinya adalah,
<php $ conn = mysqli_connect ("localhost", "root", "", "blog_samples"); $ with_any_one_of = ""; $ with_the_exact_of = ""; $ without = ""; $ starts_with = ""; $ search_in = ""; $ advance_search_submit = ""; $ queryCondition = ""; if (! empty ($ _ POST ["search"])) { $ advance_search_submit = $ _POST ["advance_search_submit"]; foreach ($ _ POST ["search"] sebagai $ k => $ v) { if (! empty ($ v)) { $ queryCases = array ("with_any_one_of", "with_the_exact_of", "tanpa", "starts_with"); if (in_array ($ k, $ queryCases)) { if (! empty ($ queryCondition)) { $ queryCondition. = "AND"; } lain { $ queryCondition. = "WHERE"; } } beralih ($ k) { case "with_any_one_of": $ with_any_one_of = $ v; $ wordsAry = meledak ("", $ v); $ wordsCount = count ($ wordsAry); untuk ($ i = 0; $ i <$ wordsCount; $ i ++) { if (! empty ($ _ POST ["search"] ["search_in"])) { $ queryCondition. = $ _POST ["search"] ["search_in"]. "LIKE '%". $ wordsAry [$ i]. "% '"; } lain { $ queryCondition. = "title LIKE '". $ wordsAry [$ i]. "% 'ATAU deskripsi SEPERTI'". $ wordsAry [$ i]. "% '"; } if ($ i! = $ wordsCount-1) { $ queryCondition. = "ATAU"; } } istirahat; case "with_the_exact_of": $ with_the_exact_of = $ v; if (! empty ($ _ POST ["search"] ["search_in"])) { $ queryCondition. = $ _POST ["search"] ["search_in"]. "LIKE '%". $ v. "% '"; } lain { $ queryCondition. = "title LIKE '%". $ v. "% 'ATAU deskripsi LIKE'%". $ v. "% '"; } istirahat; case "without": $ tanpa = $ v; if (! empty ($ _ POST ["search"] ["search_in"])) { $ queryCondition. = $ _POST ["search"] ["search_in"]. " TIDAK SUKA '%" . $ v. "% '"; } lain { $ queryCondition. = "title NOT LIKE '%". $ v. "% 'DAN deskripsi TIDAK SUKA'%". $ v. "% '"; } istirahat; case "starts_with": $ starts_with = $ v; if (! empty ($ _ POST ["search"] ["search_in"])) { $ queryCondition. = $ _POST ["search"] ["search_in"]. "LIKE '". $ v. "% '"; } lain { $ queryCondition. = "title LIKE '". $ v. "% 'ATAU deskripsi SEPERTI'". $ v. "% '"; } istirahat; case "search_in": $ search_in = $ _POST ["search"] ["search_in"]; istirahat; } } } } $ orderby = "ORDER BY id desc"; $ sql = "SELECT * FROM links". $ queryCondition; $ result = mysqli_query ($ conn, $ sql); ?>
Tutorial kode PHP ini diterbitkan pada 30 Mei 2016.
