2017-10-17 107 views
1

我只是有一个问题。PHP - 如何在表单提交后保留文本框数组的值?

我有一组具有相同名称的文本框。 (name =“quantity []”)

如何在提交后保留表单的值?例如,我有5个具有相同名称的文本框。我填写了其中4份并提交了表格。我想显示一个字段为空的错误,并保留我在提交表单之前放置​​的值。

我可以做到这一点,如果文本框名称不同。但是,如果他们有相同的,我不能让它工作。

<input type="text" name="quantity[]" value="<?php if(!empty($_POST['quantity'])) echo $_POST['quantity'];?>"> 

<input type="text" name="quantity[]" value="<?php if(!empty($_POST['quantity'])) echo $_POST['quantity'];?>"> 

<input type="text" name="quantity[]" value="<?php if(!empty($_POST['quantity'])) echo $_POST['quantity'];?>"> 

<input type="text" name="quantity[]" value="<?php if(!empty($_POST['quantity'])) echo $_POST['quantity'];?>"> 

<input type="submit" name="submit"> 

感谢您的帮助PHP的人。感谢您的帮助。

+1

'if(!empty($ _ POST ['quantity'] [0]))echo $ _POST ['quantity'] [0]' - .. [1]第二等 – Jeff

+0

尝试使用JS验证和AJAX提交表单,以便您可以保留您的数据,如果提交失败 – hungrykoala

+0

嗨,杰夫,谢谢你的快速回答。如果我的文本框是动态创建的,它可能是2或10,这取决于用户将选择多少项目。非常感谢。 – danangeloalcanar

回答

1

如果字段数量不固定,即不同。你应该像这样使用for循环

 <?php 

     if(!empty($_POST['quantiy'])){ 

     $count =count($_POST['quantity']); 

     for($i=0; $i<$count; $i++){ 

     ?> 
     <input type="text" name="quantity[]" value="<?php echo $_POST['quantity'][$i];?>"> 

     <?php 

       } 
      } 
    else 
    { 

    ?> 

    <input type="text" name="quantity[]" value=""> 

    <input type="text" name="quantity[]" value=""> 

    <input type="text" name="quantity[]" value=""> 

    <input type="text" name="quantity[]" value=""> 

<?php 
    } 
     ?> 
+0

嗨塞缪尔感谢您的回答。这对我有帮助。我的问题解决了。我感谢你的帮助人。 – danangeloalcanar

2

你的问题是,当表单提交时,你会丢失对输入字段的引用。由于所有字段都具有相同的名称,因此您无法确定哪个字段提供了输入。

你可以做什么:您可以通过弹出的$ _POST像这样填写表单字段:

<input type="text" name="quantity[]" value="<?php if(!empty($_POST['quantity'])) echo array_pop($_POST['quantity']);?>"> 

什么情况如下:

  • 在提交您的$ _ POST变量变根据哪些输入具有任何值而填充
  • 在重新呈现提交后$ _POST ['quantities']数组被反汇编后,最后一个元素被移除并填充表单输入

请注意:如果用户用此代码填充字段1,2和4,字段1,2和3将填充。 [1]

+0

谢谢你,我会试试这个。我会回来,并会向你报告它是如何发生的。再次感谢你。 – danangeloalcanar