Как заполнить переключатель или раскрывающийся список при редактировании из базы данных? - PullRequest
0 голосов
/ 22 февраля 2009

Я знаю, что этот вопрос похож на тот, который уже задавался, но я надеялся на другие ответы на проблему. У меня есть форма, где вы можете загрузить новые статьи в базу данных все отлично работает асе, замечательно, брилл. Форма использует раскрывающееся меню для типа статьи, у меня есть новости, сплетни, путешествия, выступления и другие в моем раскрывающемся списке. Когда вы загружаете в базу данных, добавляется только выбранный элемент, скажем, в данном случае, News.

Мне нужно, чтобы пользователь мог редактировать свои статьи, поэтому мне нужно заполнить раскрывающийся список выбранным элементом. Я думаю, что в BUM довольно сложно настроить таблицу базы данных с каждым из элементов отбрасывания и идентификатором для них. Можно ли установить выбранный элемент как значение в БД, а затем просто использовать оператор if или что-то для заполнения остальной части раскрывающегося списка?

Надеюсь, это имеет смысл. Я также думал, что использование радиокнопок может быть решением, однако я не могу получить это, чтобы установить для выбранной кнопки значение в БД.

Ответы [ 4 ]

2 голосов
/ 22 февраля 2009

Вы можете сделать что-то вроде этого:

// 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 голос
/ 22 февраля 2009

Мне кажется, что это больше проблема дизайна базы данных, чем что-либо еще. Ваш основной дизайн кажется порочным. Я пытаюсь вывести проблему из вашего вопроса, так что терпите меня, если я не в курсе.

Вот соответствующая часть дизайна, как и должно быть, ИМО:

Таблица: Статьи


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

Таблица: предметы


SubjectID
SubjectDescription
..
..
.. Other columns.

Обратите внимание, что я назвал вторую таблицу "Субъекты", чтобы лучше проиллюстрировать мои выводы. Таким образом, каждая статья имеет ссылку на тип статьи (предмет). Теперь, когда вы извлекаете данные для выпадающего списка «Типы статей», вы просто извлекаете все строки во второй таблице, а затем устанавливаете выбранный элемент на основе текущего выбора (из первой таблицы).

1 голос
/ 22 февраля 2009

Звучит так, будто вы хотите поместить типы статей в таблицу или что-то в этом духе.

Затем вы можете загрузить раскрывающийся список из таблицы и просто сохранить ссылку на идентификатор типа статьи в таблице артикулов.

С другой стороны, это должно значительно ускорить получение всех статей заданного типа, поскольку вы будете выполнять поиск по идентификатору.

0 голосов
/ 22 февраля 2009
$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 несколько параметров.

...