如何在下拉菜单中将传递的值用作默认值?

时间:2011-10-14 21:02:45

标签: php mysql

- 编辑更好地描述情景 -

我有一个包含2个表,技术人员和work_orders的MySQL数据库。技术人员表包含列techID,tech_surname,tech_firstname和tech_userlogin。 work_orders表包含columnsjobID(PK),wtechID,wtech_surname,wtech_firstname和wtech_userlogin等。

我有一个页面,其中包含一个列出已提交工单的重复区域,工单的日期是一个链接,它将URL中的jobID传递给包含更新表单的页面。表单中填充了从work_orders表中获取的数据,特别是jobID(客户名称,地址,装备修理,问题等)。在表单上是从技术人员表填充的下拉列表。此下拉列表列出了技术人员的tech_userlogin。我已将隐藏字段包含在表单页面中,wtech_userlogin和wtechID。 当我查看页面的来源时,它会显示work_orders表中的值,但我不知道如何将其用于查询以完成所需的结果。

当表单发布时,它会更新work_orders表。所有这些都有效。 我希望实现的是,如果已经选择了技术人员,则特定工单的wtech_userlogin(来自work_orders表)将成为下拉菜单的默认值。如果之前没有从下拉菜单中选择,我希望下拉菜单的默认值为“ - 选择技术员 - ”。我尝试过一些东西但到目前为止没有任何作用。

以下是下拉列表的代码:

<select name="tech_userlogin" id="tech_userlogin">
              <?php
        $sql="SELECT techID, tech_userlogin FROM technicians";
$result=mysql_query($sql);

$options="";

while ($row=mysql_fetch_array($result)) {

    $techID=$row["techID"];
    $tech_userlogin=$row["tech_userlogin"];
    $options.="<option value=\"$tech_userlogin\">$tech_userlogin</option>";
}

if(empty($tech_userlogin)) {
die ('You must select a Technician');
}

?>
              <option value='<?php echo $options; ?>' selected='selected'>""<?php echo $options; ?>
          </select>

任何人都可以帮我解决这个问题吗?任何帮助将不胜感激。我是PHP和MySQL的新手。我正在学习网页设计课程,我们使用的是Dreamweaver。我想脱离Dreamweaver并在没有向导的情况下学习如何做到这一点。我已经能够发布我的表单了,我的所有插入,更新和删除功能都可以从我从互联网上拼凑起来的东西中发挥作用,但是这个让我感到难过。

干杯。

2 个答案:

答案 0 :(得分:1)

这样的事情就是你想要的:

<select name="tech_userlogin" id="tech_userlogin">
<?php
    $sql="SELECT techID, tech_userlogin FROM technicians";
    $result=mysql_query($sql);

    while ($row=mysql_fetch_array($result)) 
    {
        $techID = $row['techID'];
        $tech_userlogin=$row['tech_userlogin'];

        // Here - check if the tech id in the query matches the logged in tech's id
        $selected = ($techID == $_SESSION['techID']) ? 'selected="selected"' : '';

        echo '<option value="' . $tech_userlogin . '" ' . $selected . '>' . $tech_userlogin . '</option>' . "\n";
    }

?>
</select>

答案 1 :(得分:0)

好吧,你的代码有很多问题。让我们从我没有看到您指定选择的位置开始。您应该通过帖子将其发送到脚本。然后,在字符串中连接选项标记,然后将该字符串作为值添加到另一个选项。最后,您的变量$ tech_userlogin是数据库表技术人员中最后一行的tech_userlogin列的值。

编辑1:请参阅评论。

让我们试着解决它:

<?php
    // first thing: check if a post was sent
    if($_POST)
    {
        if(!empty($_POST['technician']))
        {
            @session_start();
            $_SESSION['tech'] = $tech;
        }
    }

    if(!empty($_SESSION['tech']))
    {
        $tech = $_SESSION['tech'];
    }
    echo '<form action="" method="post">


    $sql = "SELECT `techID`,`tech_userlogin` FROM `technicians`";
    $sql = mysql_query($sql);

    if(!mysql_num_rows($sql))
    {
        echo 'There is no technician in the database'; // or use die for radical thinking
    }

    $options = '';
    $technicians = array();
    echo '<select name="tech_userlogin" id="tech_userlogin">';
            if(empty($tech))
            {
                echo '<option value="">-- Select technician --</option>';
            }
    while($row = mysql_fetch_array($sql))
    {
         $technicians[] = $row;
         $options .= '<OPTION VALUE="'.$tech_userlogin.'" '.((!empty($tech) && $tech == $tech_userlogin)) ? 'selected="selected"' : '').'>'.$tech_userlogin.'</option>';
    }

    echo $options;
    echo '</select>';
    echo '<input type="submit" value="Please submit you selection" />';
    echo '</form>';

?>

我希望它有所帮助:)。