使用php和js / jquery在html表中编辑行并将其保存在db中

时间:2016-02-14 15:46:37

标签: javascript php jquery mysql

我有一张表,我从DB获取数据。现在,我想分别编辑每一行,并将编辑后的值保存在DB中。 我在谷歌浏览并了解它可以使用JS / Jquery完成,但我无法确切知道如何做到这一点。

我是PHP的新手,所以我无法弄清楚如何做到这一点。

我的表格代码和生成的值是:

<?php

$menu = $conn -> query("Select * from menu"); ?>

<table class="table table-hover">

<tr>

    <th>Item ID</th>
    <th>Item Name</th>
    <th>Item Description</th>
    <th>Item Price</th>
    <th>Item Qty</th>
    <th>Item Type</th>
    <th>Status</th>
    <th>Manage</th>
</tr>
<?php
 foreach ($menu as $row) {
    echo "<tr>";
    echo "<td>".$row['ItemId']."</td>";
    echo "<td>".$row['ItemName']."</td>";
    echo "<td>".$row['ItemDesc']."</td>";
    echo "<td>".$row['ItemPrice']."</td>";
    echo "<td>".$row['ItemQty']."</td>";
    echo "<td>".$row['ItemType']."</td>";   ?>
    <td class="dropdown">
        <div class="btn-group" style="width: 100%; margin-bottom: 10px;">
            <button type="button" class="btn btn-danger btn-block btn-sm dropdown-toggle color-chooser-btn" data-toggle="dropdown">Status <span class="caret"></span></button>
            <ul class="dropdown-menu color-chooser">
                <li><a class="text-green" href="#"><i class="fa fa-square"></i> Available </a></li>
                <li><a class="text-red" href="#"><i class="fa fa-square"></i> Not Available</a></li>
            </ul>
        </div>

    </td>
    <td>
        <a data-toggle="modal" data-target="#compose-modal">
            <button class="btn btn-primary btn-xs"><i class="fa fa-pencil"></i></button></a>
        <a data-toggle="modal" data-target="#delete-modal">
            <button class="btn btn-primary btn-xs"><i class="fa fa-trash-o"></i></button></a>
    </td>
    <?php
    echo "</tr>";
    } ?>
   </table>

1 个答案:

答案 0 :(得分:1)

我们有list.php。我们可以将status设为切换按钮。 试试这样。我希望你使用的是Bootstrap框架。

    <div class="row">
      <div class="col-lg-9 col-md-9 col-sm-9 col-xs-9" style="padding-right:50px;">
        <div class="table-responsive">
           <table class="table table-striped">
             <thead>
               <tr>
                <th style="text-align:left">Item ID</th>
                <th style="text-align:left">Item Name</th>
                <th style="text-align:left">Item Description</th> 
                <th style="text-align:left">Item Price</th>                                
                <th style="text-align:left">Item Qty</th>
                <th style="text-align:left">Item Type</th>
                <th style="text-align:left">Status</th>
                <th style="text-align:left">Manage</th>
              </tr>
            </thead>
            <tbody id="content-body">

            </tbody>
          </table>
       </div><!-- Closed tabel responsive -->
     </div>

现在我们有了列表模板。

并且jquery函数位于

之下
    listItems:function(){
    _this=this;
        $.ajax({
          url:"listitem.php", // data should come from here
          type:"GET",
          success:function(data){
            if(!data.error)
            {
                _this.renderList(data); //sending data to another function.
            }
            else
            {
             $("#content-body").html("<tr><td colspan='11'>"+data.error+"</td></tr>"); // showing error
            }

        },
        error:function(data){
        $("#content-body").html("<tr><td colspan='11'>No item available.</td></tr>"); //showing error
        }
      });
    },
    renderList:function(data){ // here we will receive data and list
      _this=this;           
    var obj = data;//console.log(obj);  

    if(obj.length < 15)//no of items per page for pagination
    {
        $(".next").addClass("disabled");
    }else
    {
        $(".next").removeClass("disabled");
    }

    var testcontent = "";
    linkstatus = '<a class="anchorstatus" href="#">';
    linkmanage = '<a class="anchoredit" href="#">';


    var row='<tr id={itemid}>'+
    '<td>{ItemName}</a></td>'+
    '<td>{ItemDesc}</a></td>'+
    '<td>{Itemprice}</a></td>'+
    '<td>{ItemQty}</a></td>'+
    '<td>{ItemType}</a></td>'+
    '<td>'+linkstatus+'{Itemstatus}</a></td>' +
    '<td>'+linkedit+'Edit</a></td>' +
    "</tr>";

    for(i in obj)
    {
        str=row;

        for(j in obj[i])
        {
            thisvalue=obj[i][j];

            if(thisvalue===null)
            thisvalue="Not Defined";

            if(thisvalue==="Available")
                thisvalue="<p class='ok'>"+thisvalue+"</p>";

            if(thisvalue==="NotAvailable")
                thisvalue="<p class='notice'>"+thisvalue+"</p>";
            var test = "{"+j+"}";
            str=str.replace("{"+j+"}",thisvalue);

        }

        testcontent+=str;
    }
    $("#content-body").html(testcontent); 
},
statusEvent:function(){ // for changing the status dynamically.
    _this=this;

    $("body").on("click",".anchorstatus",function(){
        status=$(this).text();
        id=$(this).parents("tr").attr("id");

        if(status=="Available") // checking status
        {
            statusvalue="NotAvailable";
    _this.updateItem({  // sending status to update db.
        "itemstatus":"NotAvailable"},id,statusvalue);  
        }
        else
        {
            statusvalue="Available";
              _this.updateItem({ // sending status to update db.
    "itemstatus":"Available"},id,statusvalue);
        }
    });
  },
   updateItem(contentdata,itemid,statusvalue){ // updating data

    $.ajax({
        url: "admin/v1/list.php/"+itemid,
        type: "PUT",
        data: JSON.stringify(contentdata),
        success: function(data){
            if(statusvalue==="Available")
                statusvalue="<p class='ok'>"+statusvalue+"</p>";

            if(statusvalue==="NotAvailable")
                statusvalue="<p class='notice'>"+statusvalue+"</p>";

            if(data.success)
            {
                $("#"+id+" .anchorstatus").html(statusvalue);   // success message                  
            }
        },
        error:function(data){
            console.log(data);  
            if(data.status === 401)
            {
                console.log(data.status);
                showError("Session Expired");
                setTimeout(function (){
                  window.location="index.php";        
              },1000);
            }           
        }
    });
}