Храните данные в базе данных, используя ANGULARJS в Laravel4

0

Я пытаюсь вставить данные в базу данных, используя ANGULARJS в Laravel4. Но данные не попадают в базу данных. Здесь не отображается ошибка. Здесь я также включил цикл foreach в php для отображения данных.

Вот страница просмотра (*. 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>Calculator</h2>
<form action="calculative_page" method="post">
a: <input type="number" ng-model="a" name="a">
b: <input type="number" ng-model="b" name="b">
<button ng-click="addFunc()">Sum</button>
<b>Summation : {{sum}}</b>

<?php
if(isset($select))
{
    foreach ($select as $sel) { ?>
    <input type="text" value="<?php echo $sel->addition ?>"></br>
<?php }} ?>

<br/><br/><br/>
c: <input type="number" ng-model="c" name="c">
d: <input type="number" ng-model="d" name="d">
<button ng-click="subFunc()">Sub</button>
<b>Subtraction: {{sub}}</b>


<?php
if(isset($select))
{
    foreach ($select as $sel) { ?>
    <input type="text" value="<?php echo $sel->subtraction ?>"></br>
<?php }} ?>

</div>
</form>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope,$http) {
    $scope.sum = 0;
    $scope.addFunc = function() {
        $scope.sum = $scope.a+$scope.b;
        $scope.a = $_POST['a'];
        $scope.b = $_POST['b'];
        }
    }

    $scope.sub = 0;
    $scope.subFunc = function() {
        $scope.sub=$scope.c-$scope.d;
        $scope.c = $_POST['c'];
        $scope.d = $_POST['d'];
    }
});
</script>
</body>
</html>

Вот контроллер

<?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 calculative_function(Request $request)
    {
      echo $a_value = $request->a;
      echo $b_value = $request->b;
      echo $c_value = $request->c;
      echo $d_value = $request->d;
      if($a_value)
      {
        $calc = DB::table('calculation')->insert(['a' => $a_value, 'b' => $b_value,'addition'=>$a_value+$b_value]);
        return redirect('homework')->with('status','Done..!');
      }
      else
      {
        $calc = DB::table('calculation')->insert(['c' => $c_value, 'd' => $d_value,'subtraction'=>$c_value-$d_value]);
        return view('homework');
      }

    }

    public function homework_function(Request $request)
    {
      $select = DB::select('select addition, subtraction from calculation');
      return view('homework',['select' => $select]);
      //return view('homework');
    }

И вот route.php

Route::get('/homework', 'NewController@homework_function');

Route::get('/calculative_page', 'NewController@calculative_function');
Теги:
laravel-4

2 ответа

0

И я тоже решил этот вопрос... Теперь данные успешно вставлены в базу данных и отображаются на экране. Проверьте это..! Вот страница просмотра:

<!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/>
Name: <input type="text" ng-model="nam" name="nam"><br/>
Email: <input type="email" ng-model="email" name="email"><br/>
Password: <input type="password" ng-model="password" name="password"><br/>
City: <input type="text" ng-model="city" name="city"><br/>
<button ng-click="addFunc()" type="submit">Sub</button>

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

    $scope.addFunc = 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);
  });

}
});
</script>



</body>
</html>

Вот контроллер:

<?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 calculative_function(Request $request)
    {
      echo $a_value = $request->a;
      echo $b_value = $request->b;
      echo $c_value = $request->c;
      echo $d_value = $request->d;

      if($a_value)
      {
        $calc = DB::table('calculation')->insert(['a' => $a_value, 'b' => $b_value, 'addition'=>$a_value+$b_value]);
      }
      else
      {
        $calc = DB::table('calculation')->insert(['c' => $c_value, 'd' => $d_value,'subtraction'=>$c_value-$d_value]);
      }
    }
    public function homework_function(Request $request)
    {
      $select = DB::select('select * from calculation');
      return view('homework',['select' => $select]);
    }

и маршрут такой же, как и выше.

0

Я решил это сам, изменений в Route.php или в Controller. Единственное изменение - на странице просмотра. Просмотрите код, как показано ниже:

<!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>Calculator</h2>
<form action="calculative_page" method="get">
a: <input type="number" ng-model="a" name="a">
b: <input type="number" ng-model="b" name="b">
<button ng-click="addFunc()">Sum</button>
<b>Summation : {{sum}}</b>
</form>

<br/><br/><br/>
<form action="calculative_page" method="get">
c: <input type="number" ng-model="c" name="c">
d: <input type="number" ng-model="d" name="d">
<button ng-click="subFunc()">Sub</button>
<b>Subtraction: {{sub}}</b>

</div>
</form>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope,$http) {
    $scope.sum = 0;
    $scope.addFunc = function() {
        $scope.sum = $scope.a+$scope.b;
        }
    }

    $scope.sub = 0;
    $scope.subFunc = function() {
        $scope.sub=$scope.c-$scope.d;
    }
});
</script>
<table style="width:100%" border=1>
    <tr>
        <th>Id</th>
        <th>a</th>
        <th>b</th>
        <th>c</th>
        <th>d</th>
        <th>Addition</th>
        <th>Subtraction</th>
    </tr>
<?php
foreach($select as $slct)
{?>
<tr>
    <td><?php echo $slct->id;?></td>
    <td><?php echo $slct->a;?></td>
    <td><?php echo $slct->b;?></td>
    <td><?php echo $slct->c;?></td>
    <td><?php echo $slct->d;?></td>
    <td><?php echo $slct->addition;?></td>
    <td><?php echo $slct->subtraction;?></td>
    <br/>
<?php }
?>
</body>
</html>

Но здесь возникает новая проблема, этот калькулятор не показывает результат добавления/вычитания на экране. Его вывод отображается на экране следующим образом:

Ещё вопросы

Сообщество Overcoder
Наверх
Меню