Я хочу иметь поле выбора, в котором перечислены категории продуктов. Когда выбрана категория, я хочу одновременно выбрать продукты в этой категории из базы данных. Нужно ли использовать 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 .= "> {$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>