PHP从数据库中删除所有记录+选择当前设置记录

时间:2012-09-12 10:34:23

标签: php html select drop-down-menu menu

我有一个组合名列表的PHP下拉列表(连同id,因此可以更新)。在此FORM页面中,您可以通过从数据库中显示的下拉列表中选择可能性来更改为项目指定的组名称。我的代码可以使用,但必须有更好的方法,因为我得到第一个字段作为当前设置,然后是所有可能性,所以我得到了这个记录两次。

示例:
  - 键盘(当前设置)
  - 演讲者(可直接从DBS中选择)
  - Midi控制器(可直接从DBS中选择)
  - 键盘(可直接从DBS中选择)
  - 鼓组(可直接从DBS中选择)

如您所见,我再次获得了当前设定的记录。

我的代码:

echo "<select name='itemgroupid'>";
// CHOOSE CURRENT SET RECORD AS SELECTED ITEM
echo "<option value='" . $itemgroupid . "'>";
$selected="
SELECT item.itemid, itemgroup.itemgroupname, itemgroup.itemgroupid 
FROM item, itemgroup 
WHERE item.itemid=$itemid";
$selectedresult=mysql_query($query) or die("query fout " . mysql_error() );
while($record=mysql_fetch_array($selectedresult) ) {
echo "" . $itemgroupname . "</option>";
}
// QUERY TO SHOW ALL POSSIBLE CHOOSABLE RECORDS FROM DATABASE
$itemgroupquery="SELECT itemgroupname,itemgroupid FROM itemgroup";
$itemgroupqueryresult = mysql_query ($itemgroupquery);
while($nt=mysql_fetch_array($itemgroupqueryresult)){
    echo "<option value=$nt[itemgroupid]>$nt[itemgroupname]</option>";
}
echo "</select>";

3 个答案:

答案 0 :(得分:4)

有两种方法可以实现您的目标:

1)在下拉列表顶部显示所选项目

echo "<select name='itemgroupid'>";
// CHOOSE CURRENT SET RECORD AS SELECTED ITEM
echo "<option value='" . $itemgroupid . "'>";
$selected="
SELECT item.itemid, itemgroup.itemgroupname, itemgroup.itemgroupid 
FROM item, itemgroup 
WHERE item.itemid=$itemid";
$selectedresult=mysql_query($query) or die("query fout " . mysql_error() );
while($record=mysql_fetch_array($selectedresult) ) {
echo "" . $itemgroupname . "</option>";
}
// QUERY TO SHOW ALL POSSIBLE CHOOSABLE RECORDS FROM DATABASE
$itemgroupquery="SELECT itemgroupname,itemgroupid FROM itemgroup WHERE item.itemid != $itemid";
$itemgroupqueryresult = mysql_query ($itemgroupquery);
while($nt=mysql_fetch_array($itemgroupqueryresult)){
    echo "<option value=$nt[itemgroupid]>$nt[itemgroupname]</option>";
}
echo "</select>";

2)在自然的地方显示所选项目

echo "<select name='itemgroupid'>";
// QUERY TO SHOW ALL POSSIBLE CHOOSABLE RECORDS FROM DATABASE
$itemgroupquery="SELECT itemgroupname,itemgroupid FROM itemgroup";
$itemgroupqueryresult = mysql_query ($itemgroupquery);
while($nt=mysql_fetch_array($itemgroupqueryresult)){
    echo "<option value=$nt[itemgroupid]";
    if( $itemid == $nt['itemgroupid'] ) echo ' selected="selected"';
    echo ">$nt[itemgroupname]</option>";
}
echo "</select>";

HTH

答案 1 :(得分:1)

在你的代码中。 而不是在顶部输出您选择的值,以正确的方式执行:)

选择您当前的项目(例如记下itemgroupid)

然后在你的输出中

while($nt=mysql_fetch_array($itemgroupqueryresult)){ 
    echo "<option ";
    if ($savedid==$nt[itemgroupid]) echo "selected ";
    echo "$nt[itemgroupid]>$nt[itemgroupname]</option>"; 
} 
echo "</select>"; 

这将使用$ savedid = 1

生成
<option value=0>group 0</option>
<option selected value=1>group 1</option>
<option value=2>group 2</option>

答案 2 :(得分:0)

首先将默认选定记录添加到空数组,如

toDisplay = array('selected_record');

然后,使用您的sql从数据库中获取数据并将其附加到此数组。

稍后在其上运行array_unique并最终使用循环创建html输出字符串,就像你现在一样。