更新复选框上的单个MySQL记录单击AngularJS

时间:2015-11-03 17:55:57

标签: javascript php mysql angularjs checkbox

我正在创建一个高尔夫锦标赛登记应用程序,并且希望能够在单击复选框时更新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

1 个答案:

答案 0 :(得分:1)

只需替换ng-change='processForm(checkedindata)'

即可

ng-change='processForm(item)'

并在您的PHP代码中执行以下操作:

$sth = $dbh->prepare("UPDATE golfers SET checkedin=$checkedin->checkedin WHERE gid=$checkedin->gid");