2013-10-06 20 views
-1

我对这一切都很陌生,我似乎无法在google上找到正确的搜索来获取我正在寻找的答案。我有一个用户将用来创建新事务的前端。有一个下拉菜单绑定到与“交易”具有1:M关系的“类别”表(参见图片)。我的问题是,如果用户提交此表单以保存新的交易,他们不知道类别表中的ID,他们所做的只是从类别表中拉出的下拉列表中选择一个。我所知道的在这一点上的做法是从下拉菜单中取出他们的输入并将其存储到交易表中的一个字段中。我试图理解如何使用关系,但是由于我对密钥的工作原理有限的理解,似乎除非你知道身份证号码是什么,否则这种关系并不好。如果您所做的只是从下拉列表中提取并将其存储在交易表中,那么您仍然只是将类别名称存储在2个不同的表中,那么具体是什么意思?我错过了在这里的一个步骤,我希望有人可以帮助理解这一点。网站用户如何与数据库交互?

enter image description here

回答

2

用户不知道类别ID。 (尽管他们可以,如果他们想要的话,那就是标记。)更重要的是,你的代码会知道类别ID。创建该下拉列表(select元素)时,您的代码将填充这两个的ID和名称。该ID用于该值,该名称用于显示文本。

产生的标记可能是这样的:

<select name="category"> 
    <option value="1">First Category</option> 
    <option value="2">Second Category</option> 
    <option value="3">Third Category</option> 
</select> 

等。

当用户选择一个时,他们会根据文本进行选择。但实际的表单会将所选选项的发回给服务器。因此,如果用户选择Second Category,那么在您的服务器端代码$_POST["category"]将包含值2,这是您需要插入到交易记录中的ID。

+0

好的,是的!这就是我想要了解的。我最终想要做的是让用户能够添加更多的类别,那么有没有办法让选项标签自动增量中的值与类别ID一起使用? – hyphen

+0

@ user1476992:没有可靠的方法。标识符的真实来源是数据库。所以你不希望你的UI在这种情况下创建键。你可以做的是让用户输入一个类别,然后在你的服务器端代码中检查类别是否存在,如果不存在则添加它,然后从插入的新添加的ID中插入以便插入交易记录。 ('LAST_INSERT_ID()'是获取新添加的ID的有用的MySQL函数:http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id) – David

+0

ok , 谢谢!! – hyphen