0

已编辑** 成为 Perl 新手很难,哈哈。我只是使用了正则表达式和我的哈希,我将我的 cgi 参数读入了。

my $regex = qr/tierrate/;
my $count = 0;

foreach (grep { /$regex/ } keys %form) {
$count++;
}

然后我可以使用该计数来确定我的插入循环。


再一次,我是编程新手。我的 Jquery 和 Perl 技能充其量只是初学者。

我希望能够根据用户添加的表行数将多条记录插入到数据库表中。我不确定如何处理这个问题,因为这是我的第一次非静态尝试。我正在使用 cgi.pm 和 dbi.pm。

我正在显示一些基于按钮单击的 HTML。每次用户选择“添加层”按钮时,我都会显示并尝试插入“层率”“层范围最小值”和“层范围最大值”。用户可以根据需要多次单击该按钮,每次单击他们都会获得一个额外的表格行,我不确定如何循环遍历动态数量的行。

基于用户单击“添加层”按钮,我显示 HTML。

\$('#addnewtier').click(function() {

\$('<tr id="inctier'+ (raisetierid++) +'"><TD ALIGN=left><font color="#ADD8E6">Tier '+ (rateplus++) +' Rate</TD><TD ALIGN=left><input type="text" name="tierrate'+ (tierrate++) +'" size=10 value="00.00" ></TD><TD ALIGN=left><font color="#ADD8E6">Tier '+ (rangeplus++) +' Range</TD><TD ALIGN=left><font color="#ADD8E6">Minimum&nbsp;<input type="text" name="rangemin'+ (rangemin++) +'" size=10 value="" ><font color="#ADD8E6">&nbsp;Maximum&nbsp;<input type="text" name="rangemax'+ (rangemax++) +'" size=10 value="" ></TD>').appendTo("#inctier1");

})

用户可以根据需要多次单击该按钮。我很熟悉能够在一定数量的东西上抓取输入,但对于动态数量的东西却不是那么熟悉。我在我发布的代码上方声明了我正在递增的变量。在此先感谢您的帮助。

4

1 回答 1

1

当你的 jQuery 添加一个新行时,在你的表单中增加一个计数器变量,然后在你的 perl 代码中使用它来循环你的 vars(这将作为一个帖子最有效,但如果你需要,你可以使用 get )并阅读您需要的每一行。

换句话说,在您的 HTML 表单中创建一个名为 tierCount 的隐藏输入字段然后在您的 jQuery 中添加一个新行,将其更新为适当的数字
您还需要在添加新行时只使用 1 个增量变量

然后在您的 perl 脚本中,您读取 tierCount 的表单值并循环遍历表单变量,一次读取一组

<input type="hidden" name="tierCount" value="1" />  
\$('<tr id="inctier'+ (raisetierid++) +'"><TD ALIGN=left><font color="#ADD8E6">Tier '+ (raisetierid) +' Rate</TD><TD ALIGN=left><input type="text" name="tierrate'+ (raisetierid) +'" size=10 value="00.00" ></TD><TD ALIGN=left><font color="#ADD8E6">Tier '+ (raisetierid) +' Range</TD><TD ALIGN=left><font color="#ADD8E6">Minimum&nbsp;<input type="text" name="rangemin'+ (raisetierid) +'" size=10 value="" ><font color="#ADD8E6">&nbsp;Maximum&nbsp;<input type="text" name="rangemax'+ (raisetierid) +'" size=10 value="" ></TD>').appendTo("#inctier1");  

$('#tierCount').val(raisetierid);

my $tierCount = $form{"tierCount"}
# Since we start with tier 1 start at 1 instead of the usual 0
for (my $i = 1; $i <= $tierCount; $i++)
{
    my $rate = $form{"rateField" . $i};
    my $range = $form{"rangeField" . $i};
    # Etc, etc
    # then do your insert here for that row
}  

请注意,上面的代码没有任何错误检查

于 2013-04-15T14:20:09.067 回答