0

我知道这是一个与已经问过的问题类似的问题,但我希望对一个问题有不同的答案。我有一个表格,您可以在其中将新文章上传到数据库中,所有作品都很棒,很棒,很棒。表单使用文章类型的下拉菜单,我的下拉框中有新闻、八卦、旅行、表演等。当您上传到数据库时,它只会添加选定的项目,比如说,在这种情况下,新闻。

我需要用户能够编辑他们的文章,所以我需要用所选项目填充下拉框。我认为在 BUM 中设置一个包含每个放置项和它们的 ID 的数据库表有点痛苦。是否可以将所选项目设置为数据库中的值,然后仅使用 if 语句或其他内容来填充下拉框的其余部分?

希望这是有道理的。我还认为使用单选按钮可能是一种解决方案,但是我无法使用数据库中的值设置所选按钮。

4

4 回答 4

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>';
于 2009-02-22T16:05:01.827 回答
1

听起来您想将文章类型放在表格中或类似的东西中。

然后,您可以从表中加载下拉列表,并将对文章类型 ID 的引用存储在文章表中。

另外,它应该可以更快地检索给定类型的所有文章,因为您将在 ID 上进行查找。

于 2009-02-22T16:03:46.777 回答
1

在我看来,这更像是一个数据库设计问题。您的基本设计似乎有缺陷。我试图从你的问题中推断出这个问题,所以如果我偏离了轨道,请耐心等待。

这是设计的相关部分,应该是 IMO:

表:文章


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

表:科目


SubjectID
SubjectDescription
..
..
.. Other columns.

请注意,我将第二个表称为 Subjects 以更好地说明我的含义。这样,每篇文章都有一个对文章类型(主题)的引用。现在,当您检索“文章类型”下拉列表的数据时,您只需检索第二个表中的所有行,然后根据当前选择(从第一个表中)设置所选项目。

于 2009-02-22T16:18:48.360 回答
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 的多个参数。

于 2009-02-22T16:09:50.770 回答