我似乎无法为此找到解决方法。
我有一个基于智能的脚本即时使用。
我正在尝试以某种方式从我提交的帖子页面上的表单提交2个值。我实际上已经成功地将几个字段发布到我当前表单中的“posts”表中。
但是,这就是我的问题所在,我需要将类别名称和类别ID都添加到他们自己的列中。现在我只能选择其中一个。
我的表单包含:
<select name="category" id="category" >
{section name=i loop=$msgcat}
<option value="{$msgcat[i].catname|stripslashes}">{$msgcat[i].catname|stripslashes}</option>
{/section}
</select>
将在html中将其呈现为:
<select id="category" name="category">
<option value="Car">Car</option>
<option value="Truck">Truck</option>
<option value="Boat">Boat</option>
<option value="Motorcycle">Motorcycle</option>
<option value="RV">RV</option>
<option value="Other">Other</option>
</select>
在同一种形式中是否有一种方法我可以有一个名为catid的隐藏输入字段,它可以根据选择的“类别”下拉选择分配相关的类别ID“值”?
类似于“如果类别选择= Car,则隐藏输入值= 1”(必须包含每个下拉选择的规则)
这会在php中完成吗? JavaScript的?
有没有更好的方法来做我想做的事情?
现在,“类别”下拉字段已正确提交到“posts”表中的“category”列。我需要catid进入同一个表中的“catid”列。
catid是每个类别的定义值,例如Car = 1,Truck = 2,Boat = 3 ......
其中1是“Car”的catid ......依此类推。
答案 0 :(得分:3)
您的category
表中是否包含catid
和posts
列?你应该规范你的表。仅在catid
表中包含posts
,并在categories
表中引用它。
如果您未进行规范化,稍后,如果您决定将类别Car
重命名为Sedan
,该怎么办?然后,您必须更改category
表格中的每个posts
列。如果您正常化,则只需更改categories
表格中的一行,并将Car
更改为Sedan
,所有帖子都会显示更新的类别名称。
示例posts
表:
id | catid | title | content | date
1 | 1 | something about cars | the content of the post | 2013-10-01
示例categories
表:
id | name
1 | Car
2 | Truck
3 | Boat
http://en.wikipedia.org/wiki/Database_normalization
如果您不想要标准化数据库,那么在您的选择下拉列表中,您将传递catid
,并在PHP脚本中获取ID并从{{1}中查找相应的类别名称} table。
<强>更新强>
使用MySQL JOIN在提取帖子时获取类别名称。
获取所有帖子:
categories
按ID获取帖子:
SELECT posts.*, categories.name as category FROM posts p JOIN categories c ON p.catid = c.id
然后在显示你的帖子时,你可以这样做:
echo SELECT posts.*, categories.name as category FROM posts p JOIN categories c ON p.catid = c.id WHERE posts.id = YOUR_ID
,它将打印出类别名称
更新2
然后像@jeff那样做。将管道放入SELECT OPTION值。
$post['category']
在PHP中,执行以下操作:
<select name="category">
<option value="1|Car">
<option value="2|Truck">
</select>
答案 1 :(得分:0)
只需将信息放在value属性中即可。我用的是分离数据和服务器端分离这些信息。假设你使用$ msgcat [i] .catid作为你的id变量
<select name="category" id="category" >
{section name=i loop=$msgcat}
<option value="{$msgcat[i].catid}|{$msgcat[i].catname|stripslashes}">{$msgcat[i].catname|stripslashes}</option>
{/section}
</select>