как получить ввод формы, выбрать значения с той же страницы в php?

#php #javascript #jquery #html #ajax

#php #javascript #jquery #HTML #ajax

Вопрос:

у меня есть форма, которая имеет :

 <form name="myForm" action="a.php" method="post">
    <fieldset>
        <label>class</label>
        <select>
            <option>1</option>
            <option>2</option>
            <option>3</option>
        </select>

        <label>Subject</label>
        <select>
            <option>some value from database</option>
            <option>some value from database</option>
            <option>some value from database</option>
            <option>some value from database</option>
        </select>
    </fieldset>
<form>
  

дело в том,:

я хочу показать 3 варианта (1,2 и 3) из первого выпадающего списка выбора значений для пользователя. Предположим, что пользователь выбирает 1, тогда он получит соответствующие значения из базы данных в качестве выпадающих значений второго выбора. Затем он выберет одно из этих выпадающих значений. наконец, форма будет отправлена вручную. Очевидно, что в зависимости от первого выпадающего значения выбора, второе выпадающее значение выбора изменится соответствующим образом.

Итак, задача состоит в том, чтобы взять значение из первого выпадающего списка select values, чтобы использовать его во втором раскрывающемся списке select values, ПРЕЖДЕ чем ФОРМА БУДЕТ ОТПРАВЛЕНА ВРУЧНУЮ. Как я могу это сделать? Я использую php. Что еще мне нужно?

ДОБАВЛЕНО ПОЗЖЕ:

на данный момент у меня есть представление о решении опубликованной проблемы.

ТЕПЕРЬ подумайте, что,

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

все выпадающие <select></select> элементы будут располагаться рядом горизонтально на одной странице.

Ответ №1:

Для этого нужны клиентские скрипты. Вот статья о том, как реализовать эту функцию с помощью jQuery (популярного фреймворка JS)

Комментарии:

1. @biakaveron, я поместил дополнение к своему сообщению. есть ссылки на какие-либо статьи, касающиеся решения?

2. Разницы нет — у каждого «родительского» выпадающего списка должен быть свой обработчик (с помощью .change(function() {...}) вызова). Выпадающий список X изменен -> перезагрузить выпадающий список (X 1). С jQuery это становится так просто 😉

3. @biakaveron, предположим, выпадающий список 1 на странице a.php (эта страница изначально представляет собой html-файл с расширением php) имеет обработчик, который вызывает через ajax другой php (скажем 1.php)страница. тогда где должен быть обработчик для выпадающего кода (который также должен вызывать другую страницу php, например 1.php через ajax), существующую в 1.php быть записанным? если 1.php в нем есть определение html, тогда a.php не могу использовать его через ajax для получения выходных данных из него, я столкнулся с этой проблемой. И обработчик выпадающего списка в 1.php не может быть записан в a.php Я думаю. Тогда где решение?

4. Клиентский код должен быть на странице клиента (a.php в вашем примере). Скрипт на стороне сервера (1.php ) просто прочитает входные данные ($_GET или $_POST) и вернет свой ответ.

5. @biakaveron, я могу реализовать это только для двух выпадающих списков, т. е. в зависимости от выбора первого выпадающего списка появятся параметры для второго выпадающего списка. Но как я могу реализовать 3-й выпадающий список, параметры для которого будут зависеть от выбора 2-го выпадающего списка? А 4-й, 5-й? И все выпадающие списки должны отображаться на одной странице по горизонтали. Решение, пожалуйста

Ответ №2:

Вам понадобится Javascript для обработки этого, переопределите onSelectionChange событие List Control и при изменении события получите значения для второго выпадающего списка из серверного скрипта.

Комментарии:

1. предположим, я вызываю функцию javascript с помощью ‘onSelectionChange’, но как я могу использовать переменную javascript из нее в php для извлечения значений из базы данных?

2. @sof_user, Создайте оболочку на стороне сервера, которая будет возвращать значения, которые будут заполнены в поле выбора. вызовите это onSelectionChange событие (Ajax call), проанализируйте результат и заполните его во втором выпадающем списке и так далее в третьем..

3. вызов ajax вернет переменную как переменную javascript. Чтобы заполнить ее во втором выпадающем списке, как я могу использовать переменную javascript в php? php будет использоваться для извлечения значений из базы данных в качестве 2-го значения выпадающего списка.

4. я добавил новую проблему в свой пост. Есть решение?

Ответ №3:

вам нужно использовать javascript и AJAX для динамического извлечения значений для второго выпадающего списка. Например, используя jQuery, это было бы:

 $('#select1').change(function() {
   var selectedVal = $(this).val();

   //make an AJAX request to get your values depending on selectedVal
   //and update the values for the second select
}
  

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

Редактировать: тогда AJAX-запрос будет выполнен следующим образом:

 $.post("getsecondvals.php", { value: selectedVal }, function(data) {
   var result = $.parseJSON(data);
   $('#select2').html(''); //delete any old values

   for (var entry in result) {
      var option = $('<option></option>');
      option.text(entry);

      $('#select2').append(option);
   }
});
  

И ваш PHP-скрипт мог бы быть структурирован следующим образом:

 <?php
$selectedValue = $_POST['value'];
// now include everything required for your database connection
// and get the categories, use prepared statements

// finally, your resulting array should be non-associative, so
// always add new values with "[]" operator
// assuming $values is your array containing the valid options, do this:
echo json_encode($values);
?>
  

Комментарии:

1. Я получаю selectedVal как переменную javascript. Тогда как я могу использовать это в php?

2. Я добавил новую проблему в свой пост. Вы можете помочь?

Ответ №4:

Вы можете попробовать это :

 onchange = "$('select[name='xyz']').load('yourUrl/someFunctionamp;country_id='   this.value);"
  

этот атрибут onchange будет применен к первому окну выбора и присвоит имя второму окну выбора
Нравится :

Приведенный выше код будет отправлять запрос AJAX GET всякий раз, когда вы меняете опцию из первого выпадающего меню.

И извлекать значения из базы данных в вызываемой функции и возвращать HTML. Например:

   someFunction() {
     //get values from DB and loop
   String html = "<option></option>";
   return html;
}
  

Комментарии:

1. У меня нет хорошего навыка. Должен ли я написать часть onchange внутри части html <head> </head>? что означает ‘xyz’? как насчет 3-го, 4-го .. выпадающего списка? Не могли бы вы рассказать немного подробнее?

2. да, вы можете написать внутри тега head … а xyz — это просто фиктивное имя… вам нужно заменить его вашим атрибутом select name !!