PHP下拉粘贴并提交表单

时间:2010-01-18 20:07:09

标签: php

好的,所以我有一个由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");

2 个答案:

答案 0 :(得分:0)

好的,那里有很多问题,但除了通用代码结构之外:

  1. 您正在从不存在的POST值设置会话变量。 (根据您的代码,它应为$_POST['ClientNamefour']。)

  2. 由于某种原因,您正在拨打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答案的评论,我对此进行了更新。我也假设你的所有代码都在一页上。