2016-02-17 52 views
0

我實際上是PHP新手,所以我需要您的幫助!將cookie值重新輸入到輸入字段

我正在使用表格中的表格,並使用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來存儲輸入值,所以我找到了一種方法來存儲輸入名稱='數量[]'(數組)的所有值在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)設置cookies,帶有鏈接返回到form.php頁面。回到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> 

結果

Cookies 
Array 
(
    [quantity] => Array 
     (
      [0] => 8 
      [1] => 8 
     ) 

    [submit] => Submit 
) 

我的問題是: 是否有從數組的值存儲到所有正確的輸入字段的方法嗎? 而不是像數組一樣打印它們(這不是我想要的,但我想測試cookie存儲)。

在此先感謝!

+1

您可以使用$ _SESSION來記住跨頁面的值,在$ _SESSION全局變量中創建一個子數組 –

+0

第一次提交表單後,您是否將數據存儲在數據庫中? –

+0

嗨哈利,還沒有。提交只是form.php和實際插入之間的一個層。 –

回答

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 />"; 
    } 
?> 
0

只是一個小編輯,得到它的工作完美的現在(包括打印行的正確的量)。

在第一頁:

<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> 

在第二頁:

<?php session_start(); 

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

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

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

    echo "<pre>"; 
    print_r($_POST['quantity']); 
    echo "</pre>"; 

?> 

<a href="first.php"> Go Back </a> 

在由此產生:

after submit

going back