草庐IT

php - 在angular js中获取php的数组数据并且无法更新php中的数据

coder 2024-01-01 原文

我是angular js的新手,我想更新我无法更新数据的注册表数据以及如何在angular js的脚本文件中打印php的数组值。请期待上面的代码并提供所需的解决方案。

获取数据.php:

<?php
    include_once('db.php');
    if(isset($_GET['action'])){
        if($_GET['action']=='add_data'){
          add_data();
        }
        else if($_GET['action']=='get_data'){
          get_data();
        }
        else if($_GET['action']=='delete_data'){
            delete_data();
        }
        else if($_GET['action']=='edit_data'){
            edit_data();
        }
        else if($_GET['action']=='update_data'){
            update_data();
        }
    }

    /*Insert Data*/
    function add_data(){    
        $data = json_decode(file_get_contents("php://input"));
        //print_r($data);
        $fname  = $data->fname;
        $lname  = $data->lname;
        $gender = $data->gender;
        $state  = $data->state;
        $query="INSERT INTO registration 
        (reg_fname, reg_lname, reg_gender, reg_state, reg_id)
         values ('".$fname."', '".$lname."', '".$gender."', '".$state."', NULL)";
        $result = mysql_query($query);
        //echo $query;
        if ($result) {
        $arr = array('msg' => "Data Added Successfully!!!", 'error' => '');
        $jsn = json_encode($arr);
        //print_r($jsn);
        } 
        else{
            $arr = array('msg' => "", 'error' => 'Error in inserting records');
            $jsn = json_encode($arr);
            // print_r($jsn);
        }
    }

    /*View dATA*/
    function get_data(){
        $query=mysql_query("SELECT * FROM registration");
        $data = array();
        while($row=mysql_fetch_array($query)){
            $data[] = array(
                "userid" =>   $row['reg_id'],
                "fname"  =>   $row['reg_fname'],
                "lname"  =>   $row['reg_lname'],
                "gender" =>   $row['reg_gender'],
                "state"  =>   $row['reg_state'],
             );
        }
           //print_r($row);
            print_r(json_encode($data));
            return json_encode($data);
    }

    /*dELETE dATA*/
    function delete_data(){
        $data = json_decode(file_get_contents("php://input")); 
        $index = $data->userid; 
        //print_r($data) ;
        $del = mysql_query("DELETE FROM registration WHERE reg_id = ".$index);
        if($del)
        return true;
        return false; 
    }

    /*Edit Data*/
    function edit_data(){
        $data  = json_decode(file_get_contents("php://input"));
        $index = $data->userid;         
        $qry   = mysql_query("SELECT * FROM registration WHERE reg_id = ".$index);
        $data = array();
        while($row=mysql_fetch_array($qry)){
            $data[]=array(
            "userid" =>$row['reg_id'],
            "fname"  =>$row['reg_fname'],
            "lname"  =>$row['reg_lname'],
            "gender" =>$row['reg_gender'],
            "state"  =>$row['reg_state']
            );
        }
        print_r(json_encode($data));
        return json_encode($data);
    }

    /*update Data*/
    function update_data(){
        $data=json_decode(file_get_contents("php://input"));
        $index  = $data->userid;
        $fname  = $data->fname;
        $lname  = $data->lname;
        $gender = $data->gender;
        $state  = $data->state;
        $query=mysql_query("Update registration SET
                reg_fname='".$fname."',reg_lname='".$lname."',
                reg_gender='".$gender."',reg_state='".$state."' 
                where reg_id=".$index);
        if ($query){
            $arr = array('msg' => "Product Updated Successfully!!!", 'error' => '');
            $jsn = json_encode($arr);
            // print_r($jsn);
        } else {
            $arr = array('msg' => "", 'error' => 'Error In Updating record');
            $jsn = json_encode($arr);
            // print_r($jsn);
        }
    }   
?>

controller.js:

var regform = angular.module('regform',[]);
regform.controller('formController',function($scope,$http){
    $scope.submit=true;
    $scope.reset=true;
    $scope.states = [
        {id:1,name:'Gujarat'},
        {id:2,name:'Haryana'},
        {id:3,name:'MP'},
    ];

    $scope.get_data = function(){
        $http.get('fetchdata.php?action=get_data').success(function(data){
            $scope.fields = data
            return $scope;
        });
    }

    $scope.Save = function(){
        $http.post('fetchdata.php?action=add_data',
            {
                'userid': $scope.userid,
                'fname' : $scope.fname,
                'lname' : $scope.lname,
                'gender': $scope.gender,
                'state' : $scope.selectedState,
            }
        )
        .success(function (data, status, headers, config){
            //alert(JSON.stringify(data));
            //console.log("Data added successfully");
            $scope.get_data();
            //alert("Data added Successfully");
       });
    }

    $scope.delete_id = function(index){
       $http.post('fetchdata.php?action=delete_data',{
                'userid' : index
        })
        .success(function (data, status, headers, config) { 
            $scope.get_data();
        })
    }

    /* Edit data*/
   $scope.edit_id = function(index){
        $scope.update=true;
        $scope.cancel=true;
        $scope.submit=false;
        $scope.reset=false;

        $http.post('fetchdata.php?action=edit_data', {
            'userid' : index
        }) 
        .success(function (data, status, headers, config) { 
            //alert(data[0]["userid"]);
            //alert(JSON.stringify(data));
            $scope.userid = data[0]["userid"];
            $scope.fname  = data[0]["fname"];
            $scope.lname  = data[0]["lname"];
            $scope.gender = data[0]["gender"];
            $scope.selectedState  = parseInt(data[0]["state"]); 
        })
        .error(function(data, status, headers, config){

        });
    }

    $scope.Update = function(){
        $http.post('db.php?action=update_data', {
            'userid' : $scope.userid,
            'fname'  : $scope.fname, 
            'lname'  : $scope.lname, 
            'gender' : $scope.gender,
            'state'  : $scope.selectedState
        })
        .success(function (data, status, headers, config) {
                //alert(JSON.stringify(data));
                $scope.get_data();
                return $scope;
        })
        .error(function(data, status, headers, config){

        });
    }
});

表单.html

<html ng-app="regform">
    <head>
        <title>Registration Form</title>
        <script src="angular.min.js"></script>
        <script src="controller.js">
            /*var regform = angular.module('regform',[]);
            regform.controller('formController',function($scope){
                $scope.states = [
                        {id:1,name:'Gujarat'},
                        {id:2,name:'Haryana'},
                        {id:3,name:'MP'},
                        ];

                $scope.formfields =[];
                $scope.Save = function(form){
                  $scope.formfields.push({fname: $scope.fname,lname: $scope.lname,gender: $scope.gender, state:$scope.state});  
                }


            });*/
        </script>
    </head>
    <body ng-controller="formController">
        <form name="userForm">
        <table>
            <tr>
                <td>
                    FirstName:
                </td>
                <td>
                    <input type="hidden" ng-model="userid" name="userid">
                    <input ng-model="fname" type="text" required ng-minlength="4">
                    <span ng-show="userForm.fname.$error.required">
                         This is a required field
                    </span>
                </td>
            </tr>
            <tr>
                <td>
                    LastName:
                </td>
                <td>
                    <input ng-model="lname" type="text">
                </td>
            </tr>
            <tr>
                <td>
                    Gender:
                </td>
                <td>
                    <input type="radio" ng-model="gender" value="male"   id="male" checked="checked">Male
                    <input type="radio" ng-model="gender" value="female" id="female">Female
                </td>
            </tr>
            <tr>
                <td>
                    State:
                </td>
                <td>
                <select id="stateform" ng-model="selectedState" ng-options="state.id as state.name for state in states">
                     <option value="">- - Make Selection - -</option>
                </select>
                </td>
            </tr>
            <tr>
                <td>
                    <input name="check" id="check" type="checkbox" ng-model="accept" required />Accept
                </td>
            </tr>
            <tr>
                <td>
                     <button ng-show="submit" ng-click="Save()">Save</button>
                     <button ng-show="update" ng-click="Update()">Update</button>
                </td>
                <td>
                     <button ng-show="reset" ng-click="Reset()" type="reset">Reset</button>
                     <button ng-show="cancel" ng-click="clear()">Cancel</button>
                </td>
            </tr>
        </table>
            <br>
            <br>
            <table border="1">
                <thead>
                   <th>UserId</th>
                   <th>FirstName</th>
                   <th>LastName</th>
                   <th>Gender</th>
                   <th>State</th>
                   <th>Action</th>
                </thead>
                <tbody ng-init="get_data()">
                    <tr ng-repeat="field in fields">
                    <td>{{field.userid }}</td>
                    <td>{{field.fname | uppercase}}</td>
                    <td>{{field.lname}}</td>
                    <td>{{field.gender}}</td>
                    <td>{{field.state}}</td>
                    <td><a id="edit" href="" ng-click="edit_id(field.userid)">Edit</a>
                    |&nbsp;<a id="delete" href="" ng-click="delete_id(field.userid)" ng-confirm="Are you sure?">Delete</a></td>
                    </tr>
                </tbody>
            </table>
        </form>
    </body>
</html>

最佳答案

请查看以下我试图解决您的问题的更改。

1) 使用下面的 HTML 代码列出状态值

