2

我有一张桌子叫Users. 此表包含参数: userIDuserNamefunctionIDsupervisorIDfirstNamelastNameemail

当我将用户加载到使用 EXT JS 创建的应用程序中时,我在 PHP 中使用以下查询:

public function getEmployees(stdClass $params)
{
    global $DBH;
    $STH = $DBH->query(
        "SELECT u.id, u.userName AS 'userName', f.functionName, us.userName AS 'supervisorName', u.firstName, u.lastName, u.email 
         FROM users AS u 
         INNER JOIN functions AS f ON u.functionID=f.id
         LEFT JOIN users AS us ON u.supervisorID=us.id 
         ORDER BY u.id");
    return $STH->fetchAll(PDO::FETCH_ASSOC);
}

所以不是通过functionIDandsupervisorID我通过functionNameand supervisorName
我的应用程序上的网格显示userName, functionName(not ID), supervisorName(not ID), firstName,...

现在我对如何创建新用户以及如果我的应用程序通过 , userNamefunctionName因此需要将其转换为functionID)、supervisorName(需要转换为supervisorIDfirstName、...
已经尝试了许多查询,但我似乎无法弄清楚。

有人可以帮我吗?

提前致谢!

评论后更新:
我应该提到我的网站是用 Sencha 的 EXT JS 构建的。
只有管​​理员可以编辑或创建新用户。
创建/编辑在 EXT Grid 中完成,JSON 数据通过 Ext.Direct 传递给 PHP。
所以我需要一种方法来获取与应用程序传递的functionIDsupervisorID相关联的functionName和。supervisorID

4

2 回答 2

1

我想您的表单有组合框 ( <select>) 或类似的控件(单选按钮集、列表)来选择功能和主管。制作selectID 的值,而不是名称:

<select name="function">
    <option value="1">Boss</option>
    <option value="2">Stableman</option>
    <option value="3">Servant</option>
    <option value="4">Shepherd</option>
</select> 

然后你不需要做任何映射。

于 2013-04-23T16:21:03.783 回答
0

马丁是对的,这是一个客户端问题。如果您不知道如何配置组件以使它们在请求中提交 id,您宁愿在 ExtJS 代码中发布问题。

对于初学者,您应该使用valueField组合displayField选项,再加上一个列渲染器以在网格中显示名称而不是 id,即使用户没有编辑(即单元格不使用组合呈现) .

于 2013-05-30T18:10:42.240 回答