简体   繁体   English

尝试使用Angular.js更新数据库中的数据

[英]trying to update data in databse using Angular.js

I am trying to update data in the database using angular in Laravel 4 but the data is'nt get inserted, and a blank value is getting stored in to the database. 我试图在Laravel 4中使用angular更新数据库中的数据,但是没有插入数据,并且将一个空白值存储在数据库中。 Please find the bug and try to insert the passed value insteed of blank value. 请找到错误,然后尝试插入传递的空白值指示的值。

JS File JS文件

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
  $scope.updateFunction = function(updateId) {
    $http.get("http://localhost/crud/public/registration_update_page/" + updateId).then(function successCallback(response) {
      console.log('successCallback');
      console.log(response);
      alert("Row with id " + updateId + ", updated..!");
    }, function errorCallback(response) {
      console.log('errorCallback');
      console.log(response);
    });
  };
});

.PHP File .PHP文件

<!DOCTYPE html>
<html>
<head>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>

</head>
<body ng-app="myApp" ng-controller="myCtrl">

<h2>Registration</h2><br/>
<table border=1>
<tr><td>Name:</td><td><input type="text" ng-model="nam" name="nam"><br/></td></tr>
<tr><td>Email:</td><td><input type="email" ng-model="email" name="email"><br/></td></tr>
<tr><td>Password:</td><td><input type="password" ng-model="password" name="password"><br/></td></tr>
<tr><td>City:</td><td><input type="text" ng-model="city" name="city"><br/></td></tr>
<tr><td><button ng-click="insertFunc()" type="submit">Submit</button></td></tr>
</table>

</div>
</form>

<table style="width:100%" border=1>
  <tr>
    <th>Id</th>
    <th>Name</th>
    <th>Email</th>
    <th>Password</th>
    <th>City</th>
    <th>Update</th>
    <th>Delete</th>

  </tr>

  <tr ng-init='show = true' ng-repeat="x in query" ng-hide='!show'></div>
    <!-- ng-hide will work when it is true in condition -->
    <td>{{x.id}}</td>
    <td><input type="text" value="{{x.name}}" name="edited_name"></td>
    <td><input type="text" value="{{x.email}}" name="edited_email"></td>
    <td><input type="text" value="{{x.password}}" name="edited_password"></td>
    <td><input type="text" value="{{x.city}}" name="edited_city"></td><br/>
    <td><input type="submit" ng-click="updateFunction(x.id);" value="Update"></td>
    <td><button ng-click="deleteFunction(x.id);show = false">Delete</button></td>

    <!-- !show==false means !false i.e., true -->
  </tr><div>
</body>
</html>

Controller 控制者

<?php

namespace App\Http\Controllers;

use App\Http\Requests;
use Illuminate\Http\Request;
use DB;
use Session;
use Redirect;

class NewController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }
public function registration_update_function(Request $request)
    {
      $updateId = $request->id;
      $edited_name = $request->edited_name;
      $edited_city = $request->edited_city;
      $users1 = DB::table('angular_registration')->where('id', '=', $updateId)->update(['city' => $edited_city]);
    }
}

Try with post method and following code and pass full x object / scope and x.id in this function updateFunction(x, x.id); 尝试使用post方法和以下代码,并在此函数中传递完整的x对象/范围和x.id。updateFunction(x,x.id);

Angular Code 角度代码

var req = {
 method: 'POST',
 url: 'http://localhost/crud/public/registration_update_page/',
 data: { x: x, id = x.id }
}

$http(req).then(function(){
   //Success
}, function(){

});

On server side PHP 在服务器端PHP

print_r($_POST);

I solved this problem myself This works for ANGULAR.JS with Laravel 4 to run insert,update,delete and select queries of the MySql DataBase. 我自己解决了这个问题。这适用于Laravel 4的ANGULAR.JS,用于运行插入,更新,删除和选择MySql数据库的查询。

VIEW 视图

<!DOCTYPE html>
<html>
<head>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>

</head>
<body ng-app="myApp" ng-controller="myCtrl">

<h2>Registration</h2><br/>
<table border=1>
<tr><td>Name:</td><td><input type="text" ng-model="nam" name="nam"><br/></td></tr>
<tr><td>Email:</td><td><input type="email" ng-model="email" name="email"><br/></td></tr>
<tr><td>Password:</td><td><input type="password" ng-model="password" name="password"><br/></td></tr>
<tr><td>City:</td><td><input type="text" ng-model="city" name="city"><br/></td></tr>
<tr><td><button ng-click="insertFunc()" type="submit">Submit</button></td></tr>
</table>

</div>
</form>

