Hướng dẫn search filter in php & mysql - bộ lọc tìm kiếm trong php & mysql


   
   
 
 
   
   
 
 
   
   
 
 
   
   
 
 
   
   
 


Tìm hiểu cách tạo bảng lọc với JavaScript.


Bảng lọc

Cách sử dụng JavaScript để tìm kiếm dữ liệu cụ thể trong bảng.

TênQuốc gia
Alfreds Futterkistenước Đức
Berglunds SnabbkopThụy Điển
Giao dịch đảoVương quốc Anh
Koniglich Essennước Đức
Berglunds SnabbkopThụy Điển
Giao dịch đảoVương quốc Anh
Koniglich EssenVương quốc Anh
Koniglich EssenCười Bacchus Winecellars

Canada


Magazzini Alimentari Riuniti

Nước Ý

Bắc Nam

Paris đặc biệt

Pháp
 

NameCountry
Alfreds FutterkisteGermany
Berglunds snabbkopSweden
Island TradingUK
Koniglich EssenGermany


Hãy tự mình thử »

Tạo một bảng được lọc

Bắc Nam

Paris đặc biệt
  background-image: url('/css/searchicon.png'); /* Add a search icon to input */
  background-position: 10px 12px; /* Position the search icon */
  background-repeat: no-repeat; /* Do not repeat the icon image */
  width: 100%; /* Full-width */
  font-size: 16px; /* Increase font-size */
  padding: 12px 20px 12px 40px; /* Add some padding */
  border: 1px solid #ddd; /* Add a grey border */
  margin-bottom: 12px; /* Add some space below the input */
}

Pháp
  border-collapse: collapse; /* Collapse borders */
  width: 100%; /* Full-width */
  border: 1px solid #ddd; /* Add a grey border */
  font-size: 18px; /* Increase font-size */
}

Hãy tự mình thử »
  text-align: left; /* Left-align text */
  padding: 12px; /* Add padding */
}

Tạo một bảng được lọc
  /* Add a bottom border to all table rows */
  border-bottom: 1px solid #ddd;
}

Bước 1) Thêm HTML:
  /* Add a grey background color to the table header and on hover */
  background-color: #f1f1f1;
}



Thí dụ

Bắc Nam

Paris đặc biệt
function myFunction() {
  // Declare variables
  var input, filter, table, tr, td, i, txtValue;
  input = document.getElementById("myInput");
  filter = input.value.toUpperCase();
  table = document.getElementById("myTable");
  tr = table.getElementsByTagName("tr");

Pháp
  for (i = 0; i < tr.length; i++) {
    td = tr[i].getElementsByTagName("td")[0];
    if (td) {
      txtValue = td.textContent || td.innerText;
      if (txtValue.toUpperCase().indexOf(filter) > -1) {
        tr[i].style.display = "";
      } else {
        tr[i].style.display = "none";
      }
    }
  }
}

Canada

Magazzini Alimentari Riuniti Remove toUpperCase() if you want to perform a case-sensitive search.

Nước Ý Change tr[i].getElementsByTagName('td')[0] to [1] if you want to search for "Country" (index 1) instead of "Name" (index 0).

Bắc Nam Also check out Filter List.



Tôi đang cố gắng tạo tùy chọn tìm kiếm/lọc trong ứng dụng người hiến máu của mình. Nơi mà nhà tài trợ có thể được tìm kiếm bởi tình dục, tên, nhóm máu hoặc bằng cách chọn cả ba. Đây là mã của tôi

function search_donar($_POST) {

        $by_name = $_POST['by_name'];
        $by_sex = $_POST['by_sex'];
        $by_group = $_POST['by_group'];
        $by_level = $_POST['by_level'];

        $search_query = "SELECT * FROM donar WHERE";
        if($by_name !="") {
          $search_query .= " name='$by_name'";
        }
        if($by_sex !="") {
          $search_query .= " sex='$by_sex'";
        }
        if($by_group !="") {
          $search_query .= " blood_group='$by_group'";
        }
        if($by_level !="") {
          $search_query .= " e_level='$by_level'";
        }
        $search_query;
        $result = mysql_query($search_query);

        return $result;
    }

