0

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

示例:
- 键盘(当前设置)
- 扬声器(可以选择,直接来自 DBS)
- MIDI 控制器(可以选择,直接来自 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>";
4

3 回答 3

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>";

高温高压

于 2012-09-12T10:43:25.123 回答
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>
于 2012-09-12T10:44:13.127 回答
0

首先将默认选择的记录添加到一个空数组中

toDisplay = array('selected_record');

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

稍后运行array_unique它,最后使用循环创建 html 输出字符串,就像你现在做的那样。

于 2012-09-12T11:17:10.797 回答