所以我有一张表格。默认情况下,表单由10行组成。它是这样的:
<form method="post" action="actionhere">
<?php
for($i=0; $i<10;$i++) {
?>
<div class='clone_me'>
<span>Line <?php echo $i;?></span>
<input type='checkbox' name='ck_<?php echo $i;?>'/>
<input type='text' name='tx_<?php echo $i;?>'/>
</div>
<?php } ?>
<input type='submit' name='submit' value='Submit'/>
</form>
因此,在表单中,我们将有10行复选框+文本框。
我想要做的是,我想放置一个按钮来添加新行(复选框+文本框)。现在,问题是,我需要$ i值(因为它形成了for循环)。当我们单击添加行按钮时,我们在for循环中设置的$ i的值是否可能在每次单击时增加1?我知道我们可以使用jquery克隆div,但是$ i值如何?
答案 0 :(得分:2)
我认为你这样做是错误的,你不需要在{name}属性中使用$i
值,你必须为它使用数组,例如
<form method="post" action="test.php">
<div class='clone_me'>
<span>Line 1</span>
<input type='checkbox' name='ck[]'/><!--this field should menditory-->
<input type='text' name='tx[]'/>
<span>Line 2</span>
<input type='checkbox' name='ck[]'/><!--this field should menditory-->
<input type='text' name='tx[]'/>
</div>
<input type='submit' name='submit' value='Submit'/>
</form>
现在在actionhere.php中实现此代码
<?php
$cks = $_POST['ck'];
$txs = $_POST['tx'];
foreach($cks as $key => $ck) {
echo $ck."<br>";
echo $txs[$key]."<br>";
}
?>
答案 1 :(得分:1)
嗯,基本上没有。生成html时,您的PHP脚本已经结束。所以你不能再依赖PHP了。但是你不需要明确地将其显示在你的HTML中 您应该使用jquery计算行数:
var i = $('form').find('.clone_me').length
然后再次使用javascript添加新行:
$('form .clone_me:last').clone().insertAfter('form .clone_me:last');
答案 2 :(得分:1)
<input type='hidden' name='counter' id='counter'/>
<input type='checkbox' name='chk' id='chk'/>
<?php
$counter=$_POST['counter'];
for($i=0;$i<=$counter;$i++)
{
$chk=$_POST['chk'.$i];
// Your Insert Code Here
}
?>
答案 3 :(得分:0)
可能是这可能但有一些限制
如果页面重新加载没有问题,你可以这样做: -
通过这种方式你的页面将重新加载,文本框和复选框中的值将消失:--- :)每次新页面生成并由服务器发送到客户端浏览器
<?php
if(isset($_POST['submit'])){
$ends = $_POST['ttl_rows'];
}else{
$ends = 10;
}
?>
<form method="post" action="#">
<?php
for($i=1 ; $i<$ends;$i++) {
?>
<div class='clone_me'>
<span>Line <?php echo $i;?></span>
<input type='checkbox' name='ck_<?php echo $i;?>'/>
<input type='text' name='tx_<?php echo $i;?>'/>
</div>
<?php } ?>
<input type='hidden' name='ttl_rows' value='<?php echo ($i+1); ?>'/>
<input type='submit' name='submit' value='Submit'/>
</form>