Intereting Posts
Обновите содержимое mysql div с помощью ajax Заголовок PHP прикрепляет AVI-файл MongoDB GridFS хранит несколько размеров изображения или использует на лету изменение размера Как вызвать внешние веб-службы PHP с помощью WSO2 ESB PHP – filesize () возвращает пустую строку 301 перенаправление с PHP и MySQL на 404 Удаление цифр после двух десятичных знаков без округления значения Как вы запрещаете людям переходить на страницу, которая должна использоваться как страница входа? Найдите массив и верните все ключи и значения, если найдено совпадение Как отправить запрос приложения Facebook для получения данных о принятии? php curl post данные, чтобы получить форму, указанную в URL Как установить pdflib на WAMP Server Реверсивная реализация Ajax с использованием php Переупорядочить XML-результаты на основе данных XML Переслать домен с подкаталогами в другие домены с подкаталогами

HTML <Select> <Option> по умолчанию на основе данных MySQL

У меня есть простая база данных инвентаризации и в форме input_data, одно из полей ввода – это поле, как показано ниже:

<select> <option>In Inventory</option> <option>In Process</option> <option>Shipped/in-transit</option> <option>Received by recipient</option> </select> 

Если, например, я ввожу данные с помощью «В процессе», а позже я хотел бы обновить эти данные. По умолчанию возвращается значение «В инвентаре» в файле update_page.php. Я хотел бы видеть выбранное значение «In Process».

Вот фрагмент из моего нерабочего кода из моего update_page.php:

 <select name="status" value="<?php echo $row['status']; ?>"> <option>In Inventory</option> <option>In Process</option> <option>Shipped/in-transit</option> <option>Received by recipient</option> </select> 

Select не имеет атрибута значения в HTML – вы можете выбрать несколько параметров, и это определяется выбранным атрибутом элемента option

Mucky way:

 <select name="status"> <option<?php if ($row['status'] == "In Inventory"): ?> selected="selected"<?php endif; ?>>In Inventory</option> <option<?php if ($row['status'] == "In Process"): ?> selected="selected"<?php endif; ?>>In Process</option> <option<?php if ($row['status'] == "Shipped/in-transit"): ?> selected="selected"<?php endif; ?>>Shipped/in-transit</option> <option<?php if ($row['status'] == "Received by recipient"): ?> selected="selected"<?php endif; ?>>Received by recipient</option> </select> 

Чуть лучше:

  <?php $options = array("In Inventory", "In Process", "Shipped/in-transit", "Received by recipient"); ?> <select> <?php foreach ($options as $option): ?> <option value="<?php echo $option; ?>"<?php if ($row['status'] == $option): ?> selected="selected"<?php endif; ?>> <?php echo $option; ?> </option> <?php endforeach; ?> </select> 

Лучший способ – сохранить эти параметры в таблице базы данных – возможно, лучше использовать идентификационные значения, а не строки (позволяет упростить обновление меток опций) и перебирать возможные варианты из запроса БД, как у меня выше. Если этот список выбора используется много, кешируйте результаты запроса, чтобы получить параметры (помните, что вам нужно очистить кеш, если список будет обновлен)

Каждый параметр имеет соответствующее значение, а не тег select. Таким образом, вам придется сравнивать значения каждого параметра со статусом.

Вам нужно будет проверить каждый, если он выбран, например, для примера:

 <option <?php if ($row['status'] == 'In Process') echo 'selected'; ?>>In Process</option> 

Если вы используете jQuery, вы можете сделать несколько более чистое решение, в вашем случае укажите свой тег select id, а затем:

 $(document).ready(function() { $('#select-id option:contains("<?php echo $row['status']; ?>")').prop('selected', true); }); 

Более простой код, который я нашел, используя только JavaScript (без jQuery). Поместите его сразу после объявления списка и установите для него выбранный индекс:

 <script> document.getElementById('listBoxId').selectedIndex=<?php echo $INDEX ?>; </script>