<select id="stateform" ng-model="selectedState" ng-options="state.id as state.name for state in states"> </select>

我在这里使用 ng-model selectedState默认情况下将使用 $scope.selectedState = 0; 设置为 0(进行选择)在 angularJS 函数中。

2) 要在加载时和插入/更新后显示数据,返回 $scope,如下所示

 $scope.get_data = function(){
    $http.get('update-data.php?action=get_data').success(function(data){

        $scope.fields = data;
        return $scope;
    });
}

3) 无论您在哪里使用 $scope.state.name , 使用 $scope.selectedState当我改变 ng-model 时。

下面是完整的 AngularJS 代码

var regform = angular.module('regform',[]);
regform.controller('formController',function($scope,$http){
$scope.submit=true;
$scope.reset=true;
$scope.selectedState = 0;
$scope.states = [
        {id:0,name:'Make selection'},
        {id:1,name:'Gujarat'},
        {id:2,name:'Haryana'},
        {id:3,name:'MP'},
        ];

$scope.get_data = function(){
    $http.get('update-data.php?action=get_data').success(function(data){

        $scope.fields = data;
        return $scope;
    });
}

$scope.Save = function(){
    $http.post('update-data.php?action=add_data',
        {
            'userid': $scope.userid,
            'fname' : $scope.fname,
            'lname' : $scope.lname,
            'gender': $scope.gender,
            'state' : $scope.selectedState,
        }
    )
    .success(function (){
        $scope.get_data();
        alert('Data updated!!!');
     });
}

$scope.delete_id = function(index){
    $http.post('update-data.php?action=delete_data',{
            'userid' : index
        }
        )
    .success(function () { 
        $scope.get_data();
    })
}
/* Edit data*/
$scope.edit_id = function(index){
    $scope.update=true;
    $scope.cancel=true;
    $scope.submit=false;
    $scope.reset=false;

    $http.post('update-data.php?action=edit_data', {
        'userid' : index
    }) 
    .success(function (data, status, headers, config) { 
        //console.log(data);
        //alert(JSON.stringify(data));
        $scope.userid = data[0]["userid"];
        $scope.fname  = data[0]["fname"];
        $scope.lname  = data[0]["lname"];
        $scope.gender = data[0]["gender"];
        $scope.selectedState  = parseInt(data[0]["state"]); 
    })
    .error(function(data, status, headers, config){

    });
}
$scope.Update = function(){
    $http.post('update-data.php?action=update_data', 
        {
            'userid' : $scope.userid,
            'fname'  : $scope.fname, 
            'lname'  : $scope.lname, 
            'gender' : $scope.gender,
            'state'  : $scope.selectedState
        }
    )
    .success(function () {
            $scope.get_data();
            alert('Data updated!!!');
    })
    .error(function(data, status, headers, config){

    });
}
});

现在reg_state存储表示状态和状态名称的数值,并使用 mysqli 或 PDO 代替 mysql,因为它已被删除。

希望对你有帮助。

关于php - 在angular js中获取php的数组数据并且无法更新php中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31333440/

有关php - 在angular js中获取php的数组数据并且无法更新php中的数据的更多相关文章

  1. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  2. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  3. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  4. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  5. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  6. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  7. ruby-on-rails - 在 Ruby 中循环遍历多个数组 - 2

    我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代

  8. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  9. ruby - 多次弹出/移动 ruby​​ 数组 - 2

    我的代码目前看起来像这样numbers=[1,2,3,4,5]defpop_threepop=[]3.times{pop有没有办法在一行中完成pop_three方法中的内容?我基本上想做类似numbers.slice(0,3)的事情,但要删除切片中的数组项。嗯...嗯,我想我刚刚意识到我可以试试slice! 最佳答案 是numbers.pop(3)或者numbers.shift(3)如果你想要另一边。 关于ruby-多次弹出/移动ruby​​数组,我们在StackOverflow上找到一

  10. ruby - 将数组的内容转换为 int - 2

    我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]

随机推荐