我正在创建一个高尔夫锦标赛登记应用程序,并且希望能够在单击复选框时更新MySQL数据库中的单个记录。因此,当有人签到时,他们按名称单击复选框,然后我希望它更新该人的数据库记录(签入列设置为1,用于该人的特定ID),以便其他人可以看到该人几乎立即检查。
我不确定如何同时获取id和checkin值,以便在单击复选框时仅更新受影响的记录。
app.js
var checkinApp = angular.module('checkinApp', []);
checkinApp.controller('checkinController', function($scope, $http, $location, $anchorScroll) {
$http.get('lib/api.php').success(function(data) {
$scope.checkindata = data;
});
$scope.processForm = function(checkedindata) {
$http.post('lib/process.php', { gid : checkedindata.gid, checkedin : checkedindata.checkedin })
.then(function(data) {
console.log(data);
})
};
});
HTML /输出
<table class="table table-striped table-responsive">
<tbody>
<tr>
<th>Checked In</th>
<th>First Name</th>
<th>Last Name</th>
<th>Company</th>
<th>Starting Hole</th>
</tr>
<tr ng-repeat="item in checkindata">
<td><input type="checkbox" name="checkedin" ng-model='checkedin' ng-change='processForm(checkedindata)' ng-checked="item.checkedin == 1"/></td>
<td>{{item.fname}}</td>
<td>{{item.lname}}</td>
<td>{{item.cname}}</td>
<td>{{item.hole}}</td>
</tr>
</tbody>
</table>
process.php
<?php
require_once('../includes/cred.php');
$checkedin = $_POST['checkedin'];
$sth = $dbh->prepare("UPDATE golfers SET checkedin=$checkedin");
$sth->execute();
数据库表 DB Table
输出 Output
答案 0 :(得分:1)
只需替换ng-change='processForm(checkedindata)'
ng-change='processForm(item)'
并在您的PHP代码中执行以下操作:
$sth = $dbh->prepare("UPDATE golfers SET checkedin=$checkedin->checkedin WHERE gid=$checkedin->gid");