Я создаю приложение для регистрации в турнирах по гольфу и хочу иметь возможность обновлять отдельную запись в базе данных MySQL при щелчке по галочке. Поэтому, когда кто-то проверяет, они нажимают флажок по их имени, и я хочу, чтобы он затем обновил запись базы данных этого человека (установленный в столбце, установленный в 1 для конкретного идентификатора человека), чтобы другие могли видеть, что человек проверяется почти сразу.
Я не уверен, как получить как id, так и значение checkedin для обновления только затронутой записи при щелчке по галочке.
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();
Выходной выход
Просто замените ng-change='processForm(checkedindata)'
по ng-change='processForm(item)'
и в вашем PHP-коде сделать что-то вроде:
$sth = $dbh->prepare("UPDATE golfers SET checkedin=$checkedin->checkedin WHERE gid=$checkedin->gid");