Здравствуйте. Уже не знаю сколько мучаюсь, но возникла жесткая проблема, есть массив, который выводится из базы: PHP: Array ( [0] => Array ( [game_id] => 1 [game_min_slots] => 20 [game_max_slots] => 100 ) [0] => Array ( [game_id] => 2 [game_min_slots] => 6 [game_max_slots] => 32 ) ) В принципе, половина переменных убрана, т.к. они не нужны, и вот что тут есть: game_id - ид игры, и следующие два поля минимальное и максимальное кол-во слотов для данного гейм-ида. Еще чуть объяснений.. Вот поле, где выбирается сама игра: Спойлер: Скриншот выборки Вот как выглядит код, этой самой выборки: PHP: <label for="game" class="col-sm-2 control-label">Игра:</label> <div class="col-sm-3"> <select class="form-control" id="gameid" name="gameid" onChange="updateForm()"> <?php foreach($games as $item): ?> <option value="<?php echo $item['game_id'] ?>"><?php echo $item['game_name'] ?></option> <?php endforeach; ?> </select> </div> И нужно чтобы в поле "Слотов" (см. скриншот выше), выводилось нужное кол-во слотов. Например, если я в поле выбрал SAMP, то в поле "Слотов", должен появиться выбор от 20 до 100 (game_min_slots и game_max_slots), если я выберу например CS GO, то в поле "Слотов" должна быть выборка, от 6 до 32... Не знаю, доходчиво ли объяснил (скорее всего нет ), если кто меня поймет, прошу помочь, ибо уже реально 3 час сижу, и никак не могу вывести... --- Добавлено --- Если сделать например так: PHP: <select class="form-control" id="slots" name="slots" onChange="updateForm()"> <?php foreach($games as $item): ?> <?php for($i = $item['game_min_slots']; $i <= $item['game_max_slots']; $i++): ?> <option value="<?php echo $i ?>"><?php echo $i ?></option> <?php endfor; ?> <?php endforeach; ?> </select> Тогда в поле "Слотов", в саму выборку выходит Слоты от 20 до 100 (первая игра) И СРАЗУ ЗА НЕЙ ЖЕ слоты 6 и до 32 (вторая игра), но мне нужно как то узнать, что я выбрал в пункте "Игра" и ссылаясь на это, уже как то выводить нужный промежуток слотов (от game_min_slots до game_max_slots) На этом скриншоте показано, что получилось. Если у меня выбрана игра SAMP (game_id 1), то должно вывести от 20 до 100 (до зеленой черты), а если игра CS:GO (game_id 2), то должно вывести от 6 до 32 (от зеленой черты)
http://kramerblog.net/kak-zastavit-php-reagirovat-na-dejstviya-pol-zovatelya-na-stranitse/ - пример по проще, но на эту тему. Эх, надо сайт в порядок приводить, а то не занимался им, и стал жертвой недавней массовой атаки на WordPress
Не присмотреться ли вам к связанным селектам, реализуемым на уровне js, коли уж прозвучало процитированное условие? Попробуйте, всяко новые знания на пользу. Самое простое и удобное, что я нашел в свое время в контексте решения этой задачи - это jquery.chained.min.js , отличная штука: Код (Javascript): /*! Chained 1.0.0 - MIT license - Copyright 2010-2014 Mika Tuupola */ !function(a,b){"use strict";a.fn.chained=function(c){return this.each(function(){function d(){var d=!0,g=a("option:selected",e).val();a(e).html(f.html());var h="";a(c).each(function(){var c=a("option:selected",this).val();c&&(h.length>0&&(h+=b.Zepto?"\\\\":"\\"),h+=c)});var i;i=a.isArray(c)?a(c[0]).first():a(c).first();var j=a("option:selected",i).val();a("option",e).each(function(){a(this).hasClass(h)&&a(this).val()===g?(a(this).prop("selected",!0),d=!1):a(this).hasClass(h)||a(this).hasClass(j)||""===a(this).val()||a(this).remove()}),1===a("option",e).size()&&""===a(e).val()?a(e).prop("disabled",!0):a(e).prop("disabled",!1),d&&a(e).trigger("change")}var e=this,f=a(e).clone();a(c).each(function(){a(this).bind("change",function(){d()}),a("option:selected",this).length||a("option",this).first().attr("selected","selected"),d()})})},a.fn.chainedTo=a.fn.chained,a.fn.chained.defaults={}}(window.jQuery||window.Zepto,window,document); Соответственно, решение задачи, в чем-то аналогичной вашей, выглядело у меня следующим образом, довольно компактно (for example): Код (Text): <script src="jquery.min.js"></script> <script src="jquery.chained.min.js"></script> <select id="town" name="town"> <option value="">--</option> <?foreach($mailSettings->getAllCyties() as $city){?> <option value="<?=preg_replace('/[^\w\d]/iu', '_', $city)?>"><?=$city?></option> <?} ?> </select> <select id="vac" name="vac"> <option value="">--</option> <?foreach($mailSettings->getAllVacanciesByCity() as $city => $vacancies){ foreach ($vacancies as $vacancy){?> <option value="<?=htmlentities($vacancy)?>" class="<?=preg_replace('/[^\w\d]/iu', '_', $city)?>"><?=$vacancy?></option> <?} }?> </select> <script> $("#vac").chained("#town"); </script> Оф. сайт js-плагина с примерами: http://appelsiini.net/projects/chained/ .