【问题标题】:Store the drop down selected value in a SESSION variable将下拉选择的值存储在 SESSION 变量中
【发布时间】:2013-11-25 22:51:34
【问题描述】:

我从数据库中获取一组值以显示在下拉列表中。一旦用户从下拉列表中选择了一个项目,则应将所选项目分配给一个 SESSION 变量。我试过这个,但它不工作。请smeone帮我整理一下。

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

所以我需要将从 $row[Form_ID] 和 $row[Form_Name] 接收到的这些值存储在名为 $_SESSION['Form_ID'] 和 $_SESSION['Form_Name'] 的 2 个会话变量中;有人可以解释一下如何将所选项目的值分配给这两个会话变量。

【问题讨论】:

  • 您想在更改所选项目或提交表单或选择后将 id 存储到会话中
  • :) 我需要为 onchange 事件做这件事。
  • 那么首先你必须添加某种 ajax 或 javascript 来获得 cnage 的价值
  • 查看答案,它为您提供了从 ajax 获取价值的方法。并创建一个会话变量。

标签: php html session


【解决方案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>

更新:

表单提交后可以存储在$_SESSION

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

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

【讨论】:

  • 您好,感谢您的回复。这是我第一次启动会话变量。我没有提到 $_SESSION['Form_ID'] 变量。所以我不需要分配 $row['Form_ID'] 而是检查它们是否相等。您能否解释一下为什么该选项必须具有选定的属性。 :)
  • 你必须添加选中的属性,因为html specify
【解决方案2】:

试试这个: 在您的页面中添加此内容并再创建一个页面“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'];
?>

【讨论】:

    【解决方案3】:

    试试这个

    <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];
    }
    ?>
    

    希望此代码对您有所帮助

    【讨论】:

    • hii 非常感谢您的回复。 :) 为什么我们使用explode 方法? $store_sesi = explode(":::",$_POST['FormNameSelecting']);
    • 如果您在 myanswer 看到我修改的选项,我将 2 个值作为一个值加入一个选项.. 并且该值由 ::: 分隔,您可以使用其他分隔符。 .然后我通过POST发送值,我需要再次拆分值..在PHP中我使用explode(),explode的结果将变成数组...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    相关资源
    最近更新 更多