2016-11-18 7 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']; 

最初の行は、フィールドに配列を割り当てます。 2番目の値は配列に値を代入します。

コードの改善にはいくつか注意が必要です。たとえば、最近PDOを使用することができます。また、「グローバル」は使用しないでください。 PHPとHTMLコードを混在させることで、保守が難しいソフトウェアにつながる可能性があります。私は傲慢に聞こえたくはありませんが、私はあなたに本の書籍をお勧めします"PHP The right way"

+1

配列をリセットするたびに、 '$ _SESSION [" test "] = [];'を実行したくないでしょう。 'if(!is_array($ _ SESSION [" test "]))$ _SESSION [" test "] = [];'のようなものがより適切でしょう。 – Steve

+0

合意@スティーブ。私は私の応答を更新します。 – Christian

+0

@Christianお返事ありがとうございました。しかし、ここでは、すでに配列を$ test = array()と宣言しています。最初はあなたの$ _SESSION ["test"] = [];解析エラーを示します。 –

関連する問題