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ọcCách sử dụng JavaScript để tìm kiếm dữ liệu cụ thể trong bảng.
Canada Magazzini Alimentari RiunitiNước ÝBắc NamParis đặc biệt Pháp Name | Country | Alfreds Futterkiste | Germany | Berglunds snabbkop | Sweden | Island Trading | UK | Koniglich Essen | Germany | |
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
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