我已经看了很多,但仍然没有找到我问题的答案。我已经接近了,但是我认为这是我一个人可以得到的。
我有一个包含不同年份表的数据库,如下所示:
year_2016
,
year_2017
,
year_2018
,
等等...
我正在使用PHP和MySQL查询这些表,并使用AngularJS在HTML中显示它们。
这是我的 HTML :
<div id="main" ng-controller="MyController">
<input type="text" placeholder="Search" autofocus ng-model="query" />
<input type="text" placeholder="Year" ng-model="year" ng-blur="sendData()" />
<div id="db-results" ng-show="query">
<p><span>Searching for: "{{ query }}"</span></p>
<p>{{ filtered.length }} results</p>
<div class="container table">
<div class="row" ng-repeat="item in items | limitTo : 100 | filter : query as filtered">
<div class="col bg-info text-light rounded-left">{{ item.dir }}</div>
<div class="col bg-warning text-dark">{{ item.index }}</div>
<div class="col-lg-6 bg-light text-dark">{{ item.text }}</div>
</div><!-- row -->
</div><!-- table -->
</div><!-- db-results -->
</div><!-- main -->
还有我的 Angular :
var myControllers = angular.module('myControllers', []);
myControllers.controller('MyController',
function MyController($scope, $http) {
$scope.year = 2018;
$scope.sendData = (function () {
var data = $.param({
year: $scope.year
});
var config = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8;'
}
};
var postURL = 'mysql_conn.php';
$http.post(postURL, data, config)
.then(
function(response){
console.log(data);
console.log('post_year=' + response.data.year);
$scope.items = response.data.records;
},
function(response){
console.log('failure ' + response);
});
})();
});
最后, PHP :
<?php
header("Access-Control-Allow-Origin: *");
$request = json_decode(file_get_contents('php://input', true));
$year = $request->year;
// $year = 2018;
$conn = new mysqli("SERVER", "USER", "PASSWORD", "DATABASE");
$result = $conn->query("SELECT * FROM year_" . $year . " LIMIT 100;");
$output = "";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($output != "") {$output .= ",";}
$output .= '{"dir":"' . $rs["dir_index"] . '",';
$output .= '"index":"' . $rs["sub_index"] . '",';
$output .= '"text":"' . $rs["text"] . '"}';
}
$output ='{"records":[' . $output . '], "year": ' . $year . '}';
$conn->close();
echo($output);
?>
我可以在PHP中静态设置$year
变量,它查询与该年份相对应的表中的所有内容,然后在我的实际网页上键入搜索,并相应地过滤记录。这么多。
我想做的,但现在还不能做的是,在year输入框中输入year,然后让PHP重新查询适当的表并显示结果。换句话说,我希望年份输入框能够响应。 PHP不是动态的,因此我认为Angular / AJAX也许可以在这里为我提供帮助。
在Angular代码中,我使用http.post
将$scope.year
的值发送给PHP,然后查询相应的表。至少,这就是我想要做的。没用在PHP中,输出JSON的一部分是$year
变量,该变量应与$scope.year
模型相同,但是当我将其打印到Angular的控制台中时,它将返回undefined
。我还使用相同的POST请求从数据库中获取PHP查询的数据(这可行)。
我也尝试过使用单独的GET和POST请求,但这不起作用。
谢谢!