I have just started to learn angular js. I am using codeigniter 2.2. I have one page showing all users in table using angular js. on the same page i have add user form. i want to save the data through form, using angular js. Error printer is : 500 (in red color) *data is not saved. Why this happens, how to solve. Please do needfull. Thanks.
following is my code structure.
demo_angular.js
var angularapp = angular.module('angularapp', []);
// add user
angularapp.controller ('FrmController',function ($scope , $http) {
$scope.errors = [];
$scope.msgs = [];
$scope.addUser = function() {
$scope.errors.splice(0, $scope.errors.length); // remove all error messages
$scope.msgs.splice(0, $scope.msgs.length);
$http.post("../admin/users/add_user", {'fname': $scope.fname, 'lname': $scope.lname, 'uname': $scope.uname,'gender': $scope.gender,'email': $scope.email,'mobile': $scope.mobile,'pass': $scope.pass}
).success(function(data, status, headers, config) {
if (data.msg != '')
{
$scope.msgs.push(data.msg);
$scope.get_users();
}
else
{
$scope.errors.push(data.error);
}
}).error(function(data, status) { // called asynchronously if an error occurs
// or server returns response with an error status.
$scope.errors.push(status);
});
}
});
View:
<form name="form_add" method="post" ng-controller="FrmController">
<ul>
<li style="color:red" ng-repeat="error in errors"> {{ error}} </li>
</ul>
<ul>
<li style="color:green" ng-repeat="msg in msgs"> {{ msg}} </li>
</ul>
<table class="table" cellspacing=10 cellpadding=10>
<tr>
<td>First Name: <input required type="text" ng-pattern="/[a-zA-Z]$/" ng-model="fname" name="fname" id="fname" value=""/><br/>
<span style="color:red" ng-show="form_add.fname.$dirty && form_add.fname.$invalid">
<span ng-show="form_add.fname.$error.required">First Name is required.</span>
<span ng-show="form_add.fname.$error.pattern">Invalid</span>
</span>
</td>
<td>Last Name: <input required type="text" ng-pattern="/[a-zA-Z]$/" ng-model="lname" name="lname" id="lname" value=""/><br/>
<span style="color:red" ng-show="form_add.lname.$dirty && form_add.lname.$invalid">
<span ng-show="form_add.lname.$error.required">Last Name is required.</span>
<span ng-show="form_add.lname.$error.pattern">Invalid</span>
</span>
</td>
<td>User Name: <input required type="text" ng-pattern="/^[a-zA-Z0-9]{6,15}$/" ng-model="uname" name="uname" id="uname" value=""/><br/>
<span style="color:red" ng-show="form_add.uname.$dirty && form_add.uname.$invalid">
<span ng-show="form_add.uname.$error.required">User Name is required.</span>
<span ng-show="form_add.uname.$error.pattern">Invalid: Minimum 6 characters and maximum 15 characters</span>
</span>
</td>
<td width="20%">Gender :<br/> <input type="radio" ng-model="gender" name="gender" id="r1" value="m" checked/>Male
<input type="radio" ng-model="gender" name="gender" id="r2" value="f"/>Female</td>
</tr>
<tr>
<td>Email ID: <input type="text" required ng-pattern="/^[a-z]+[a-z0-9._]+@[a-z]+\.[a-z.]{2,5}$/" ng-model="email" name="email" id="email" value=""/><br/>
<span style="color:red" ng-show="form_add.email.$dirty && form_add.email.$invalid">
<span ng-show="form_add.email.$error.required">Email is required.</span>
<span ng-show="form_add.email.$error.pattern">Invalid email address.</span>
</span>
</td>
<td>Mobile : <input type="text" required ng-model="mobile" ng-pattern="/^[1-9]{1}[0-9]{9}$/" name="mobile" id="mobile" value=""/><br/>
<span style="color:red" ng-show="form_add.mobile.$dirty && form_add.mobile.$invalid">
<span ng-show="form_add.mobile.$error.required">Mobile is required.</span>
<span ng-show="form_add.mobile.$error.pattern">10 digits required</span>
</span>
</td>
<td>Password : <input required type="password" ng-model="pass" name="pass" id="pass" value=""/>
<span style="color:red" ng-show="form_add.mobile.$dirty && form_add.mobile.$invalid">
<span ng-show="form_add.mobile.$error.required">Mobile is required.</span>
<span ng-show="form_add.mobile.$error.pattern">10 digits required</span>
</span>
</td>
<td><button type="button" class="btn btn-primary" ng-click='addUser();'>Save</button></td>
</tr>
</table>
<br/>
</form>
Codeigniter controller function:
public function add_user()
{
$data = json_decode(file_get_contents("php://input"));
// print_r($data); exit;
$my_data['fname']=$data->fname;
$my_data['lname']=$data->lname;
$my_data['uname']=$data->uname;
$my_data['gender']=$data->gender;
$my_data['email']=$data->email;
$my_data['mobile']=$data->mobile;
$my_data['pass']=$data->pass;
$result=$this->vanesh_model->add_user($my_data);
if ($result)
{
$arr = array('msg' => "User Created Successfully!!!", 'error' => '');
$jsn = json_encode($arr);
print_r($jsn);
}
else
{
$arr = array('msg' => "", 'error' => 'Error In inserting record');
$jsn = json_encode($arr);
print_r($jsn);
}
}
model:
public function add_user($my_data)
{
$this->db->insert('user', $my_data);
return $this->db->insert_id();
}
Edited: // view all users
angularapp.controller('angular_controller',function ($scope , $http) {
$scope.orderByField = 'fname';
$scope.get_users = function() {
$http.get("../admin/users/angular_all_users").success(function(data)
{
$scope.allUsers = data;
});
}
});
I think problem is with your
$my_data array creation
Create your array like that in
your controller
And