1

我正在尝试将下拉菜单中的选项之一保存为会话变量。

<select name="number" id="number">
            <option>one</option>
            <option>two</option>
            <option>three</option>
        </select>

            <?php
         session_start();
$_SESSION['number'] = $_POST['number'];
?>

它在浏览器页面中返回的是:

注意:未定义的索引:第 46 行 C:\xampp-portable\htdocs\eva\00ideaselection.php 中的数字

  1. 这里有什么错误?
  2. 将下拉菜单中的选项保存为会话变量的最佳方法是什么?
4

3 回答 3

2

添加value到下拉菜单

<select name="number" id="number">
      <option value="1">one</option>
      <option value="2">two</option>
      <option value="3">three</option>
</select>

并在检索值时使用isset函数检查值是否已发布

<?php
    session_start();
    if(isset($_POST['number'])){
        $_SESSION['number'] = $_POST['number'];
    }
 ?>
于 2013-05-21T12:13:34.453 回答
0

试试这个

<select name="number" id="number">
        <option>one</option>
        <option>two</option>
        <option>three</option>
    </select>

   <?php
     session_start();
     if(isset($_POST['number']))
         $_SESSION['number'] = $_POST['number'];
  ?>

您看到的错误是因为您尚未发布表单并且您正试图从 $_POST 获取值。$_POST 和 $_GET 具有来自已发布表单的数据。因此,当您将表单发布到创建表单的同一 php 脚本时,当表单在没有表单发布的情况下加载时,它会向您显示该通知消息。为了避免通知消息,我放置了一个

   isset($_POST['number'])

检查,这样不会显示任何通知。

当表单发布时,你得到 $_POST,那么值将被设置到会话中。

谢谢

于 2013-05-21T12:17:58.793 回答
0
<select name="number" id="number">
      <option value="1">one</option>
      <option value="2">two</option>
      <option value="3">three</option>
</select>

在检索值时,使用 empty() 函数检查该值是否已发布且不为空。isset() 不检查数字作为参数在 $_POST 作为字符串传递

<?php
    session_start();
    if(!empty($_POST['number'])){
        $_SESSION['number'] = $_POST['number'];
    }
 ?>
于 2015-07-15T08:59:57.667 回答