2013-11-25 28 views
0

從數據庫中獲取一組值以顯示在下拉列表中。一旦用戶從下拉列表中選擇了一個項目,選定的項目應該被分配給一個SESSION變量。我嘗試過,但它不起作用。請親愛的幫我整理一下。將下拉選定值存儲在SESSION變量中

<select id="FormNameSelecting" style="position:absolute; width:300px; top:50px; left:200px; "><option></option> 
<?php 

    $result = mysqli_query($con,"SELECT * FROM Form"); 
    while($row = mysqli_fetch_array($result)){  
    echo "<option value='$row[Form_ID]'>$row[Form_Name]</option>"; 
    echo 
    } 
?> 
</select> 

所以我需要存儲這些值從$收到行[Form_ID]和$行[FORM_NAME在$ _SESSION [ 'Form_ID']和$ _SESSION命名爲2個會話變量[ 'FORM_NAME'];有人能解釋我如何將選定項目的值分配給這兩個會話變量。

+0

你要ID存儲到上改變所選項目會話或提交表單後,或選擇 –

+0

:)我需要做的是爲onchange事件。 – t4thilina

+0

然後,首先你必須添加某種Ajax或JavaScript來獲得價值cnage –

回答

1

所選option元素必須具有selected屬性。 你應該嘗試這樣的事:

<select id="FormNameSelecting" style="position:absolute; width:300px; top:50px; left:200px; "> 
<?php 

    $result = mysqli_query($con,"SELECT * FROM Form"); 
    while($row = mysqli_fetch_array($result)) 
    {  
     echo "<option value='{$row['Form_ID']}'"; 

     if($row['Form_ID'] == $_SESSION['Form_ID']) 
     echo " selected"; 

     echo ">{$row['Form_Name']}</option>"; 
    } 
?> 
</select> 

UPDATE:

您可以將其存儲在$_SESSION形式提交

<?php 
    session_start(); // dont forget it! 

    if(isset($_POST['submit'])) 
    { 
    $_SESSION['Form_ID'] = $_POST['Form_ID']; 
    $_SESSION['Form_Name'] = $_POST['Form_Name']; 
    } 
?> 
+0

嗨,感謝您的回覆。這是我第一次啓動會話變量。我沒有提到$ _SESSION ['Form_ID']變量。所以我不需要分配$ row ['Form_ID'],而是檢查它們是否相等。你能解釋一下爲什麼這個選項必須有一個選定的屬性。 :) – t4thilina

+0

你必須添加[html指定](http://www.w3schools.com/tags/att_option_selected.asp) – ailinykh

0

試試這個

<form name="my_name" method="POST" action=""> 
<select name="FormNameSelecting" id="FormNameSelecting" style="position:absolute; width:300px; top:50px; left:200px; "> //don't forget put name at select 
<option></option> 
<?php 

    $result = mysqli_query($con,"SELECT * FROM Form"); 
    while($row = mysqli_fetch_assoc($result)){ //prefer using assoc that array  
    echo "<option value='" . $row['Form_ID'] . ":::" . $row['Form_Name'] . "'>" . $row['Form_Name'] . "</option>"; 
    } 
?> 
</select> 
<input type="submit" name="go" value="go"/> 
</form> 

<?php 
if(isset($_POST['go'])){ 

    $store_sesi = explode(":::",$_POST['FormNameSelecting']); 
    $_SESSION['ID'] = $store[0]; 
    $_SESSION['Name'] = $store[1]; 
} 
?> 

希望以後這段代碼可以幫助你

+0

的選定屬性beaceuse嗨,非常感謝你的回覆。 :)爲什麼我們使用爆炸方法? $ store_sesi = explode(「:::」,$ _ POST ['FormNameSelecting']); – t4thilina

+0

如果你看到我在myanswer修改的選項,我在一個選項中加入2值作爲一個值..並且該值由':::'分隔,並且你可以使用其他分隔你想...然後我發送值,通過POST,我需要再次拆分值...在PHP中,我使用'爆炸()',爆炸的結果將成爲數組... ... – Hans

0

試試這個: 在你的頁面中添加這一點,再創建一個頁面「showValues.php」(這是您要創建和使用您的會話變量的頁面)showValues.php的。代碼也給出例如下面。

<html> 
<head> 
<script> 
function showValue(vals) 
{ 
    if (window.XMLHttpRequest) 
    { // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function() 
    { 

     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 

      var val= xmlhttp.responseText; 

      document.getElementById("tbl").innerHTML+=val; 

     } 
    } 
    xmlhttp.open("GET","showValues.php?vals="+vals,true); 
    xmlhttp.send(); 

} 
</script> 
</head> 
<body> 
<table id="tbl"> 
    <tr> 
    <td> 
    <select id="FormNameSelecting" style="position:absolute; width:300px; top:50px; left:200px; "><option></option> 
<?php 

$result = mysqli_query($con,"SELECT * FROM Form"); 
while($row = mysqli_fetch_array($result)){  
echo "<option value='$row[Form_ID]'>$row[Form_Name]</option>"; 
echo 
} 
?> 
</select> 
</td> 
</tr> 
</table> 
</body> 
</html> 

showValues.php

<?php 
session_start(); 
$vals=$_REQUEST['vals']; 
$_SESSION['SelectValue']=$vals; 
echo $_SESSION['SelectValue']; 
?> 
相關問題