2013-11-25 4 views
0

Im, получая набор значений из базы данных для отображения в выпадающем списке. Как только пользователь выбрал элемент из выпадающего списка, выбранный элемент должен быть назначен переменной 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] в 2-х переменных сеанса с именем $ _SESSION [ 'form_id'] и $ _SESSION [ 'FORM_NAME']; Может ли кто-нибудь объяснить мне, как я могу присвоить значения выбранного элемента этим двум переменным сеанса.

+0

вы хотите сохранить идентификатор в сессию изменения выбранного пункта или после отправки формы или выберите –

+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

Вы должны добавить выбранный атрибут beaceuse из [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

hii Большое вам спасибо за ответ. :) Почему мы используем метод взрыва? $ store_sesi = explode (":::", $ _ POST ['FormNameSelecting']); – t4thilina

+0

, если вы видите параметр i modify at myanswer, я присоединяю значение 2 как одно значение при одном параметре .. и значение разделяется символом ':::', и вы можете использовать другие разделенные, которые хотите ... затем я отправил значение через POST, мне нужно разделить значение снова .. и в PHP я использую 'explode()', а результат взрыва станет массивом ... – Hans

0

Попробуйте: На странице добавить это и создать еще одну страницу «showValues.php» (Это страница, на которой вы хотите создать и использовать переменную сеанса) .Code из 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']; 
?>