【问题标题】:How to submit a single form value multiple times and store (preserve) them in an array each time that I refresh my page?每次刷新页面时,如何多次提交单个表单值并将它们存储(保留)在一个数组中?
【发布时间】:2015-06-02 23:08:45
【问题描述】:

尝试 1:这显示了我想要实现的目标。相同的数组但不同的键值对。打印时列出所有的键和值。

<?php

$rental[]=array('day'=>1,'rate'=>10);
$rental[]=array('day'=>2,'rate'=>20);
$rental[]=array('day'=>3,'rate'=>30);
$rental[]=array('day'=>4,'rate'=>40);
print_r($rental);
?>

尝试 2:现在,我使用一个表单提交多次。我希望每次提交表单时都将键和值存储在一个数组中。但是发生的情况是,最后一个值对覆盖了前一个值对。因此只显示了一对。到目前为止,我可以在 session 的帮助下存储它们。但是我只是想知道是否有办法通过同一页面上的php数组来实现它?

<?php

$rental[]=array('day'=>$_POST['days'],'rate'=>$_POST['rental']);

print_r($rental);
?>
<form action="#" method="post">
   Number of Days: <input type="text" name="days" value=""><br/>
   Rental rate: <input type="text" name="rental" value=""><br/>
   <input type="submit" name="add_rental_rate" value="Add Rental Rate">
</form>

【问题讨论】:

  • 一旦表单可操作,PHP 就不是现成的了。但是 JavaScript 是。
  • PHP 处理日期输出,PHP 不存储数据。您可以通过 JavaScript 完成,也可以将它们存储到数据库中。

标签: php html arrays session multidimensional-array


【解决方案1】:

你可以使用 session 来实现你想要的,看这段代码:

<?php  
session_start();

if(isset($_POST['days']) && isset($_POST['rental'])){        

$_SESSION['info'][] = array($_POST['days'] => $_POST['rental']);

}

if(isset($_SESSION['info'])) {
for($i = 0; $i < count($_SESSION['info']); $i++) {
  foreach($_SESSION['info'][$i] as $days => $rental){
    echo '<p>' . $days . '<br>';
    echo $rental . '</p>';
 }
} 
}
?>

<form action="#" method="post">
   Number of Days: <input type="text" name="days" value=""><br/>
   Rental rate: <input type="text" name="rental" value=""><br/>
   <input type="submit" name="add_rental_rate" value="Add Rental Rate">
</form>

你应该阅读一些关于会话的文档:

http://php.net/manual/en/intro.session.php

【讨论】:

  • 谢谢,但我知道它可以通过会话来完成,我只是好奇 PHP 数组是否可以做到这一点。
  • 感谢您消除我的疑问。现在我可以使用会话了。
  • @samantha 如果我的回答对你有帮助,别忘了检查我的回答是否被接受 ;-)
猜你喜欢
  • 2021-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 2018-03-09
  • 2016-11-05
相关资源
最近更新 更多