2009-02-22 45 views
0

我知道這是一個類似的問題,已經問過,但我希望對問題有不同的答案。我有一個表單,您可以將新文章上傳到數據庫,所有的作品都是精美的,精彩的,光鮮的。表單使用文章類型的下拉菜單,我的下拉框中有新聞,八卦,旅行,表演和其他內容。當你上傳到數據庫時,它只會添加所選項目,比如說,在這種情況下,新聞。從數據庫編輯時如何填充單選按鈕或下拉框?

我需要用戶能夠編輯他們的文章,所以我需要用選定的項目填充下拉框。我認爲在BUM中設置一個包含每個drop項目和一個ID的數據庫表是一種痛苦。是否有將選定的項目設置爲數據庫中的值,然後僅使用if語句或其他內容來填充下拉框的其餘部分?

希望是有道理的。我也認爲使用單選按鈕可能是一個解決方案,但我不能得到那個設置選定的按鈕與數據庫中的值。

回答

2

你可以做這樣的事情:

// array of available options 
$available = array('news'=>'News', 'gosip'=>'Gosip', 'travel'=>'Travel', 'performances'=>'Performance'); 
// selected option value 
$selected = 'news'; 
echo '<select name="article-type">'; 
foreach ($available as $val => $label) { 
    echo '<option value="'.htmlspecialchars($val).'"'; 
    if ($val == $selected) { 
     echo ' selected="selected"'; 
    } 
    echo '>'.htmlspecialchars($label).'</option>'; 
} 
echo '</select>'; 
1

聽起來像你想把文章類型放在表格中或沿着這些線條。

然後,您可以從表格中加載下拉列表,並在文章表格中存儲對文章類型ID的引用。

在加號時,它應該使得檢索給定類型的所有文章的速度比查找ID時快得多。

+0

是的,聽起來合乎邏 – Cerebrus 2009-02-22 16:20:43

0
$options = array(,); 
$selection = filter_input(INPUT_POST, 'what'); 
$blah = true; //i don't know what to name this. 
foreach($options as $option) { 
    echo '....'; 
    if(isset($blah) && $option === $selection) { 
     echo 'selected="selected"'; 
     unset($blah); 
    } 
} 

這可能是最快的方法。另外,如果你正在追求速度,請確保充分利用echo's multiple parameters.

1

這聽起來對我來說這更像是一個數據庫設計問題。你的基本設計看起來有缺陷。我試圖從你的問題中推斷出這個問題,所以如果我的方式偏離軌道,請耐心等待。

這裏是設計的相關部分,因爲它應該是,IMO:

表:文章


ArticleID 
ArticleContent 
ArticleSubject (FK from Subjects) 
.. 
.. 
.. Other columns. 

表:受試者


SubjectID 
SubjectDescription 
.. 
.. 
.. Other columns. 

請注意,我打電話給第二個表的主題,以更好地說明我的意思。這樣,每篇文章都會引用一篇文章類型(主題)。現在,當您檢索「文章類型」下拉列表的數據時,您只需檢索第二個表格中的所有行,然後根據當前選擇(從第一個表格)設置選定項目。

相關問題