2016-11-18 51 views
0

我有以下代碼,其中用戶從下拉列表中選擇值。每次他們提交時,ID都應該放入數組中。將值推入php中的會話數組中

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

每次單擊提交按鈕頁面重新加載,並且重新定義頁面重新加載變量時。失去它的價值。所以請嘗試使用其他一些選項,如$ _SESSION。 –

回答

-1

您很可能需要讓您的會話變量初始化。

$ _SESSION [「test」]默認不是數組。你可以試試:

// 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。你也不應該使用「全球」。同樣混合使用PHP和HTML代碼可能會導致難以維護的軟件。我不想聽起來傲慢,但我強烈推薦你的書"PHP The right way"

+1

每次你都不會想''__SESSION [「test」] = [];'它會重置數組。像'if(!is_array($ _ SESSION [「test」]))$ _SESSION [「test」] = [];'會更合適。 – Steve

+0

同意@Steve。我會更新我的迴應。 – Christian

+0

@Christian感謝您的迴應和您的寶貴意見。但是在這裏,我已經將數組聲明爲$ test = array();在一開始的時候。你的$ _SESSION [「test」] = [];顯示分析錯誤。 –