繁体   English   中英

INSERT / UPDATE PHP变量以及SQL中其他表的值

[英]INSERT/UPDATE PHP variables together with values of other tables in SQL

我有一个名为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);
}

因此,我没有通过functionIDsupervisorID而是通过functionNamesupervisorName
我在应用程序上的网格显示userNamefunctionName (非ID), supervisorName (非ID), firstName ,...

现在,如果我的应用程序传递了userNamefunctionName (因此需要将其转换为functionID ), supervisorName (需要转换为supervisorID ),如何创建新用户以及如何更新用户,我将userNamefirstName ,...
我尝试了很多查询,但似乎无法弄清楚。

有人可以帮我吗?

提前致谢!

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

我想您的表单具有组合框( <select> )或类似控件(单选按钮设置,列表)来选择功能和管理器。 输入select ID的值,而不是名称:

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

然后,您无需执行任何映射。

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

对于初学者,您应该对combo使用valueFielddisplayField选项,并与列渲染器结合使用,以在网格中显示名称而不是id,即使用户未编辑(即,单元格未使用组合)。

暂无
暂无

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

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