繁体   English   中英

在中选择特定行 <select> SQL查询返回后的列表

[英]Select specific row in <select> list after return from SQL query

我要解决这个棘手的问题,在创建新员工记录时,我使用以下内容显示了具有ID号的命名商店列表,以便从下拉列表中进行选择。 在这一点上,这很好。 一段javascript会从用户选择中拆分显示的文本,并发送带有新员工详细信息的商店ID号,以将其插入数据库中的employee表中。 我正在使用一个隐藏的shopID文本框来存储数字,如javascript中所示。

这是代码PHP首先是javascript:

$result = mysqli_query($link,"SELECT shopID, shopName FROM SHOP");
            echo "<br><select class='formInput' name='listbox' id='listbox' onchange='captureShopID()' tabindex=9>";
            #Use onchange instead of onclick where Keyboard is used. onclick does not register changes fro keyboard
            while($row = mysqli_fetch_array($result))
            {
                $shopID = $row['shopID'];
                $shopName = $row['shopName'];
                $allText = "$shopID, $shopName";
                echo "<option value='$allText'>S00$shopID  $shopName</option>";
            }
            echo "</select>";

AND(包括此内容,因为它可能包含解决我的问题的提示)

<script>
function captureShopID()
{
  var sel = document.getElementById("listbox");
  var result;
  result = sel.options[sel.selectedIndex].value;
  var shopNumber = result.split(',');
  document.getElementById("shopID").value = shopNumber[0];
}
</script>

好。 到目前为止一切都很好。 我想做的是使用相同的设置修改相同的记录。 因此,更新布局类似于用于创建记录的布局。 我再次有了list元素,但我想让它显示员工在其工作的商店,否则会令人困惑,因为该列表默认为列表中的第一项,在大多数情况下不是该员工在工作的实际商店在。

因此,代替:

S001伦敦

也许应该是:

S003巴黎…员工在哪里工作。

我已经尝试过各种方法,但这是一个棘手的问题。 $ shopID和$ shopName存在选项值串联的事实可能会使我寻求解决方案的事情变得有些复杂。

PHP和javascript的新知识(JavaScript相当神秘)和整个编程。 学习速度很快,但会遭受许多天的脑细胞超负荷。

任何朝着正确方向的指针表示赞赏。

我的解决方案…经过开箱即用的思考,在项目的其他方面进行了研究。

<?php
            include "../db.php";

            $result = mysqli_query($link,"SELECT shopID, shopName FROM SHOP");
            echo "<br><select class='formInput' name='listbox' id='listbox' onchange='captureShopID()' tabindex=9>";
            #Use onchange instead of onclick where Keyboard is used. onclick does not register changes from keyboard
            echo '<option>Works at:'.$shopName.'</option>';
            while($row = mysqli_fetch_array($result))
            {
                $shopID = $row['shopID'];
                $shopName = $row['shopName'];
                $allText = "$shopID, $shopName";
                echo "<option value='$allText'>S00$shopID  $shopName</option>";
            }
            echo "</select>";
        ?>

通过在循环之外的列表顶部添加多余的内容作为列出的默认项,我实现了所需的功能:

回显'Works at:'。$ shopName。'';

结果是显示更新的员工记录,这样您从菜单中看到的商店就是您在菜单中看到的,如下所示:

在伦敦南华克工作

并弹出列表以显示其他商店选项

在伦敦南华克工作
S001巴黎市中心分布
S002巴黎蒙马特
S003伦敦南华克
S004罗马Trastevere

等等。

不完全是我最初的意图,但同样出色

我的目标是提供一个干净而简洁的界面,且没有太多标签,并且此解决方案使list元素易于说明。

如果有人对主题名称有很好的建议,请发贴,因为这很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM