2012-09-12 123 views
0

我有一個組名列表的PHP下拉列表(與id一起,因此可以更新)。在此FORM頁面中,您可以通過從數據庫中出現的下拉列表中選擇可能性來更改爲某個項目指定的組名稱。我的代碼如下,但是必須有更好的方式,因爲我得到了第一個字段作爲當前設置,然後是所有可能性,所以我得到了這個記錄兩次。PHP從數據庫中刪除所有記錄+選擇當前記錄

例子:
- 鍵盤(當前設置)
- 揚聲器(可以選擇,直接從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>"; 
+0

而不是運行兩個查詢,你可能運行一個單一的查詢?噹噹前記錄「itemgroupname」匹配「$ itemgroupname」時,只需要爲該記錄回顯「選定」。 – andrewsi

回答

4

有2種方式來實現你在找什麼:

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

+0

他說了什麼!哈哈,我從字面上正好用這兩個選項發佈完全相同的答案。 – RobMasters

+0

我只是不能得到第二個選項的工作... –

+0

你有任何錯誤或確切地說是什麼不工作? – Michi

1

OK

在你的代碼。 而非產​​出您在頂部選擇的值,做正確的方式:)

在輸出選擇當前項目(請記下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> 
+0

我是這個哈哈的假人。和($ savedid == value = $ nt ...)給我錯誤,因爲值後的'='。 –

+1

在那裏,不知何故,我有錯誤的單詞值。 – BugFinder

0
添加

選擇的記錄到一個空數組第一像

默認
toDisplay = array('selected_record'); 

然後,使用您的sql從數據庫中獲取數據並將其附加到該數組。

後來運行array_unique,最後使用循環創建html輸出字符串,與現在一樣。