PHP下拉列表和提交表单

PHP下拉列表和提交表单,php,Php,好的,我用Mysql数据库填充了这个下拉列表。更改下拉列表时,整个页面将从数据库中填充信息。当我提交此表单时,我希望此页面上有两个表单返回到我刚才在下拉列表中选择的同一客户机。现在,我正在使用一个会话将它带回来,并像以前一样选择同一个客户机,但on change事件并没有启动,也没有从我的数据库中为所选的人选择信息。谢谢 session_start(); $current = isset($_SESSION['ClientNamefour']) ? $_SESSION['ClientName

好的,我用Mysql数据库填充了这个下拉列表。更改下拉列表时,整个页面将从数据库中填充信息。当我提交此表单时,我希望此页面上有两个表单返回到我刚才在下拉列表中选择的同一客户机。现在,我正在使用一个会话将它带回来,并像以前一样选择同一个客户机,但on change事件并没有启动,也没有从我的数据库中为所选的人选择信息。谢谢

 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");

好的,这里有很多问题,但除了一般的代码结构:

您正在根据不存在的POST值设置会话变量。根据您的代码,它应该是$u POST['ClientNamefour']

由于某种原因,您两次调用会话\ u start。一开始就打一次电话

如果在流程页面上设置$\u SESSON['ClientNamefour']=$\u POST['ClientNamefour'],则在构建流程的选项时应该执行类似的操作


编辑:看到你对middaparka回答的评论,我更新了这个。我也假设您的所有代码都在一个页面上。

重定向也是在HTML内容输出到用户代理之后进行的。会话开始两次的原因是代码驻留在两个不同的页面上。一个过程页面和一个是实际的网站。这篇文章确实存在于页面的后面。如何使onchange在会话返回时工作?如果是这种情况,您需要将上述代码重新格式化为两段,并添加相关的缺失位-目前很难判断是什么,也无法调试我们看不到的代码-
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>";
}