如何使用 JQuery 将 HTML 表单字段作为数组直接传递到 CodeIgniter 中的数据库

Posted

技术标签:

【中文标题】如何使用 JQuery 将 HTML 表单字段作为数组直接传递到 CodeIgniter 中的数据库【英文标题】:How to direct pass HTML Form fields as an array to database in CodeIgniter using JQuery 【发布时间】:2019-03-12 04:50:21 【问题描述】:

这是我的查看页面:

<form role="form" id="addNewMatter" action="<?php echo base_url() ?>saveNewSupplier" 
method="post">

<input type="text" value="" name="name" id="name" />
<input type="text" value="" name="phone" id="phone" />
<input type="text" value="" name="email" id="email" />
<input type="text" value="" name="address" id="address" />

<script>
   $('form').change(function() 
       var input = $('form').serializeArray();
       var data = "";
       $( "#formdata" ).empty();
       jQuery.each( input, function( i, input1 ) 
        if($(this).attr("name") !== 'formdata')
         data += "\"" + $(this).attr("name") + "\"=>" +  "\"" + input1.value +  "\",";
        
           finaldata = data.replace(/,\s*$/, "");
           $( "#formdata" ).val( finaldata );
           //alert($(this).attr('name'));
        );
    );
</script>

<input type="text" value="" name="formdata" id="formdata" />
</form>

这是我的控制器页面:

function saveNewSupplier()


    $createdby= $this->vendorId;
    $createddate= date('d M Y');

            $formdata = $this->input->post('formdata');
$Info = array();
    $Info = array($formdata, 'createdby'=>$createdby,
   'createddate'=>$createddate);
$this->load->model('user_model');
$result = $this->user_model->saveNewSupplier($Info);

这是我的模型页面:

function saveNewSupplier($Info)

    $this->db->trans_start();
    $this->db->insert('tbl_suppliers1', $Info);

    $insert_id = $this->db->insert_id();

    $this->db->trans_complete();

    return $insert_id;

插入查询不起作用,它将0 显示为数组中的第一列,但它应该是我通过 post 方法从视图传递的数组。 请帮我修复这个插入查询。谢谢。

【问题讨论】:

有人发现了吗? 我用过 '而不是单个“查询”得到了修复,但仍然无法正常工作,仍然在第一列显示 0 并且 $formdata 作为其值 【参考方案1】:

$this-&gt;input-&gt;post() 会将表单字段作为数组提供给您,因此您可以在不使用任何 javascript 的情况下执行此操作。

如果您的tbl_suppliers1 表包含“formdata”、“createdby”、“createddate”列:

function saveNewSupplier()

    $createdby = $this->vendorId;
    $createddate = date('d M Y');

    $form = $this->input->post();
    $data = array(
        json_encode($form),
        'createdby' => $createdby,
        'createddate' => $createddate
    );
    $this->load->model('user_model');
    $result = $this->user_model->saveNewSupplier($data);

如果您的tbl_supplier 有列“名称”、“电话”、(等)、“创建日期”:

function saveNewSupplier()

    $createdby = $this->vendorId;
    $createddate = date('d M Y');

    $form = $this->input->post();
    $data = $form;
    $data['createdby'] = $createdby;
    $data['createddate'] = $createddate;
    $this->load->model('user_model');
    $result = $this->user_model->saveNewSupplier($data);

请记住,您的脚本方法或上述示例都不会检查有效字段。

【讨论】:

如何将表格数据从视图发布到控制器? @Danial “表格数据”是什么意思?表单中没有表格输入之类的东西。 将数据保存在主表中后,我必须将其相关数据插入明细表(多行)中,因此我在可以输入多行的表单中使用了简单的 html 表,我想将它们保存在使用主表主键的明细表。我有来自 this->db->insert_id() 的主表主键,但是如何将该 html 表数据发布到详细表,谢谢。 我用它使table td 可编辑ondblclick="this.contentEditable=true; this.className='inEdit'; this.focus();"

以上是关于如何使用 JQuery 将 HTML 表单字段作为数组直接传递到 CodeIgniter 中的数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 动态添加 HTML 表单字段

如何使用 jQuery 验证用户正在使用 HTML 表单上传文件?

使用 jQuery 将表单数据作为数组传递给 Laravel

如何使用 jQuery validate 验证表单中的所有字段?

如何在 MVC 4 中使用 jquery 验证表单的隐藏输入字段?

如何使用 jQuery 在页面加载时关注表单输入文本字段?