Получить данные из выпадающего списка при обновлении формы - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь записать код обновления для php, где на странице обновления будет показывать ПРЕДЫДУЩИЕ ВХОДЯЩИЕ ДАННЫЕ ИЗ СПИСКА ВНИЗ, выбранные пользователем , и пользователь может изменить его из других доступных опций. Вот мой кусок кода

echo '<select id="locations" name="locations">'--------------**to show the previously entered data**
option value="USA">USA</option>-----------------**other available data to be selected**
<option value="India">India</option>
<option value="Dubai">Dubai</option>
</select>

Может кто-нибудь сказать, где я иду не так?

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Я рискну предположить, что то, что вы надеетесь выполнить sh, похоже на следующее.

Меню SELECT обычно создается с использованием содержимого из базы данных, но оно может быть другим источником, возможно даже stati c, если вариантов мало. Учитывая, что есть комментарий other available data to be selected Я предположил, что есть другие местоположения и решил показать, используя массив.

Каждый раз, когда изменяется меню SELECT, прослушиватель событий javascript будет перезагружать страницу, но установит строку запроса (и, таким образом, сделает доступной переменную GET) для выбранного местоположения. Меню SELECT создается путем циклического перебора массива / набора доступных местоположений, и для каждого элемента выполняется сравнение с переменной GET (назначенной переменной $selection.) Если переменная $selection соответствует элементу в массиве / набор записей, который считается selected

Аналогичный подход может быть принят для реагирования на отправляемую форму - или вы можете использовать $_REQUEST, чтобы охватить как GET, так и POST

<?php
    $arr=array(
        'USA','England','Scotland','France','Italy','India','Dubai','Japan'
    );

    $selection=!empty( $_GET['locations'] ) ? filter_input( INPUT_GET,'locations',FILTER_SANITIZE_STRING) : false;
?>
<!DOCTYPE html>
<html lang='en'>
    <head>
        <meta charset='utf-8' />
        <title>Maintain previously selected value in SELECT menu</title>
    </head>
    <body>
        <select name='locations'>
             <option selected hidden disabled>Please select<?php
                foreach( $arr as $location ){
                    $selected=$selection && trim( $selection )==trim( $location ) ? ' selected' : '';
                    printf('
            <option value="%1$s"%2$s>%1$s', $location, $selected );
                }
            ?>
        </select>
        <script>
            document.querySelector('select[name="locations"]').addEventListener('change',function(e){
                location.search='locations='+this.value
            })
        </script>
    </body>
</html>
0 голосов
/ 10 марта 2020

Предполагая, что это таблица пользователей и стран, и пользователь может выбрать свою страну из выпадающего списка, а затем сделать это следующим образом: -

<select id="locations" name="locations">
  <?php foreach ($countries as $country): ?>
   <option value="<?= $country->code ?>" <?= ($country->code == $user->country) ? 'selected': '' ?>><?= $country->name ?></option>
  <?php endforeach; ?>
</select>

вы можете задать дополнительные вопросы.

...