Intereting Posts
Сохраненная процедура вызывает «Команды не синхронизированы» в следующем запросе Что делает __destruct дважды вызываемым в таком простом PHP-коде? В PHP, как PDO защищает от SQL-инъекций? Как работают подготовленные заявления? Подключение к локальной базе данных с удаленного веб-сервера Symfony2 Form Collection allow_add и allow_delete null error (Silex) Парсер для регулярных выражений в PHP? Буферизация вывода PHP в командной строке Заполнение объекта из массива данных без формы / запроса Установка phpunit на windows Php, как идти с дня года до настоящего времени и наоборот php display многоуровневое меню treenode Добавление дополнительных постоянных вызовов для предварительной перезагрузки вызова в Symfony 2.1 SQLSTATE : ошибка синтаксиса или нарушение доступа – подготовленный отчет PDO «GRANT» Как сделать форму, отправьте PHP-способ с помощью Angularjs? Настройка базы данных ACL CakePHP: структура ARO / ACO?

Как я могу запустить mysql-запрос, когда пользователь выбирает новую опцию в поле выбора?

Я хочу иметь поле выбора, в котором перечислены категории продуктов. Когда выбрана категория, я хочу одновременно выбрать продукты в этой категории из базы данных. Нужно ли использовать AJAX с этим приложением? Какие-нибудь примеры об этом? Вот код, с которым я работаю:

Эти функции строят параметры каждого поля выбора.

function buildCategoryOptions($catId = 0) { $sql = "SELECT cat_id, cat_parent_id, cat_name FROM tbl_category ORDER BY cat_id"; $result = dbQuery($sql) or die('Cannot get Product. ' . mysql_error()); $categories = array(); while($row = dbFetchArray($result)) { list($id, $parentId, $name) = $row; if ($parentId == 0) { // we create a new array for each top level categories $categories[$id] = array('name' => $name, 'children' => array()); } else { // the child categories are put int the parent category's array $categories[$parentId]['children'][] = array('id' => $id, 'name' => $name); } } // build combo box options $list = ''; foreach ($categories as $key => $value) { $name = $value['name']; $children = $value['children']; $list .= "<option value=\"$key\""; if ($key == $catId) { $list.= " selected"; } $list .= ">$name</option>\r\n"; foreach ($children as $child) { $list .= "<option value=\"{$child['id']}\""; if ($child['id'] == $catId) { $list.= " selected"; } $list .= ">&nbsp;&nbsp;{$child['name']}</option>\r\n"; } } return $list; } 

/ * Создайте список опций продукта для параметров радио * /

 function buildProductOptions($catId = 0) { $sql = "SELECT pd_id, pd_name, cat_id FROM tbl_product WHERE cat_id = $catId ORDER BY pd_name"; $result = dbQuery($sql) or die('Cannot get Product. ' . mysql_error()); $numProduct = dbNumRows($result); $products = array(); while($row = dbFetchArray($result)) { list($id, $name) = $row; // we create a new array for each top level categories $products[$id] = array('name' => $name); } // build combo box options $list = ''; foreach ($products as $key => $value) { $name = $value['name']; $list .= "<option value=\"$key\""; $list .= ">$name</option>\r\n"; } return $list; 

}

Это страница полей выбора:

 $catId = (isset($_GET['catId']) && $_GET['catId'] > 0) ? $_GET['catId'] : 0; $categoryList = buildCategoryOptions($catId); $productList = buildProductOptions($catId); <!--- Category Select ---> <select name="cboCategory" id="cboCategory" class="box"> <option value="" selected>-- Choose Category --</option> <?php echo $categoryList; ?> </select> <!--- Products Select : category is changed the products need to be from selected cat - --> <select name="selectOptions" id="selectOptions" class="box" multiple="multiple" > <option>--Pick the other options--</option> <?php echo $productList; ?> </select>