У меня здесь абсолютный ум. В основном, что я сделал, создается мини-менеджер статей. Каждой статье может быть присвоена одна из следующих категорий, которые определены в раскрывающемся списке выбора.
Когда я перехожу к редактированию статьи, я извлек данные из базы данных и заполнил входы и текстовую область.
Теперь я пытаюсь применить selected
атрибут к опции, соответствующей категории статьи. Следующее – это то, что я сделал, и я уверен, что вы согласитесь, это плохой подход:
<?php if($category == 'Design') { ?> <option value="Design" selected>Design</option> <option value="Development">Development</option> <option value="Other">Other</option> <?php } elseif($category == 'Development') { ?> <option value="Design">Design</option> <option value="Development" selected>Development</option> <option value="Other">Other</option> <?php } else { ?> <option value="Design">Design</option> <option value="Development">Development</option> <option value="Other" selected>Other</option> <?php } ?>
Итак, вопрос заключается в том, как я могу реализовать более динамичный метод применения selected
атрибута к <option>
зависимости от категории статьи?
Почему бы просто не определить категории в массиве и не зацикливать его:
<?php $cats = array('Design', 'Development', 'Other'); foreach($cats as $cat) { $selected = ($cat == $category) ? ' selected="selected"' : ''; echo '<option value="'.$cat.'"'.$selected.'>'.$cat.'</option>'; } ?>
Конечно, это имеет дополнительное преимущество, которое, если вам нужно добавить новую категорию, просто добавьте ее в массив.
Поместите категории в массив, затем сделайте что-то вроде:
$categories = Array("Foo", "Bar", "Baz"); $preselected_category = "Bar"; foreach ($categories as $category) { $html = htmlspecialchars($category); $selected = ""; if ($category == $preselected_category) { $selected = "selected"; } ?> <option value="<?=$html?>" <?=$selected?>> <?=html?> </option> <?php }
используйте его, как показано ниже
<option value="Design" <?=($category == 'Design')?'selected':''?> >Design</option> <option value="Development" <?=($category == 'Development')?'selected':''?>>Development</option> <option value="Other" <?=($category == 'Other')?'selected':''?>>Other</option>
Как насчет этого?
<option value="Design" <? if($category == 'Design') { echo 'selected';} ?>>Design</option> <option value="Development" <? if($category == 'Development') { echo 'selected';} ?>>Development</option> <option value="Other" <? if($category == 'Othe') { echo 'selected';} ?>>Other</option>
Вы можете использовать массив для хранения категорий и прокручивать его для генерации вашего html.
<?php $categories = array( 'Design', 'Development', 'Other', ); $category = 'Design'; foreach($categories as $cat) { $selected = ($category == $cat); $selcode = ($selected ? ' selected' : ''); $html = '<option value="'.$cat.'"'.$selcode.'>'.$cat.'</option>'; echo $html . PHP_EOL; }