2017-05-09 103 views
1

我已經創建自定義的管道,從數據庫中篩選我的數據敏感自定義過濾器的情況下

有管

import { Pipe, PipeTransform } from '@angular/core'; 

@Pipe({ 
    name: 'filter' 
}) 
export class FilterPipe implements PipeTransform { 

    transform(aliases: any, term: any): any { 
    // check if search term is undefined 
    if (term === undefined) return aliases; 
    // return updated array 
    return aliases.filter(function(alias){ 
     return alias.local_part.includes(term) || alias.domain.includes(term); 
    }); 
    } 

} 

,並有我的搜索輸入

<form id="filter"> 
      <div class="input-group custom-search-form"> 
       <input type="text" placeholder="Search" class="form-control" [(ngModel)]="term" name="filter"> 
       <span class="input-group-btn"> 
      <button class="btn btn-primary" type="button"> 
      <i class="fa fa-search"></i> 
       </button> 
       </span> 
      </div> 
     </form> 

它工作正常,但我有我的數據庫記錄像aaa,Abb,AbbB,cCc。

當我在搜索輸入中輸入內容時,它只返回小寫或大寫的元素。

例如:搜索 - > AAA 迴歸AAA而不是AAA和AAA

我應該如何改變它,實現它?

回答

1

更改管道下方

private transform(aliases: any, term: any): any { 
     let filter; 
     let newValue; 
     // check if search term is undefined 
     if (term === undefined) { 
      return aliases; 
     } else if (term) { 
      filter = term.toLocaleLowerCase(); 
     } 

     if (filter && aliases) { 
      newValue = aliases.filter((alias) => alias.local_part.toLocaleLowerCase().indexOf(filter) !== -1 || alias.domain.toLocaleLowerCase().indexOf(filter) !== -1); 
     } else { 
      newValue = aliases; 
     } 
     // return updated array 
     return newValue; 
    } 
+0

作品像魅力謝謝 – Defus

1

在服務器端邏輯中,當您搜索/比較它們時,將這兩個術語都變爲小寫或大寫。例如,如果您的服務器端語言是PHP,則使用strtolower();

問題是,如果你的數據庫中的數據是AaA。我在你的搜索框aaa寫:

  • 我應該有一個結果的數據AaA
  • 沒有邏輯可以隨機把aaaAaA

所以我們只是把一切aaaAAA

繼PHP的例子,我們可以這樣做:

if (strtolower($_POST['search_data']) == strtolower($db_data) { 
    // do something 
} 

更新1:

或多或少,與您的代碼,這可能就像這樣:

<?php 
include ('db.php'); 

$sql = "SELECT * FROM aliases"; 

$result = $conn->query($sql); 
if($result->num_rows > 0){ 
    $data = array(); 
    while($row = $result->fetch_assoc()) { 
    if (strtolower($_POST['search_data']) == strtolower($row['searched_field']) 
    { 
     $data[] = $row; 
    } 

    } 
    echo json_encode($data); 
} else { 
    echo "0"; 
} 
$conn->close(); 
?> 

在這種情況下,我們只添加$data與我們的搜索值相匹配的數據。我假定搜索字段名爲search_data,並且表中的列名爲searched_field

+0

給出還有就是我select.php https://pastebin.com/J9E7726E我應該在哪裏放呢? – Defus

+0

@Defus我更新了我的答案。您必須通過POST以'search_data'值(輸入搜索)的形式發送,並且它將返回與該值匹配的行。 – SrAxi

+0

但我怎樣才能發送角2? – Defus