У меня есть 2 selectboxes
<h3>Results</h3> <select id="register_form" name="sport" /> <option value="Rugby">Rugby</option> <option value="Cricket">Cricket</option> <option value="Football">Football</option> </select> <?php echo'<select name="match">'; echo'<option value="'.$row['event_id'].'">'.$row['team1'].' VS '.$row['team2'].'</option>'; echo'</select>'; ?> <input id="register_form" type="submit" value="Display" name="submit" />
Пользователь выполняет поиск результата:
выбор вида спорта в 1-м селекторе, а затем в значениях 2-х опций выбора выбирается по типу спорта.
Можно ли сделать это на PHP без необходимости сначала нажать кнопку submit, чтобы получить значение $ _POST для типа спорта?
Какой у меня лучший вариант?
1.Ajax – единственный вариант, о котором вы просили (без обновления страницы)
Когда вы используете php, это возможно только при обновлении страницы. но с ajax без обновления страницы это возможно.
помогая звеньям: –
Используйте jQuery для изменения второго списка выбора на основе первой опции списка выбора
https://www.daniweb.com/web-development/php/threads/372228/php-and-ajax-auto-populate-select-box
https://remysharp.com/2007/01/20/auto-populating-select-boxes-using-jquery-ajax
PHP всегда нужно перезагрузить страницу, чтобы обновить вашу информацию, поэтому, как сказал anant kumar singh, вам нужно использовать AJAX для этого. И, как сказал yak613, jQuery поможет вам легко использовать AJAX
Вы можете использовать этот список Multiple Select Dropdawn: http://coursesweb.net/ajax/multiple-select-dropdown-list-ajax_t , его можно использовать для нескольких наборов списков выбора.
Я столкнулся с той же проблемой в своем проекте. Но необходимая функциональность была выше – не две зависимые selectboxes и большее число. Я написал простую функцию для загрузки своих selectboxes:
//formId - form where selectbox is //name - attribute "name" of selectbox //dataSourceUrl - url to PHP-file //affectingField - string with value that filters the selecbox's data function loadSelectbox( formId, name, dataSourceUrl, affectingField ){ //console.log('Loading data to selectbox name="'+name+'":'); var selectbox = $('#'+formId+' select[name="'+name+'"]'); if(selectbox){ //console.log("Selecbox found"); if(affectingField != null){ var affectingValue = $('#'+formId+' [name="'+affectingField+'"]').val(); dataSourceUrl += '?affectingValue='+affectingValue; } var options = selectbox.find('option'); var jqxhr = $.ajax({ url: dataSourceUrl, dataType: 'text' }) .done(function(data) { //console.log(data); if(data != ""){ var optionsObject = JSON.parse(data); var i = 0; console.log(optionsObject); var options = []; $(optionsObject).each( function(){ options[i] = '<option value="'+$(this)[0]['val']+'">'+$(this)[0]['text']+'</option>'; i++; } ); selectbox.html(options); if(urlParamsSet[name] == false){ setParamFromUrl(name); } } else{ selectbox.html('<option value="">Все</option>'); } }) .fail(function() { alert("Problems with server answer"); }) selectbox.prop("disabled", false); } else{ console.log("No selectbox with such name"); }
}
Не сказать, что этот код идеален, но он работает. PHP-файл должен возвращать значения в selecbox в формате JSON (конвертировать из со структурой: массив (индекс, значение, текст)).