繁体   English   中英

在搜索框中,如何根据输入显示来自同一数据库表的两个不同列的数据?

[英]In a search box,how to display data from two different columns of a same database table depending on the input?

我正在使用输入框从数据库中搜索数据。 每当我在输入框中输入内容时,如果找到与给定输入相匹配的内容,我只会从A列获取相对数据预测,而我希望从A列和B列获取预测。如果我从B列输入数据,则进入预测我为该特定行获取列A的值。这两列均来自同一张表。因此,请帮助。HTML:

<div class='col-md-6'>
  <input autocomplete="off" type="text" ng-model="assignName" id="assignName" placeholder="Assigned To" class="form-control" min-length="4" uib-typeahead="as.aName as as.aName for as in assign($viewValue)" typeahead-editable="false">
    <input type="hidden" id="assignId" value="{{assignName.aId}}"></div>

Javascript:

$scope.assign = function(assignName) {
      if (assignName.length >= 2) {
          return servicePOST.send(appConstants.BASE_MS_URL + 'Activity/search_query.php', {
              'assignName': assignName,
              'case': 'getAssign' 
          }).then(function(response) {

              var res = _.map(response, function(value, key, list) {
                  var obj = {
                      'aName': '',
                      'aId': '',
                      'aFname':''
                  };
                  obj.aName = value.user_name;
                  obj.aId = value.id;
                  obj.aFname = value.first_name;
                  return obj;
              });
              return res;
          });
      }
  };

PHP:

$sql="SELECT DISTINCT
users.id,
users.first_name,
users.user_name
FROM
users
WHERE
(users.first_name LIKE '$assignName%' OR users.user_name LIKE '$assignName%')";

样品输出1

如果我从A ..列输入数据,则预测来自表A本身。

样本输出2

如果我从B列中输入数据,我将从A列中仅具有相同行的数据...而我想要从B列中获取。

而不是返回整个对象。 尝试使用过滤器返回与键入的单词有关的特定对象:

就像是:

$scope.assign = function(assignName) {
      if (assignName.length >= 2) {
          return servicePOST.send(appConstants.BASE_MS_URL + 'Activity/search_query.php', {
              'assignName': assignName,
              'case': 'getAssign' 
          }).then(function(response) {

              var res = _.map(response, function(value, key, list) {
                  var obj = {
                      'aName': '',
                      'aId': '',
                      'aFname':''
                  };
                  obj.aName = value.user_name;
                  obj.aId = value.id;
                  obj.aFname = value.first_name;
                  //here $ means search all the properties of object
                  return $filter('filter')(obj , {'$': assignName});
              });
              return res;
          });
      }
  };

而您的HTML可以:

<input autocomplete="off" type="text" ng-model="assignName" id="assignName" placeholder="Assigned To" class="form-control" min-length="4" uib-typeahead="as for as in assign($viewValue)" typeahead-editable="false">

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM