尝试将表单输入存储到数组

时间:2014-01-14 14:18:01

标签: php arrays

我正在尝试将表单数据保存到数组中,以便稍后可以在表格中显示它。我遇到的问题是,当我单击提交按钮并使用php_self重新加载时,它似乎每次都初始化变量。这是我想要做的一个例子。

<?php

// if first time initialize variables
if (!isset($i)) {
    echo "in initialize section<br />";
    $i        = 0;
    $itemno[] = "";
    $desc[]   = "";
}

if (isset($_POST['submitbtn'])) {
    $itemno[$i] = $_POST['item'];
    $desc[$i]   = $_POST['desc'];

    echo "Item# = " . $itemno[$i] . "<br />";
    echo "Desc. = " . $desc[$i] . "<br />";

    $i += 1;
    echo "i = $i";
    var_dump($itemno);
    var_dump($desc);
}

?>

<form id="submititem" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>"             name="submit" >
<input name="item" placeholder="Enter item #" size="18" />
<input name="desc" placeholder="Enter Description" size="18" />
<input name="submitbtn" type="submit" value=">">
</form>

由于

拉​​尔夫

2 个答案:

答案 0 :(得分:0)

您遇到的问题是PHP在每次加载页面时都会“新鲜”。如果要将数组保留在多个提交中,则需要将数据存储在某处。会话或数据库是最常用的两种方法。

以下是您使用会话的方式:

<?php
session_start();
$items = isset($_SESSION['items']) ? $_SESSION['items'] : array();
$descriptions = isset($_SESSION['descriptions']) ? $_SESSION['descriptions'] : array();

// your logic here...

$_SESSION['items'] = $items;
$_SESSION['descriptions'] = $descriptions;

请注意,如果您的阵列可能变得非常大或者您有很多用户,那么您可能希望使用数据库来存储项目/描述信息。

答案 1 :(得分:0)

你必须处理会话

$_SESSION['itemno'][$_SESSION['i']] = $_POST['item'];