根据从用户收到的输入更新数据库字段

时间:2014-07-30 04:37:51

标签: php jquery mysql ajax

我的数据库有一个表names,其中包含各种列,例如FnameLnameAge_chkdgndr_chkdprofession_gdk等等

我有表格来显示这些值

<table>
    <tr>
        <td>F Name</td>
        <td>L Name</td>
        <td>Age</td>
        <td>Profession</td>
    </tr>
    <tr>
        <td contenteditable="true" id="as_1">Value from DB</td>
        <td contenteditable="true" id="as_2">Value from DB</td>
        <td contenteditable="true" id="as_3">Value from DB</td>
        <td contenteditable="true" id="as_4">Value from DB</td>
    </tr>
</table>

我尝试了两种方法:

  1. 使td的名称与DB列名称相同,但不赞成此方法,因为DB将被公开。
  2. td的名称设为someprefix::DB_column,并在PHP结束时将::之后的值分开,但在此处再次看不到方法。
  3. 有人可以让我知道更好,更棒的方法吗?

    注意:当您看到contenteditable=true时,表格会被ajax更新,而下面是调用ajax的jquery

    $("td[contenteditable=true]").blur(function(){
        var field_userid = $(this).attr("id") ;
        var value = $(this).text() ;
        $.post('updatemenu/update_orderstatus' , field_userid + "=" +value,function(data){
            if(data != '') {
                message_status.text(data);
            setTimeout(function(){message_status.hide()},3000);
            }
        });
    });
    

1 个答案:

答案 0 :(得分:1)

你需要模特。

您在这里所描述的内容听起来像使用模型的理想情况。您已定义数据库表。 PHP中的模型将是应用程序和数据库之间的层。

这样,您可以直接使用应用程序对模型进行更改,从而在尝试更新/更改数据库记录之前强制确保数据正确(或至少无害)。

模型可能如下所示:

class Names {

    private $id;
    public $fName, $lName, $Age, $Gender, $Profession;

    public static function GetById($id) { 
        // Get data by ID and fill the instance 
    }

    public function Save() { 
        // Check model, save to the database by using $this->Age, $this->Profession variables. 
    } 
}