使用MySQL数据进行Ng-repeat过滤搜索

时间:2017-01-03 21:18:28

标签: javascript php mysql angularjs angularjs-ng-repeat

我正在尝试使用ng-repeat和来自mysql数据库的数据填充div标签。我想使用ng-repeat,因为我想稍后应用过滤器。 我的问题是组合angular和sql。

我希望html做这样的事情

 <div>
 <input type="text" ng-model="filterText" class="search" placeholder="Filter ...">
 <p ng-repeat="data in datalist | filter : filterText">{{data}}</p>
 </div> 

我的控制器中有以下功能:

 getData();
 function getData() {
 $http.post("/server/get_data.php").success(function(data){
  $scope.datalist = data; // the above mentioned datalist
});
 };

我接触了get_data.php中的sql检索,如下所示,但它给了我输出我不明白:

 <?php 
 require_once 'db_connection.php';

    $query = "SELECT * FROM datatable";
    $result = mysqli_query($connection, $query);
    if (!$result) {
      die("Database query failed.");
    }
    echo $json_response = json_encode($result);
 ?>

回声给我以下内容:{"current_field":null,"field_count":null,"lengths":null,"num_rows":null,"type":null}。因此,ng-repeat不会运行。

让我们说我的数据库有“id”和“name”列。如何获得正确的查询/值以使ng-repeat过滤器起作用?

或者,这是非常相似的,但我不明白如何使if(isset($_GET[ ... ]))起作用。对于这种方法,我需要输入什么? php之前的步骤基本相同或是?

http://angularcode.com/simple-task-manager-application-using-angularjs-php-mysql/       

  $query="INSERT INTO tasks(task,status,created_at)  VALUES ('$task', '$status', '$created')";
  $result = $mysqli->query($query) or die($mysqli->error.__LINE__);

  $result = $mysqli->affected_rows;

  echo $json_response = json_encode($result);
  }
  ?>

1 个答案:

答案 0 :(得分:1)

你的{{data}}实际上是一个对象(你的sql表中的一行),你可以使用

<p ng-repeat="data in datalist | filter : filterText">{{data.myfield}}</p>

并将myfield替换为您要显示的字段。

还有一件事,你实际上并没有从数据库中获取$result,请参阅  mysqli_fetch_array