Và đây là HTML

if(isset($_POST['submit'])) {

    $retrived_result = $donar->search_donar($_POST);

}

   

Lọc đơn hoạt động rất tốt. Nhưng để lọc với tất cả những gì tôi đã sử dụng và, nhưng nó cho tôi lỗi. Có ai giúp được không ?

Cảm ơn trước

Đã hỏi ngày 3 tháng 11 năm 2012 lúc 6:09Nov 3, 2012 at 6:09

3

Giống như tất cả các bài đăng khác, bạn sẽ cần phải nối tất cả các điều kiện với và như vậy. Đây là câu trả lời sạch nhất cho đến nay. Hãy nhớ thoát khỏi chuỗi của bạn mặc dù sử dụng cách mysqli oop thay vì mysql cũ. Chỉ là một gợi ý.

Đây là một ví dụ về một truy vấn điển hình.

Cách chính xác:

SELECT * FROM donar WHERE name='dxenaretionx' AND sex='M';

Cách bạn đang làm nó

SELECT * FROM donar WHERE name='dxenaretionx' sex='M';

Code:

function search_donar($_POST) {
    $by_name = $_POST['by_name'];
    $by_sex = $_POST['by_sex'];
    $by_group = $_POST['by_group'];
    $by_level = $_POST['by_level'];

    //Do real escaping here

    $query = "SELECT * FROM donar";
    $conditions = array();

    if(! empty($by_name)) {
      $conditions[] = "name='$by_name'";
    }
    if(! empty($by_sex)) {
      $conditions[] = "sex='$by_sex'";
    }
    if(! empty($by_group)) {
      $conditions[] = "blood_group='$by_group'";
    }
    if(! empty($by_level)) {
      $conditions[] = "e_level='$by_level'";
    }

    $sql = $query;
    if (count($conditions) > 0) {
      $sql .= " WHERE " . implode(' AND ', $conditions);
    }

    $result = mysql_query($sql);

    return $result;
}

Đã trả lời ngày 3 tháng 11 năm 2012 lúc 7:36Nov 3, 2012 at 7:36

RejinderirejinderiRejinderi

11.5k2 Huy hiệu vàng30 Huy hiệu bạc39 Huy hiệu đồng2 gold badges30 silver badges39 bronze badges

2

Đoạn mã sau:

$search_query = "SELECT * FROM donar WHERE";
if($by_name !="") {
  $search_query .= " name='$by_name'";
}
if($by_sex !="") {
  $search_query .= " sex='$by_sex'";
}

Sản xuất các truy vấn như

SELECT * FROM donar WHERE name='nowak' sex='m'

, không hợp lệ vì không có toán tử logic giữa các mệnh đề. Bạn cần thêm một 'và'. Để đơn giản hóa mã, bạn có thể tạo các điều kiện dưới dạng "True và A và B ...":

$search_query = "SELECT * FROM donar WHERE true";
if($by_name !="") {
  $search_query .= " AND name='$by_name'";
}
if($by_sex !="") {
  $search_query .= " AND sex='$by_sex'";
}
...

Đã trả lời ngày 3 tháng 11 năm 2012 lúc 6:14Nov 3, 2012 at 6:14

Hướng dẫn search filter in php & mysql - bộ lọc tìm kiếm trong php & mysql

John Dvorakjohn DvorakJohn Dvorak

26.3K13 Huy hiệu vàng69 Huy hiệu bạc83 Huy hiệu Đồng13 gold badges69 silver badges83 bronze badges

Có trong mã của bạn có vấn đề trong truy vấn nơi điều kiện. Ở đây truy vấn của bạn sẽ giống như

if(isset($_POST['submit'])) {

    $retrived_result = $donar->search_donar($_POST);

}

   
3 không có
if(isset($_POST['submit'])) {

    $retrived_result = $donar->search_donar($_POST);

}

   
4 để tạo ra điều kiện đúng cách. Vui lòng thử mã như được đưa ra dưới đây.

$search_query = "SELECT * FROM donar";
$query_cond = "";

if($by_name !="") {
      $query_cond .= " name='$by_name'";
}
if($by_sex !="") {

      if(!empty($query_cond)){
          $query_cond .= " AND ";
       }

      $query_cond .= " sex='$by_sex'";
}

if($by_group !="") {

      if(!empty($query_cond)){
          $query_cond .= " AND ";
       }

      $query_cond .= " blood_group='$by_group'";
}

if($by_level !="") {

      if(!empty($query_cond)){
          $query_cond .= " OR ";
       }

      $query_cond .= " e_level='$by_level'";
 }

 if(!empty($query_cond)){
      $query_cond = " Where ".$query_cond;
      $search_query.$query_cond;
 }

Ở đây trong mã đầu tiên, chúng tôi lấy biến

if(isset($_POST['submit'])) {

    $retrived_result = $donar->search_donar($_POST);

}

   
5 trống và tạo điều kiện theo mã. và quản lý toán tử
if(isset($_POST['submit'])) {

    $retrived_result = $donar->search_donar($_POST);

}

   
6 theo đó. Và cuối cùng nếu chúng tôi tìm thấy
if(isset($_POST['submit'])) {

    $retrived_result = $donar->search_donar($_POST);

}

   
5 không trống thì hãy thêm nó vào
if(isset($_POST['submit'])) {

    $retrived_result = $donar->search_donar($_POST);

}

   
8.

Tôi hy vọng nó sẽ hữu ích cho bạn.

cảm ơn

Đã trả lời ngày 3 tháng 11 năm 2012 lúc 7:22Nov 3, 2012 at 7:22

Er. Anurag Jainer. Anurag JainEr. Anurag Jain

1.7521 huy hiệu vàng11 Huy hiệu bạc19 Huy hiệu đồng1 gold badge11 silver badges19 bronze badges

Cố gắng như thế này:

function search_donar($_POST) {

        $by_name = $_POST['by_name'];
        $by_sex = $_POST['by_sex'];
        $by_group = $_POST['by_group'];
        $by_level = $_POST['by_level'];

        $isfirst=0;
        $search_query = "SELECT * FROM donar WHERE";
        if($by_name !="") {

          $search_query .= " name='$by_name'";
          $isfirst=1;
        }
        if($by_sex !="") {
            if($isfirst!=0)
            $search_query .= " AND ";
          $search_query .= " sex='$by_sex'";
          $isfirst=1;
        }
        if($by_group !="") {
            if($isfirst!=0)
            $search_query .= " AND ";
          $search_query .= " blood_group='$by_group'";
          $isfirst=1;
        }
        if($by_level !="") {
            if($isfirst!=0)
            $search_query .= " AND ";
          $search_query .= " e_level='$by_level'";
          $isfirst=1;
        }
        $result = mysql_query($search_query);

        return $result;
    }

Đã trả lời ngày 3 tháng 11 năm 2012 lúc 6:25Nov 3, 2012 at 6:25

Trong đó nơi bạn không sử dụng xác thực, nó được tuyên bố không sử dụng cho dù trường có trống hay không. Hãy thử dưới đây mã, hy vọng nó sẽ hoạt động

if(isset($_POST['submit'])) {

    $retrived_result = $donar->search_donar($_POST);

}

   
0

Đã trả lời ngày 3 tháng 11 năm 2012 lúc 7:30Nov 3, 2012 at 7:30

ArifarifArif

1.2026 huy hiệu vàng29 Huy hiệu bạc59 Huy hiệu đồng6 gold badges29 silver badges59 bronze badges

Tôi sẽ làm theo cách này.

if(isset($_POST['submit'])) {

    $retrived_result = $donar->search_donar($_POST);

}

   
1

Đã trả lời ngày 17 tháng 9 năm 2019 lúc 11:34Sep 17, 2019 at 11:34

SreenathsreenathSreenath

4502 Huy hiệu vàng5 Huy hiệu bạc16 Huy hiệu đồng2 gold badges5 silver badges16 bronze badges

if(isset($_POST['submit'])) {

    $retrived_result = $donar->search_donar($_POST);

}

   
2

Đã trả lời ngày 17 tháng 9 năm 2019 lúc 11:22Sep 17, 2019 at 11:22

Hướng dẫn search filter in php & mysql - bộ lọc tìm kiếm trong php & mysql