我有以下代码,用户从下拉列表中选择值。每次提交时,ID都应该在数组中推送。
<?php
$_SESSION["test"] = array();
$link = mysql_connect("localhost","root","");
mysql_select_db("dbsikkim",$link);
?>
<form name="form1" method="post" action="">
<?php
$sql=mysql_query("SELECT ID,DOC_DESC FROM gstn_document_type_master",$link);
echo "<select name='doc_type_code2'>";
if(mysql_num_rows($sql)){
while($row=mysql_fetch_array($sql)){
echo "<option value=".$row['ID'].">".$row['DOC_DESC']."</option>";
}
}
echo "</select>";
?>
<input type="submit" value="Submit" name="submit">
</form>
<?php
if(isset($_POST['submit']))
{
$_SESSION["test"][] = $_POST['doc_type_code2']; //ERROR IN THIS LINE
for ($i=0; $i < sizeof($_SESSION["test"]); $i++) {
echo $_SESSION["test"][$i]."<br>";
}
}
?>
只有当前值被推入数组并替换前一个。简单来说,它是作为变量而不是数组。
答案 0 :(得分:-1)
您很可能需要初始化会话变量。
$ _ SESSION [&#34; test&#34;]默认情况下不是数组。你可以试着这样做:
// If the session variable is not yet an array, initialize it
if (!is_array($_SESSION["test"])) {
$_SESSION["test"] = [];
}
$_SESSION["test"][] = $_POST['doc_type_code2'];
第一行为您的字段指定一个数组。 第二个为数组赋值。
请注意,您的代码中有几项需要改进的地方。例如,这些天你可以使用PDO。你也不应该使用&#34; global&#34;。同样混合PHP和HTML代码可能会导致难以维护的软件。我不想听起来很傲慢,但我强烈推荐你这本书"PHP The right way"。