编辑**作为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 <input type="text" name="rangemin'+ (rangemin++) +'" size=10 value="" ><font color="#ADD8E6"> Maximum <input type="text" name="rangemax'+ (rangemax++) +'" size=10 value="" ></TD>').appendTo("#inctier1");
})
用户可以根据需要多次单击该按钮。我熟悉能够在一定数量的东西上获取输入,但不是那么多动态数量的东西。我正在声明我正在增加的变量正好在我发布的代码之上。在此先感谢您的帮助。
答案 0 :(得分:1)
当你的jQuery添加一个新行时,在你的表单中增加一个计数器变量,然后在你的perl代码中使用它来循环你的vars(这将最适合作为帖子,但如果你需要你可以使用get)并阅读你需要的每一行。
换句话说,在HTML表单中创建一个名为tierCount的隐藏输入字段 然后在你的jQuery中添加一个新行,将它更新为数字到位 添加新行时,您还需要仅使用1个增量变量
然后在你的perl脚本中你读取了tierCount的表单值并循环遍历表单vars一次读取它们
<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 <input type="text" name="rangemin'+ (raisetierid) +'" size=10 value="" ><font color="#ADD8E6"> Maximum <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
}
请注意,上面的代码没有任何错误检查