cookie值返回输入字段

时间:2016-02-17 07:49:25

标签: php forms cookies

我实际上是PHP的新手,所以我需要你的帮助!

我在表单中使用表,而SQL Server则填充表行。 表单以数量输入类型="数字"。

的输入字段开头
<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来存储输入值,因此我找到了一种方法来存储输入名称的所有值=&#39;数量[]&#39; (数组)在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存储)。

提前致谢!

2 个答案:

答案 0 :(得分:0)

谢谢Yvon,现在就开始工作吧。

再次在我的第二页上:

<?php session_start();

        $_SESSION['quantity'] = $_POST['quantity'];

        foreach($_POST['quantity'] as $key => $value) {

        echo "<input name='quantity' value='$value'>\n<br />";
     }

 ?>

返回首页:

<?php session_start();

    $quantity=$_SESSION['quantity'];
    print_r($quantity);
    echo "<br \>";

        foreach($_SESSION['quantity'] as $key => $value) {

        echo "<input name='quantity[]' value='$value'>\n<br />";
    }
?>

答案 1 :(得分:0)

只是一个小编辑,让它现在完美运行(包括打印正确数量的行)。

在第一页:

match (a:ARTEFACT)-[:VERSION]->(v)-[:PROVIDED]-(p)
with a,count(v) as count
where count > 1
return a

在第二页:

<form name="form" method="post" action="second.php">

<?php session_start();

include 'db_connect.php';

$quantity=$_SESSION['quantity']; print_r($quantity); echo "<br \>";

$sql ="SELECT * FROM X0ONTDTA.WEBRELGB";
$query = sqlsrv_query( $conn, $sql, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));


    if($query){

            if (isset($_SESSION['quantity'])){

                    foreach($_SESSION['quantity'] as $key => $value) {

                echo "<input  name='quantity[]' value='$value'>\n<br />";
            }
        } 

        elseif($query){

            while($row = sqlsrv_fetch_array( $query, SQLSRV_FETCH_ASSOC) ) {

                echo "<input name='quantity[]' value=''>\n<br />";

            }


            }
        }

?>

<input type="submit" value="Submit" name="submit"></input>

</form>

导致:

after submit

going back