动态生成的字段并保存数据

时间:2011-10-13 13:56:42

标签: php jquery mysql

我有大约15个表单字段(fieldset),它也有一个大的textarea(限制4000个字符)。单击按钮时,我必须动态生成这些字段集。我必须适应多次创建这些字段(没有限制)。在将数据保存到MySQL数据库时,此设计是否会产生任何问题?另外,动态生成字段并验证它们的最佳方法是什么?我很感激任何意见。

谢谢。

2 个答案:

答案 0 :(得分:0)

对于jQuery解决方案,我曾做过类似的事情。如果你有一些fieldset,你可以拿$('#yourfieldset')。html()并将它追加到最后一个,这是现有的(所以首先是第一个)。然后你可以删除这些字段集中的数据,比如$('#yourfieldset input')。val(“”)。 所以你有复制,你也可以创建一个小函数来复制它几次。

对于保存,您可以更改要复制的字段集的名称属性。类似的东西:

$('#yourfieldset input').each(function() {
 $(this).attr("name",  $(this).attr("name") + "_" + counter);
});

当然,您需要将该计数器作为全局变量来计算字段集。要删除一个字段集,它也可以只给这个计数器的函数或让它称之为rownumber。所以你可以用$('#yourfieldset [“id $ = _ 15”]')删除它。删除()因为它查找具有特定数字的id属性并删除该字段集。

在PHP中,您可以遍历POST变量,这应该非常简单。做一些print_r()让数据看起来如何。

答案 1 :(得分:0)

就个人而言,我发现在js / jquery中完全生成信息显示更实用。这样,您无需使用两种语言处理显示。 php发送一个“空”shell,包含tile和一些静态文本,以及一个js文件。页面js立即aj从php返回数据,并格式化它。如果您仔细执行操作,则可以轻松地重复使用该过程。我已经为每个表字段创建了类型,它告诉我们如何显示字段(id:“hidden”,name:“text”,county:“select”,active:“checkbox”等)。

此外,我不使用任何形式,只使用按钮和jquery $ .post()函数。这允许使用类似的东西轻松构建帖子数据:

$('table.VirtualFormTable').delegate('.update, .create', 'click', function() {  // .update and .create are button's class on each row.

    var $this = $(this);
    var $row = $this.closest('tr');
    params = {};
    $('input, select', $row).each(function () {
        if ( this.type == 'checkbox' ) params[this.name] = this.checked;
        params[this.name] = this.value;
    });

    if ( validateParams(params) ) {
        $.post(url, params, function (data) { $row.removeClass('updatePending'); });
    }

});

循环每一个已更改的行很容易,并构建一个类似于“params”的“数组”:

{[ 
    0: {param1: '...', param2: '...'},
    1: {param1: '...', param2: '...'}
]}

然后在php中你可以做类似的事情:

$fields = str_replace(array('true', 'false'), array('1', '0'), $_POST);  // transform checkboxes
$whereArray = array_slice($fields, 0, 1); // table_index in first position
myDbTools::insertOrUpdate('table', $fields, $whereArray);

使用这样的3部分模板,您需要编写2行来创建基于表格的完整表单。