【问题标题】:<select> with two different options not from database, but custom text php mysql, html<select> 有两个不同的选项,不是来自数据库,而是自定义文本 php mysql, html
【发布时间】:2021-01-23 18:03:36
【问题描述】:

我在 phpmyadmin 中有我的数据库,并且我有一个表“员工”。其中一个字段是“pay_item”,而这个特定字段的类型是“varchar(100)”。

我想在我的 php 网站中有一个下拉菜单,我希望它有两个不同的选项:“每小时”和“工资”。

我已经让它从数据库中检索值,所以无论该员工选择了什么,它都不会出现在屏幕上,并且将在下拉列表中选择“pay_item”。

我现在遇到的问题是,当我提交表单时,它没有将选定的选项发送到数据库。假设我想从一个编辑到另一个,它不会改变。

我知道如何使用 'while' 循环编写,并从数据库中填充,但在这种情况下,我只想拥有这两个选项,而不是使用 while,因为没有特定的表pay_items'

这是我目前的代码:


        <td colspan="3">
        <select name="pay_item">

            <?
                echo"   <option value=\"$pay_item\"";
            if($pay_item=="Regular Hourly")
                echo" selected";
                echo">Regular Hourly</option>\n";
            
                echo"   <option value=\"$pay_item\"";
            if($pay_item=="Regular Salary")
                echo" selected";
                echo">Regular Salary</option>\n";

            ?>
            </select>
        </td>

现在,我忘了提到,当它在“固定工资”时,它确实会更改为“固定小时”,但不是相反,所以我认为该结构一定有问题.

以前,我将此作为文本字段,因此人们输入“定期每小时”等,但有时他们会输入语法错误,所以我试图通过下拉菜单来避免这种情况。

我将其发送到数据库的方式是使用普通的 UPDATE 或 INSERT 查询。

$db_link->query("INSERT INTO employees (pay_item) VALUES ('$pay_item')");

$db_link->query("UPDATE employees SET pay_item='$pay_item' WHERE id = '$user_id'");

在我的数据库中,“pay_item”是 VARCHAR(100),因为我曾经将它作为文本字段,而我想要的唯一两个值是“Regular Hourly”和“Regular Salary”。所以我想创建一个下拉菜单,我可以在其中填充这两个选项。

任何帮助将不胜感激!谢谢!

【问题讨论】:

  • "它没有将所选选项发送到 DB" .. 应该将所选选项发送到 DB 的代码在哪里?
  • 这只是一个普通的 UPDATE 或 INSERT 查询..... $db_link->query("UPDATE employees SET pay_item='$pay_item' WHERE id = '$user_id'");和/或 $db_link->query("INSERT INTO employees (pay_item) VALUES ('$pay_item')");我曾经让人们在文本字段中输入“Regular Hourly”,所以效果很好,但我不希望人们输入语法错误,所以我认为下拉菜单是避免这种情况的好选择......但是改了之后就不能正常工作了……
  • 使用所有相关代码更新您的问题,包括您从表单中获取信息并保存到数据库中的部分
  • 这段代码容易受到sql注入的影响,请只使用带参数的准备好的语句见stackoverflow.com/questions/60174/…
  • 对不起@FelippeDuarte,我是新手,我正在尝试添加我知道的尽可能多的代码,但是感谢您,我也会添加它....

标签: php html mysql select dropdown


【解决方案1】:

我不确定这是不是你想要的

<td colspan="3">
    <select name="pay_item">

        <?php
        if($pay_item === "Regular Hourly"){
            echo "<option value='Regular Hourly' selected>Regular Hourly</option>";
            echo "<option value='Regular Salary'>Regular Salary</option>"
             }
         elseif($pay_item === "Regular Salary"){
             echo "<option value='Regular Salary' selected>Regular Salary</option>";
             echo "<option value='Regular Hourly'>Regular Hourly</option>";
             }
        

        ?>
        </select>
    </td>

根据 $pay_item 的值生成下拉列表

【讨论】:

  • 天啊!让我告诉你,我尝试了很多这样的变体,不知道为什么我错过了这个,是的,它修复了一切,现在它正在选择正确的选择,并接受更改/编辑。非常感谢!!!
猜你喜欢
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 2014-10-18
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多