<table style="width:100%" border=1>
  <tr>
    <th>Id</th>
    <th>Name</th>
    <th>Email</th>
    <th>Password</th>
    <th>City</th>
    <th>Update</th>
    <th>Delete</th>

  </tr>

  <tr ng-init='show = true' ng-repeat="x in query" ng-hide='!show'></div>
    <!-- ng-hide will work when it is true in condition -->
    <td>{{x.id}}</td>
    <td>{{x.name}}<input type="text" ng-model="edited_name"></td>
    <td>{{x.email}}<input type="text" ng-model="edited_email"></td>
    <td>{{x.password}}<input type="text" ng-model="edited_password"></td>
    <td>{{x.city}}<input type="text" ng-model="edited_city"></td><br/>
    <td><input type="submit" ng-click="updateFunction(x.id,edited_name,edited_email,edited_password,edited_city);" value="Update"></td>
    <td><button ng-click="deleteFunction(x.id);show = false">Delete</button></td>

    <!-- !show==false means !false i.e., true -->
  </tr><div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope,$http) {

   $scope.deleteFunction = function(deleteId)
          {
            $http.get("http://localhost/crud/public/registration_delete_page/"+deleteId)
            .then(function successCallback(response)
            {
              console.log('successCallback');
              console.log(response);
              alert("Row with id "+deleteId+", deleted..!");
            },
            function errorCallback(response)
            {
              console.log('errorCallback');
              console.log(response);
            });
          };
    $scope.updateFunction = function(updateId,edited_name,edited_email,edited_password,edited_city)
          {
            $http.get("http://localhost/crud/public/registration_update_page/"+updateId+"/"+edited_name+"/"+edited_email+"/"+edited_password+"/"+edited_city)
            .then(function successCallback(response)
            {
              //$scope.edited_name = edited_name;
              console.log('successCallback');
              console.log(response);
              alert("Row with id "+updateId+", updated..!");
            },
            function errorCallback(response)
            {
              console.log('errorCallback');
              console.log(response);
            });

          };

    $scope.insertFunc = function() {
        $http({
          method  : 'POST',
          url     : 'http://localhost/crud/public/registration_data_page',
          data    : {nam:$scope.nam,email:$scope.email,password:$scope.password,city:$scope.city}
         }).then(function successCallback(response) {
          console.log('successCallback');
          console.log(response);

  }, function errorCallback(response) {
            console.log('errorCallback');
          console.log(response);
  });

}

$http({method:'GET', url:'http://localhost/crud/public/registration_json_page'}).success(function(response){
$scope.query = response;
});
});
</script>

</body>
</html>

Controller 控制者

<?php

namespace App\Http\Controllers;

use App\Http\Requests;
use Illuminate\Http\Request;
use DB;
use Session;
use Redirect;

class NewController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }
public function registration_data_function(Request $request)
    {
      echo $nam_value = $request->nam;
      echo $email_value = $request->email;
      echo $password_value = $request->password;
      echo $city_value = $request->city;

      $reg = DB::table('angular_registration')->insert(['name' => $nam_value, 'email' => $email_value, 'password'=>$password_value, 'city'=>$city_value]);
    }

    public function registration_json_function(Request $request)
    {
      $query = DB::select('select * from angular_registration');
      return response($query);
    }

    public function registration_function(Request $request)
    {
      $query = DB::select('select * from angular_registration');
      return view('registration');
    }

    public function registration_delete_function(Request $request)
    {
      $deleteId = $request->id;
      return $users = DB::table('angular_registration')->where('id', '=', $deleteId)->delete(); 
    }

    public function registration_update_function(Request $request)
    {
      echo $updateId = $request->id;
      echo $edited_name = $request->edited_name;
      echo $edited_email = $request->edited_email;
      echo $edited_password = $request->edited_password;
      echo $edited_city = $request->edited_city;

      $users1 = DB::table('angular_registration')->where('id', '=', $updateId)->update(['name' => $edited_name,'email' => $edited_email,'password' => $edited_password,'city' => $edited_city]);
    }
}

ROUTE 路线

<?php

    /*
    |--------------------------------------------------------------------------
    | Application Routes
    |--------------------------------------------------------------------------
    |
    | Here is where you can register all of the routes for an application.
    | It's a breeze. Simply tell Laravel the URIs it should respond to
    | and give it the controller to call when that URI is requested.
    |
    */

    Route::get('/', function () {
        return view('welcome');
    });

    Route::auth();

Route::get('/registration', 'NewController@registration_function');

Route::post('/registration_data_page', 'NewController@registration_data_function');

Route::get('/registration_json_page', 'NewController@registration_json_function');

Route::get('registration_delete_page/{id}', 'NewController@registration_delete_function');

Route::get('registration_update_page/{id}/{edited_name}/{edited_email}/{edited_password}/{edited_city}', 'NewController@registration_update_function');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM