for循环中的隐藏字段仅返回最后一个值

时间:2016-11-22 06:16:50

标签: php

 <form action="" method="post">
     <?php
       $abc = 10;
       for($key=1;$key<=30;$key++)
         {
     ?>
            <input type="hidden" name="hidden_id" value="<?php echo $key;?>" />
            <textarea name="vids" rows="4" cols="50"><?php echo $abc; ?>      </textarea>
     <?php
           $abc++;
         }
     ?>
       <input type="submit" name="abc" />
      </form>

上面的代码只返回textarea和hidden字段的最后一个值。 我希望更新textarea的隐藏字段值以及textarea的更新值。

请帮我解决问题。

2 个答案:

答案 0 :(得分:0)

首先,您必须将name="hidden_id"更改为name="hidden_id[]",将name="vids"更改为name="vids[]"。然后他们可以拥有多个值。当您提交表单hidden_id[]时,vids[]将返回数组。因此,你必须逐个循环访问它们。

<?php
if(isset($_POST['abc'])){ 
    // $_POST['hidden_id'] return as a array
    if(!empty($_POST['hidden_id'])){
        foreach ($_POST['hidden_id'] as $id) {
            echo $id;
        }
    }

    // access textarea values
    if(!empty($_POST['vids'])){
        foreach ($_POST['vids'] as $text) {
            echo $text;
        }
    }

}
?>

<form action="" method="post">
     <?php
       $abc = 10;
       for($key=1;$key<=30;$key++)
         {
     ?>
            <input type="hidden" name="hidden_id[]" value="<?php echo $key;?>" />
            <textarea name="vids[]" rows="4" cols="50"><?php echo $abc; ?></textarea>
     <?php
           $abc++;
         }
     ?>
   <input type="submit" name="abc"  value="submit" />
</form>

答案 1 :(得分:0)

问题在于输入的名称,即name =“hidden_​​id”和name =“vids”。 您应该将它们更改为name =“hidden_​​id []”和name =“vids []”,以便它们保存多个值。请参阅以下代码

<input type="hidden" name="hidden_id" value="<?php echo $key;?>"/>
<textarea name="vids" rows="4" cols="50"><?php echo $abc; ?></textarea>