在表单中修改$ i

时间:2014-04-02 08:09:17

标签: php jquery

所以我有一张表格。默认情况下,表单由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值如何?

4 个答案:

答案 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>