在选择框表单和PHP中处理会话值

在选择框表单和PHP中处理会话值,php,forms,post,submit,session-variables,Php,Forms,Post,Submit,Session Variables,我有一张这样的表格和桌子。 我想做的是-如果选择框中选择了一个值,它将存储在提交(post)时的会话中,我希望在选择框中保留会话值。 如果有会话值,它将在选择框中显示会话值,否则它将显示所有会话值。 以下案例在我的案例中不起作用。 下面的代码所做的是-第一次它没有设置会话值。如果我再次提交(第二次),会话将与第一个值(第一次提交值)一起存储,并且它将继续这样进行。 希望这个问题可以回答 编辑: <?php session_start(); if($_POST){

我有一张这样的表格和桌子。 我想做的是-如果选择框中选择了一个值,它将存储在提交(post)时的会话中,我希望在选择框中保留会话值。 如果有会话值,它将在选择框中显示会话值,否则它将显示所有会话值。 以下案例在我的案例中不起作用。 下面的代码所做的是-第一次它没有设置会话值。如果我再次提交(第二次),会话将与第一个值(第一次提交值)一起存储,并且它将继续这样进行。 希望这个问题可以回答

编辑:

    <?php 
    session_start();
    if($_POST){ 
    $_SESSION['book_id'] = $_POST['book_id'];
    ?>
    <table class="table table-bordered" cellpadding="0" cellspacing="0" border="0">
    My Table Content
    </table>
    <?php } ?>

    <form method="post">
    <?php print_r($_SESSION); ?>
    <select name="book_id" class="form-control">
    <option value="0">Select Book</option>
    <?php while($row=mysql_fetch_array($book_query)){?>
    <option <?php if(isset($_SESSION['book_id']) && $row['book_id'] == $_SESSION['book_id']) echo 'selected="selected"'; ?> value="<?php  echo $row['book_id'];?>"><?php echo $row['book_name']; ?></option>
    <?php  }?>
    </select>
    <input type="submit" value="submit">
    </form>

我的表格内容
选书
编辑:


我已经打印了会话值。 发生的情况是-当我第一次提交表单时,会话值为空。 当我第二次提交它时,第一个提交值存储在会话中,并继续

谢谢, Kimz

一些注意事项:

看来你把书号和书名弄混了

此外,您似乎没有在表单中提交“书名”


“if($\u POST)”块在加载页面时执行,而不是在发送表单时执行。因此,基本上,您首先尝试通过会话中的值来选择某个内容,然后将所述值存储到会话中。

首先确保会话的某个位置包含了session\u start()

其次,尝试将选项上的IF更改为:

<?php if(isset($_SESSION['book_id']) && $row['book_id'] == $_SESSION['book_id']) echo 'selected="selected"'; ?>

注意isset。如果没有页面加载,您可能会得到一个PHP未定义索引错误


最后,尝试在显示表单之前放置'if($\u POST){}',以便在显示表单之前设置会话。当前,在再次刷新页面之前,您不会看到任何更改,这是因为表单正在呈现,然后会话将从POST数据中设置。

是否添加了一些代码,如“session_start();”?session_start已经存在。我已在页面顶部声明了这一点。我在这段代码中没有提到。对不起,您应该在选择框0603之前的页面顶部添加$\u POST语句-我也这样做了。检查我编辑的代码。帮帮我!!!哦,再次检查我的问题,我已经编辑了。打字错误对不起。你现在能帮我编码吗?我已经打印了会话值。发生的情况是-当我第一次提交表单时,会话值为空。当我第二次提交它时,第一个提交值存储在会话中,并且它会继续。我已经尝试了所有三个。它不起作用。请帮帮我。无聊-我已经编辑了你提到的。再次检查我的代码。它不再工作了。你能在你的机器上检查一下吗?我已经打印了会话值。发生的情况是-当我第一次提交表单时,会话值为空。当我第二次提交它时,第一个提交值存储在会话中,并继续进行。我已经测试了您的代码,它工作得很好。这就是发生在我身上的事情:1。print\u r为空--2。提交id为2--3的表格。Print_r现在显示会话中保存的id=2,下拉列表中选择了id 2--4。选择id 4和会话更新以显示id=4,此时在下拉列表中选择了4。这就是你看到的吗?