Угловая вставка данных в MySQL

0

У меня возникла проблема с введением данных в базу данных MySql с использованием угловых.

Вот мой HTML файл

<!DOCTYPE html>
<html ng-app>
<head>
<title>AngularJs Post Example: DevZone.co.in </title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
    <style>
        #dv1{
            border:1px solid #DBDCE9; margin-left:auto;
            margin-right:auto;width:220px;
            border-radius:7px;padding: 25px;
        }

        .info{
            border: 1px solid;margin: 10px 0px;
            padding:10px;color: #00529B;
            background-color: #BDE5F8;list-style: none;
        }
        .err{
            border: 1px solid;  margin: 10px 0px;
            padding:10px;  color: #D8000C;
            background-color: #FFBABA;   list-style: none;
        }
    </style>
</head>
<body>
    <div id='dv1'>
        <form ng-controller="FrmController">
            <ul>
                <li class="err" ng-repeat="error in errors"> {{ error}} </li>
            </ul>
            <ul>
                <li class="info" ng-repeat="msg in msgs"> {{ msg}} </li>
            </ul>
            <h2>Sigup Form</h2>
            <div>
                <label>Name</label> 
                <input type="text" ng-model="username" placeholder="User Name" style='margin-left: 22px;'> 
            </div>
            <div>
                <label>Email</label>
                <input type="text" ng-model="useremail" placeholder="Email" style='margin-left: 22px;'> 
            </div>
            <div>
                <label>Password</label>
                <input type="password" ng-model="userpassword" placeholder="Password">
            </div>
            <button ng-click='SignUp();' style='margin-left: 63px;margin-top:10px'>SignUp</button>
        </form>
    </div>

    <script type="text/javascript">
        function FrmController($scope, $http) {
            $scope.errors = [];
            $scope.msgs = [];

            $scope.SignUp = function() {

                $scope.errors.splice(0, $scope.errors.length); // remove all error messages
                $scope.msgs.splice(0, $scope.msgs.length);


                $http.post('http://bloom.net.pl/insertangular/insert.php', {'uname': $scope.username, 'pswd': $scope.userpassword, 'email': $scope.useremail}
                ).success(function(data, status, headers, config) {
                    if (data.msg != '')
                    {
                        $scope.msgs.push(data.msg);
                    }
                    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);
                });
            }
        }
    </script>

</body>

и вот мой сценарий вставки

<?php
$data = json_decode(file_get_contents("php://input"));
$usrname = mysql_real_escape_string($data->uname);
$upswd = mysql_real_escape_string($data->pswd);
$uemail = mysql_real_escape_string($data->email);

$con = mysql_connect("localhost","testvip1_kol","MoLg67mf");
mysql_select_db("testvip1_kol");
mysql_query("SET NAMES 'utf8'");



$qry_em = 'select * from users where email ="' . $uemail . '"';
$qry_res = mysql_query($qry_em);
$res = mysql_fetch_assoc($qry_res);

if ($res['cnt'] == 0) {
$qry = 'INSERT INTO users (name,pass,email) values ("' . $usrname . '","' . $upswd . '","' . $uemail . '")';
$qry_res = mysql_query($qry);
if ($qry_res) {
    $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);
}
} else {
$arr = array('msg' => "", 'error' => 'User Already exists with same     email');
$jsn = json_encode($arr);
print_r($jsn);
}

?>

Проблема в том, что я могу вставить в мои пустые строки в БД. Можете ли вы представить себе, как исправить это?

Теги:

3 ответа

0

Этот код, вероятно, должен сделать трюк для вас. Поскольку это всегда для меня

<div  ng-controller="FrmController">
<form ng-submit="signUp(user)"> <!-- You can also add formname.$valid for extra validation-->
        <ul>
            <li class="err" ng-repeat="error in errors"> {{ error}} </li>
        </ul>
        <ul>
            <li class="info" ng-repeat="msg in msgs"> {{ msg}} </li>
        </ul>
        <h2>Sigup Form</h2>
        <div>
            <label>Name</label> 
            <input type="text" ng-model="user.username" placeholder="User Name" style='margin-left: 22px;'> 
        </div>
        <div>
            <label>Email</label>
            <input type="text" ng-model="user.email" placeholder="Email" style='margin-left: 22px;'> 
        </div>
        <div>
            <label>Password</label>
            <input type="password" ng-model="user.password" placeholder="Password">
        </div>
        <button type="submit" style='margin-left: 63px;margin-top:10px'>SignUp</button>
    </form>
</div>

Функция регистрации в контроллере

$scope.SignUp = function(data) {
 var $data = angular.toJson(data);
 $http.post('url to the file',$data).then(function(data){
   console.log(data.data);
});
}

В вашем файле PHP

$data = json_decode(file_get_contents("php://input"));
echo json_encode($data);

Вы увидите необходимые данные на консоли, а затем вы можете сделать простой SQL-запрос, чтобы вставить его в базу данных.

0

Вы можете запретить пользователю отправлять форму, если какое-либо поле пусто. Добавить атрибут, required для ввода элементов, добавить тип кнопки и добавить ng-submit в элемент формы, чтобы вызвать вызов метода при отправке не на клик:

<form ng-controller="FrmController" ng-submit="SignUp()">
  <ul>
    <li class="err" ng-repeat="error in errors"> {{ error}} </li>
  </ul>
  <ul>
    <li class="info" ng-repeat="msg in msgs"> {{ msg}} </li>
  </ul>
  <h2>Sigup Form</h2>
  <div>
    <label>Name</label>
    <input type="text" ng-model="username" placeholder="User Name" style='margin-left: 22px;' required>
  </div>
  <div>
    <label>Email</label>
    <input type="text" ng-model="useremail" placeholder="Email" style='margin-left: 22px;' required>
  </div>
  <div>
    <label>Password</label>
    <input type="password" ng-model="userpassword" placeholder="Password" required>
  </div>
  <button type='submit' style='margin-left: 63px;margin-top:10px'>SignUp</button>
</form>

Вы можете добавить дополнительную проверку внутри метода SignUp и отправить данные только тогда, когда все поля имеют значение.

Изменение: Добавить заголовок типа контента:

$http({
      method: 'post',
      url: 'http://bloom.net.pl/insertangular/insert.php',
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      },
      data: {
        'uname': $scope.username,
        'pswd': $scope.userpassword,
        'email': $scope.useremail
      }).success(function(data, status, headers, config) {
      if (data.msg != '') {
        $scope.msgs.push(data.msg);
      } 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);
    });
  • 0
    Поля имеют значение, проблема между соединением между двумя файлами. использование оповещения ($ scope.username,); Я могу отобразить это значение поля. Переменные в php-файле не имеют значений.
  • 0
    Это решение не вводит пустую строку даже
0

Поля имеют значение проблемы между соединением между 2 файлами.

используя alert ($ scope.username,);

Я могу отобразить это значение поля. Переменные в php файле не имеют значений.

Ещё вопросы

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