好的,所以我有一个由Mysql DB填充的下拉列表。在更改下拉列表时,整个页面会从数据库中填充信息。那么当我提交此表单时我想要的是什么(此页面上有两个表单)我希望它返回到我刚才在下拉列表中选择的同一个客户端。现在我正在使用一个会话将其恢复并选择与以前相同的客户端,但是更改事件并没有开始,并且从所选人员的数据库中选择信息。感谢
session_start();
$current = isset($_SESSION['ClientNamefour']) ? $_SESSION['ClientNamefour'] : 0;
$options4="";
while ($row = mysql_fetch_array($result)) {
$id=$row["Client_Code"];
$thing=$row["Client_Full_Name"];
$value="$id, $thing";
// insert SELECTED="SELECTED" if the current $id matches $current
$options4.="<OPTION VALUE=\"$value\" ".($id == $current ? ' SELECTED="SELECTED"' : '').">".$thing;
}
?>
<FORM name="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<SELECT NAME="ClientNamefour" OnChange="this.form.submit()">
<OPTION VALUE=0>Client
<?php echo $options4?>
</SELECT>
</FORM>
session_start();
// Do the redirect
$_SESSION['ClientNamefour'] = $_POST['txtclientcode'];
header("Location: http://endeavor/php/financialoasistest.php");
答案 0 :(得分:0)
好的,那里有很多问题,但除了通用代码结构之外:
您正在从不存在的POST值设置会话变量。 (根据您的代码,它应为$_POST['ClientNamefour']
。)
由于某种原因,您正在拨打session_start()
两次。 (一开始就叫它一次。)
答案 1 :(得分:0)
如果您在流程页面上设置了$_SESSON['ClientNamefour'] = $_POST['ClientNamefour']
,那么在构建<select>
的选项时应该这样做。
while ($row = mysql_fetch_array($result))
{
$id = $row["Client_Code"];
$key = "$id, $thing";
$value = $row["Client_Full_Name"];
$selected = ($id == @$_SESSION['ClientNamefour']) ? ' selected' : '';
echo "<option value=\"{$key}\"{$selected}>{$value}</option>";
}
编辑:看到您对middaparka答案的评论,我对此进行了更新。我也假设你的所有代码都在一页上。