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