【发布时间】:2016-02-18 16:22:03
【问题描述】:
我实际上是 PHP 新手,所以我需要你的帮助!
我在表单中使用表格,并使用 SQL Server 填充表格行。 表单以数量输入 type="number" 的输入字段开头。
<form name="testform" method="post" action="submit.php">
<?php
$sql="query goes here";
$query=sqlsrv_query( $conn, $sql, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
if ($query) {
while($row = sqlsrv_fetch_array( $query, SQLSRV_FETCH_ASSOC) ) {
echo "<td><input type='number' name='quantity[]'></td>";
}
}
?>
</form>
提交表单后,我希望用户能够导航回上一页以更改输入的数量(如果可能)。 所以我需要在返回时恢复输入值(现在所有值在返回时都丢失了)。
我通过使用 Cookie 存储输入值找到了这种方式,因此我找到了一种将输入 name='quantity[]'(数组)的所有值存储在 cookie 中的方法。并在返回时将它们打印在页面上。它还使用正确的数组索引位置打印所有正确的值。 以下是部分代码:
在我的表单页面 (form.php) 上接收 cookie。
<?php
if (isset($_COOKIE['Cookie_Info'])){
$cookie = $_COOKIE["Cookie_Info"];
$cookie = stripslashes($cookie);
$savedAantArray = json_decode($cookie, true);
echo '<pre>';
print_r($savedAantArray); echo '</pre>';
} else {
$data = array(
'quantity[]' => ''
);
}
?>
在我的提交页面 (submit.php) 上设置 cookie,带有返回 form.php 页面的链接。
<?php
if (isset($_POST['submit'])) {
$post_arr = $_POST;
$expire = 8*3600;
setcookie("Cookie_Info", serialize($post_arr), time()+$expire);
}
?>
<a href="form.php">Make Some Changes..</a>
返回form.php时的结果
Cookies
Array
(
[quantity] => Array
(
[0] => 8
[1] => 8
)
[submit] => Submit
)
这是我的问题: 有没有办法将数组中的这些值存储到所有正确的输入字段中? 而不是将它们打印为数组(这不是我想要的,但我想测试 cookie 存储)。
提前致谢!
【问题讨论】:
-
你可以使用$_SESSION来记住跨页的值,在$_SESSION全局变量中创建一个子数组
-
第一次提交表单后是否将值存入DB?
-
嗨,哈利,还没有。提交只是 form.php 和实际插入之间的一层。